MCP Subfinder Server

MCP Subfinder Server

模型上下文协议 (MCP) 服务器,它封装了 ProjectDiscovery 的 subfinder 工具,通过 JSON-RPC API 实现强大的子域名枚举。

copyleftdev

研究与数据
访问服务器

README

MCP Subfinder 服务器

<p align="center"> <img src="assets/logo.png" alt="MCP Subfinder Logo" width="400"> </p>

License Go Version MCP Version ProjectDiscovery

一个模型上下文协议 (MCP) 服务器,它封装了 ProjectDiscovery 的 subfinder 工具,通过 JSON-RPC API 实现强大的子域名枚举。

架构

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 的 subfinder 完成。 这个项目只是他们优秀工具的 MCP 服务器封装器。

概述

MCP Subfinder 服务器提供:

  • 用于枚举给定域名的子域名的 JSON-RPC API
  • 支持递归子域名发现
  • 源过滤功能
  • 可配置的超时和线程
  • 用于故障排除的详细日志记录

安装

# 克隆仓库
git clone https://github.com/copyleftdev/mcp-subfinder-server.git
cd mcp-subfinder-server

# 使用 Makefile 构建服务器
make build

用法

可以使用 Makefile 运行服务器,它提供了几个有用的命令:

# 在默认端口 (8080) 上运行服务器
make run

# 在自定义端口上运行服务器
PORT=9090 make run

# 指定不同的提供程序配置文件
PROVIDER_CONFIG=my-custom-config.yaml make run

可用的 Makefile 命令

# 显示所有可用命令
make help

# 运行测试
make test

# 运行集成测试
make integration-test

# 运行实时 subfinder 测试
make live-test

# 生成测试覆盖率报告
make coverage

# 格式化代码
make fmt

# 为 Linux 构建
make build-linux

# 清理项目
make clean

配置

为了获得最佳结果,请将您的 API 密钥添加到 provider-config.yaml 文件中。 这允许 subfinder 使用高级源以获得更好的子域名发现。

使用 make run 运行服务器时,会自动检查 provider-config.yaml 文件。

API 用法

服务器在 http://localhost:8080/mcp 公开一个 JSON-RPC API。

使用 curl 的基本用法示例

1. 初始化连接

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "0.3"
    }
  }'

2. 列出可用工具

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools.list"
  }'

3. 基本子域名枚举

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools.call",
    "params": {
      "name": "enumerateSubdomains",
      "arguments": {
        "domain": "example.com"
      }
    }
  }'

4. 高级子域名枚举

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 4,
    "method": "tools.call",
    "params": {
      "name": "enumerateSubdomains",
      "arguments": {
        "domain": "example.com",
        "timeout": 120,
        "recursive": true,
        "maxDepth": 2,
        "sourcesFilter": "github,dnsdumpster,alienvault"
      }
    }
  }'

5. 使用源排除进行枚举

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 5,
    "method": "tools.call",
    "params": {
      "name": "enumerateSubdomains",
      "arguments": {
        "domain": "example.com",
        "timeout": 60,
        "excludeSourcesFilter": "waybackarchive,threatcrowd"
      }
    }
  }'

6. 健康检查

curl -X GET http://localhost:8080/health

可用选项

调用 enumerateSubdomains 工具时,可以使用以下选项:

选项 类型 描述 默认值
domain string 要枚举子域名的域名(必需) -
timeout int 枚举过程的超时时间(秒) 120
recursive bool 是否递归检查发现的子域名 false
maxDepth int 递归枚举的最大深度 2
sourcesFilter string 要使用的源的逗号分隔列表 -
excludeSourcesFilter string 要排除的源的逗号分隔列表 -

Docker 支持

该项目通过 Makefile 包含 Docker 支持:

# 构建 Docker 镜像
make docker

# 在 Docker 中运行服务器
make docker-run

# 使用自定义端口运行
PORT=9090 make docker-run

测试

使用 Makefile 运行测试:

# 运行所有测试
make test

# 运行测试覆盖率
make coverage

docs 文件夹中包含一个 Postman 集合,用于轻松测试所有 API 端点。

许可证

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

作者

copyleftdev

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python