一个模型上下文协议(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 镜像
make docker
# 运行容器
make docker-run
MCP Subfinder 服务器具备以下强大功能:
启动服务器后,可通过以下接口与服务器进行交互:
{
"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
所有繁重的子域枚举工作由 ProjectDiscovery 完成。
本项目遵循 MIT 许可证。