README
🚀 MCP 子域发现服务器
一个模型上下文协议(MCP)服务器,封装了 ProjectDiscovery 的 subfinder 工具,借助 JSON-RPC API 提供强大的子域枚举功能,能高效发现目标域名的子域。
🚀 快速开始
本项目提供了通过二进制文件和 Docker 两种安装方式,你可以根据自己的需求进行选择。
通过二进制文件安装
# 下载并编译项目
git clone https://github.com/copyleftdev/mcp-subfinder.git
cd mcp-subfinder
go build -o mcp-subfinder .
# 启动服务器
./mcp-subfinder --port=8080
通过 Docker 安装
# 构建 Docker 镜像
make docker
# 运行容器
make docker-run
✨ 主要特性
MCP Subfinder 服务器具备以下强大功能:
- 子域枚举:借助多种数据源,全面发现目标域名的所有子域。
- 递归扫描:支持可选的递归模式,可深度遍历子域。
- 过滤配置:允许指定使用或排除的数据源,灵活定制扫描范围。
- 超时控制:可设置任务超时时间,保障扫描效率。
📚 详细文档
使用说明
启动服务器后,可通过以下接口与服务器进行交互:
JSON-RPC 接口
示例请求
{
"jsonrpc": "2.0",
"method": "enumerateSubdomains",
"params": {
"domain": "example.com",
"timeout": 120,
"recursive": true,
"maxDepth": 2,
"sourcesFilter": ["github", "dnsdumpster"],
"excludeSourcesFilter": ["waybackarchive"]
},
"id": 1
}
参数说明
| 参数 | 类型 | 描述 | 默认值 | |------|------|------|-------| | domain | string | 需要枚举的域名(必填) | - | | timeout | int | 枚举任务超时时间,单位秒 | 120 | | recursive | bool | 是否递归检查发现的子域 | false | | maxDepth | int | 递归的最大深度 | 2 | | sourcesFilter | array | 指定使用的数据源列表 | - | | excludeSourcesFilter | array | 需要排除的数据源列表 | - |
健康检查接口
curl http://localhost:8080/health
架构
flowchart LR
Client([客户端]) -->|JSON-RPC| MCP[MCP 服务器]
MCP -->|初始化/工具列表| Client
MCP -->|处理请求| SF[Subfinder 包装器]
SF -->|配置| CFG[provider-config.yaml]
SF -->|调用| PD[ProjectDiscovery Subfinder]
PD -->|被动数据源| API1[公共及私人API]
PD -->|结果| SF
SF -->|处理后结果| MCP
MCP -->|JSON 响应| Client
项目结构
- mcp-subfinder.go:主服务文件,包含服务器启动和请求处理逻辑。
- subdomain_enumerator.go:子域枚举核心逻辑,整合了 ProjectDiscovery 的 subfinder 工具。
- config.go:配置管理模块,支持自定义端口、数据源过滤等设置。
- Dockerfile:用于构建 Docker 镜像的文件。
- Makefile:项目构建和运行脚本,简化命令行操作。
🔧 技术细节
所有繁重的子域枚举工作由 ProjectDiscovery 完成。
📄 许可证
本项目遵循 MIT 许可证。
Scan to join WeChat group