SurveyHub-MCP
SurveyHub-MCP is a unified MCP server that aggregates five major cyberspace asset mapping platforms — FOFA, 360 Quake, Hunter, ZoomEye, and DayDayMap — into a single interface for asset search, aggregation, and account management.
FOFA
fofa_search/fofa_search_next– Asset search with standard and continuous paginationfofa_search_stats– Statistical aggregation by protocol, port, country, etc. (throttled)fofa_host– Host aggregation data for a specific IP/hostnamefofa_user_info– Account status, quota, and membership info
360 Quake
quake_service_search– Real-time service search (up to 500 results)quake_service_scroll– Deep-pagination search for large datasetsquake_service_aggregation– Aggregation queries on up to 2 fieldsquake_filterable_fields/quake_aggregation_fields– List available filter/aggregation fieldsquake_user_info– User details, quota, and role
Hunter (Personal & Enterprise)
Asset search with filtering by date, status code, and web type
Batch task creation (via query or CSV), status monitoring, CSV download, and (enterprise) JSON result pulling
User info and quota for both editions; enterprise adds whois, body, and vulnerability fields
ZoomEye
zoomeye_search– Paid-account asset search with facets and sub-type filtering (v4/v6/web)zoomeye_user_info– Subscription and points information
DayDayMap
daydaymap_search– Asset search with rich query syntax covering IP, domain, geo, ICP, ASN, protocol, device, certificate, vulnerability, and organization fields
Additional Features
Prompts:
surveyhub_search_plan(generate multi-platform search plans) andsurveyhub_query_help(check and optimize queries)Resource references: Query syntax and API documentation for all platforms via
surveyhub://reference/URIsRate limiting & circuit breaking: Per-platform throttling and a circuit breaker (pauses 15s after 2 consecutive failures)
Error handling: Local parameter validation and structured error reporting for auth, rate limit, and timeout issues
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SurveyHub-MCPshow my FOFA account info"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
支持平台
平台 | 能力 |
FOFA | 资产搜索、连续翻页、统计聚合、Host 聚合、账号信息 |
360 Quake | 服务搜索、深度翻页、服务聚合、筛选字段、聚合字段、账号信息 |
Hunter | 资产搜索、批量任务、任务状态、结果下载、结果拉取、账号信息 |
ZoomEye | 资产搜索、账号信息 |
DayDayMap | 资产搜索 |
Related MCP server: FOFA Quake Hunter MCP Server
快速开始
通过 pip 安装
要求 Python >=3.10,MCP Python SDK >=2.0.0,<3。用户无需 clone 源码,可直接从 PyPI 安装:
python -m pip install -U surveyhub-mcp安装后可直接启动聚合 MCP Server:
surveyhub-mcp服务同时兼容 MCP 2026-07-28 和 2025-11-25;SDK 会根据客户端自动选择
server/discover 或传统 initialize 流程。
MCP 客户端配置:
{
"mcpServers": {
"surveyhub": {
"command": "surveyhub-mcp",
"args": [],
"env": {
"CN_FOFA_KEY": "your_fofa_key",
"CN_FOFA_EMAIL": "optional_fofa_email",
"CN_QUAKE_KEY": "your_quake_key",
"CN_ZOOMEYE_API_KEY": "your_zoomeye_api_key",
"CN_HUNTER_ENTERPRISE_KEY": "your_hunter_enterprise_key",
"CN_DAYDAYMAP_API_KEY": "your_daydaymap_api_key"
}
}
}
}只运行单个平台入口时:
fofa-mcp
quake-mcp
zoomeye-mcp
hunter-personal-mcp # 个人版
hunter-enterprise-mcp # 企业版
daydaymap-mcp通过 uvx 免安装运行
如果不想提前安装,也可以在 MCP 客户端中使用 uvx 直接运行 PyPI 包:
{
"mcpServers": {
"surveyhub": {
"command": "uvx",
"args": [
"surveyhub-mcp"
],
"env": {
"CN_FOFA_KEY": "your_fofa_key",
"CN_FOFA_EMAIL": "optional_fofa_email",
"CN_QUAKE_KEY": "your_quake_key",
"CN_ZOOMEYE_API_KEY": "your_zoomeye_api_key",
"CN_HUNTER_ENTERPRISE_KEY": "your_hunter_enterprise_key",
"CN_DAYDAYMAP_API_KEY": "your_daydaymap_api_key"
}
}
}
}只运行单个平台入口时:
uvx --from surveyhub-mcp fofa-mcp
uvx --from surveyhub-mcp quake-mcp
uvx --from surveyhub-mcp zoomeye-mcp
uvx --from surveyhub-mcp hunter-personal-mcp
uvx --from surveyhub-mcp hunter-enterprise-mcp
uvx --from surveyhub-mcp daydaymap-mcp从源码运行
git clone https://github.com/helGayhub233/SurveyHub-MCP.git
cd SurveyHub-MCP
uv sync
uv run surveyhub-mcp也可以只启动单个平台:
uv run fofa-mcp
uv run quake-mcp
uv run zoomeye-mcp
uv run hunter-personal-mcp
uv run hunter-enterprise-mcp
uv run daydaymap-mcpMCP 配置
从源码运行时,推荐使用 uv --directory 固定项目目录。使用 PyPI 包时可直接参考上方 pip 或 uvx 配置。
{
"mcpServers": {
"surveyhub": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/SurveyHub-MCP",
"run",
"surveyhub-mcp"
],
"env": {
"CN_FOFA_KEY": "your_fofa_key",
"CN_FOFA_EMAIL": "optional_fofa_email",
"CN_QUAKE_KEY": "your_quake_key",
"CN_ZOOMEYE_API_KEY": "your_zoomeye_api_key",
"CN_HUNTER_ENTERPRISE_KEY": "your_hunter_enterprise_key",
"CN_DAYDAYMAP_API_KEY": "your_daydaymap_api_key"
}
}
}
}只使用某一个平台时,把 args 最后一个命令替换为对应入口,并只保留对应平台的 Key。
平台 | 单平台入口 | 必要环境变量 |
FOFA |
|
|
Quake |
|
|
ZoomEye |
|
|
Hunter 个人版 |
|
|
Hunter 企业版 |
|
|
DayDayMap |
|
|
mcp.json.example 和 .env.example 提供了可直接修改的示例。
Hunter 版本路由
聚合入口会按 MCP 子进程实际收到的凭据选择 Hunter 工具族:只配置
CN_HUNTER_ENTERPRISE_KEY 时仅暴露 hunter_enterprise_*,只配置
CN_HUNTER_PERSONAL_KEY 时仅暴露 hunter_personal_*。共享的 CN_HUNTER_KEY
无法表明账户版本,因此会保留两组工具供调用者明确选择;未配置
Hunter Key 时也会保留两组 schema,用于暴露配置要求。
一般只应选择下列一种配置,不要把占位值同时填入三个变量:
账户类型 | 建议配置 | 实际暴露的工具 |
Hunter 企业版 |
|
|
Hunter 个人版 |
|
|
旧版共享配置 |
| 两组 Hunter 工具 |
同时设置共享 CN_HUNTER_KEY 和任一版本专用 Key,也可能使两组工具同时
出现,因此新配置应优先使用版本专用变量。
如果已配置企业版仍提示未配置,请检查 Key 是否放在 MCP 客户端的
mcpServers.<name>.env 中,而不是只存在于另一个终端。环境变量修改后必须重启
MCP 子进程。企业版也可直接使用 hunter-enterprise-mcp,该入口只暴露
6 个企业版工具,能进一步避免 Agent 误选个人版。如果仍调用到错误版本,
返回的 error.type=wrong_hunter_edition 和 error.details.recommended_tool 会指明已配置版本及
应改用的工具;不应将该错误概括为“Hunter 未配置”。
环境变量
环境变量使用 CN_ 前缀命名规范。
环境变量 | 说明 |
| FOFA API Key |
| FOFA Email |
| 360 Quake API Key |
| ZoomEye API Key |
| Hunter 通用 fallback API Key |
| Hunter 个人版 API Key |
| Hunter 企业版 API Key |
| DayDayMap API Key |
API Key 获取入口:
FOFA:
https://fofa.infoQuake:
https://quake.360.netZoomEye:
https://www.zoomeye.orgHunter:
https://hunter.qianxin.comDayDayMap:
https://www.daydaymap.com
工具列表
下表是项目的完整能力集,不代表每个运行实例都会暴露全部工具。Hunter 工具会按 上述凭据版本动态选择,单平台入口则只暴露对应平台的工具。
工具名称 | 所属平台 | 说明 |
| FOFA | 常规资产搜索 |
| FOFA | 连续翻页搜索 |
| FOFA | 统计聚合 |
| FOFA | Host 聚合 |
| FOFA | 账号信息 |
| Quake | 用户信息 |
| Quake | 服务数据可筛选字段 |
| Quake | 实时服务搜索 |
| Quake | 深度翻页搜索 |
| Quake | 兼容别名,等同于 |
| Quake | 聚合字段列表 |
| Quake | 服务聚合查询 |
| ZoomEye | 用户信息、订阅信息和积分情况 |
| ZoomEye | 付费账号 v2 资产搜索 |
| Hunter 个人版 | 资产搜索 |
| Hunter 个人版 | 创建批量任务 |
| Hunter 个人版 | 查询批量任务状态 |
| Hunter 个人版 | 下载批量任务结果 |
| Hunter 个人版 | 账号信息 |
| Hunter 企业版 | 资产搜索 |
| Hunter 企业版 | 创建批量任务 |
| Hunter 企业版 | 查询批量任务状态 |
| Hunter 企业版 | 下载批量任务结果 |
| Hunter 企业版 | 拉取批量任务结果 JSON |
| Hunter 企业版 | 账号信息 |
| DayDayMap | 资产搜索 |
工具返回结构化结果:成功时包含 ok=true、platform 和 data 或 text;失败时包含 ok=false、platform 和 error。meta.execution 还会返回 request_id、脱敏请求指纹、传输状态、重试安全性、配额风险与数据完整性,便于 AI 区分“确认空结果”与“执行结果未知”。
计费型资产搜索默认使用 retry_mode=safe_only:仅在请求确认未发送的连接或连接池失败时自动重试;写入或读取超时会返回 final_state=indeterminate,不会自动重发。相同指纹的请求在未知状态后 60 秒内会被请求账本抑制;只有明确接受重复扣费风险时才应设置 force_retry=true。
资源提示
服务会暴露查询语法和 API 文档资源,URI 前缀为 surveyhub://reference/,例如:
surveyhub://reference/fofa-syntaxsurveyhub://reference/quake-syntaxsurveyhub://reference/hunter-syntaxsurveyhub://reference/zoomeye-syntaxsurveyhub://reference/daydaymap-api
聚合入口额外提供两个 Prompt:
surveyhub_search_plan:根据目标和平台生成资产搜索计划surveyhub_query_help:检查并优化指定平台查询语句
请求限制
项目会对可在本地判断的参数做校验或节流。账号等级、积分额度、CSV 文件内容等仍以平台返回为准。
平台 | 工具 | 控制方式 |
FOFA |
| 进程内节流, |
FOFA |
| 进程内节流, |
FOFA |
| 本地校验,返回 |
FOFA |
| 本地校验,返回 |
FOFA |
| 不使用未文档化响应字段控制重试; |
Quake | 全部工具 | 进程内节流, |
Quake |
| 参数 schema 限制, |
Quake |
| 根据官方可筛选字段清单移除非法 |
Quake | 搜索与聚合工具 | 默认 |
Quake |
| 本地校验聚合字段最多 2 个,参数 schema 限制 |
ZoomEye |
| 仅调用付费账号 |
Hunter 个人版 | 全部搜索工具 | 基于 API Key 的 SQLite 跨进程共享节流, |
Hunter 个人版 | 搜索和批量查询语句 | 默认将 |
Hunter 个人版 | 批量任务 | 工具描述提示平台限制: |
Hunter 企业版 | 全部搜索工具 | 基于 API Key 的 SQLite 跨进程共享节流, |
Hunter 企业版 | 搜索和批量查询语句 | 默认将 |
Hunter 企业版 | 批量任务 | 工具描述提示平台限制: |
DayDayMap |
| 本地拒绝空白查询;限制 |
全部平台 | 全部 HTTP 请求 | 进程内熔断保护,连续 3 次可恢复失败后暂停 15 秒 |
搜索响应的顶层 meta 包含 MCP 实际执行信息,例如 original_query、executed_query、attempts 和 partial_data;顶层 warnings 保留不会使请求失败、但可能影响完整性的供应商或参数提示。
FOFA 和 Quake 的频率控制、以及全部平台的熔断状态保存在单 MCP 进程内;Hunter 频率控制会按 API Key 通过本地 SQLite 在多个 MCP 进程之间共享。
API 文档
已整理的接口文档位于 docs/api/:
docs/api/fofa_api.mddocs/api/quake_api.mddocs/api/zoomeye_api.mddocs/api/hunter_personal_api.mddocs/api/hunter_enterprise_api.mddocs/api/daydaymap_api.md
版本发布和迭代记录见 CHANGELOG.md。
项目结构
src/
surveyhub_mcp/
server.py # 聚合 MCP 入口
fofa.py # FOFA 工具
quake.py # Quake 工具
zoomeye.py # ZoomEye 工具
hunter_personal.py # Hunter 个人版工具
hunter_enterprise.py # Hunter 企业版工具
daydaymap.py # DayDayMap 工具
reference.py # MCP resources 和 prompts
common.py # 共享编码、HTTP、错误处理和节流工具手动编译
uv sync
uv run python -m compileall src/surveyhub_mcp
uv build --wheel注意事项
本项目仅供学习和技术研究使用,严禁用于任何商业或非法用途。
请只在合法授权范围内使用本项目,并遵守各平台的 API 服务条款和额度限制。
许可证
MIT License,见 LICENSE。
Maintenance
Related MCP Servers
- MIT
- AlicenseAqualityCmaintenanceAn MCP server that enables AI models to query FOFA, 360 Quake, and Hunter cyberspace mapping platforms for asset discovery and security research. It supports natural language parameter configuration and provides comprehensive search tools for retrieving IP, port, and domain data.36MIT
- Flicense-qualityBmaintenanceMCP server for querying the FOFA API, enabling network asset search and account information retrieval.8
- Flicense-qualityBmaintenanceUnified vulnerability search MCP server for penetration testing agents, integrating 5 data sources (NVD, OSV, EPSS, CISA KEV, Exploit-DB+GitHub) and 10 MCP tools for CVE query, keyword search, batch query, EPSS scoring, KEV checking, exploit search, and comprehensive assessment with Chinese output.2
Related MCP Connectors
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Shodan InternetDB MCP — wraps Shodan InternetDB (internetdb.shodan.io)
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/helGayhub233/SurveyHub-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server