nan786521/recon-mcp
GitHub: nan786521/recon-mcp
为 AI 编程智能体提供结构化、带评级的安全侦察工具(DNS、TLS、HTTP 标头、端口扫描等)的 MCP 服务器。
Stars: 1 | Forks: 0
# recon-mcp
**简体中文** | [繁體中文](./README.zh-TW.md)
[](https://github.com/nan786521/recon-mcp/actions/workflows/ci.yml)
[](https://pypi.org/project/recon-kit-mcp/)
[](https://www.python.org/)
[](./LICENSE)
一个为 AI 编程智能体提供安全、结构化的网络与安全**侦察**工具的 [MCP](https://modelcontextprotocol.io) 服务器 —— 适用于 **Claude Code、Codex、Cline 以及任何 MCP 客户端**。
大多数 MCP 服务器只是封装了 CRUD API。而 `recon-mcp` 提供的是工程师在调查资产时会使用的只读侦察功能,并返回整洁的 JSON —— 包含评级结论 —— 从而让智能体能够直接对结果进行推理,而无需费力解析控制台输出。
## 工具
| 工具 | 功能 |
|------|--------------|
| `recon_report` | **从这里开始。** 一次调用即可同时检查 DNS、TLS 和 HTTP 标头,并给出总体评级 |
| `dns_recon` | DNS + WHOIS + 邮件安全(SPF/DMARC/DKIM),包含评级 |
| `subdomain_enum` | 通过 DNS 发现子域名(≤512 个候选/次调用),支持内置或自定义字典 |
| `tls_check` | 证书、协议、加密套件及已知 TLS 漏洞,包含评级 |
| `http_headers_audit` | HTTP 安全标头(CSP、HSTS、X-Frame-Options 等),包含评级 |
| `port_scan` | 单个主机的 TCP 端口扫描(≤1024 个端口/次调用),返回开放端口及服务 |
## 示例
只需向你的智能体提问:*“对 example.com 运行安全侦察报告。”* 它将调用一次 `recon_report` 并获取可直接采取行动的评级概览:
```
{
"domain": "example.com",
"overall_grade": "F",
"summary": "Overall posture F: email A, TLS B, headers F; 13 actionable issue(s).",
"components": {
"email": { "grade": "A", "issues": [] },
"tls": { "grade": "B", "issues": [] },
"headers": { "grade": "F", "issues": [
{ "severity": "high", "label": "Missing Content-Security-Policy", "detail": "CSP not set; cannot restrict resource load sources" }
] }
}
}
```
需要某个特定领域的更多细节?智能体可以直接调用 `dns_recon`、`tls_check`、`http_headers_audit` 或 `port_scan`。
## 安装
要求 Python ≥ 3.10。支持在 Linux、macOS 和 Windows 上运行(已在 CI 中测试)。
**推荐方式 —— 无需克隆,通过 [uv](https://docs.astral.sh/uv/) 运行:**
```
uvx recon-kit-mcp
```
**或者从源码安装(用于开发):**
```
git clone https://github.com/nan786521/recon-mcp
cd recon-mcp
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install -e .
```
## 配合 Claude Code 使用
添加此服务器(stdio 传输)。使用 `uvx` 时你无需指定绝对路径:
```
claude mcp add recon -- uvx recon-kit-mcp
```
或者手动将其添加到任何 MCP 客户端的配置中:
```
{
"mcpServers": {
"recon": {
"command": "uvx",
"args": ["recon-kit-mcp"]
}
}
}
```
(如果是从源码检出运行,请将命令指向 `/absolute/path/to/.venv/bin/recon-kit-mcp`。)
然后只需提问:*“对 example.com 运行安全侦察报告”* —— 或者针对特定领域,例如 *“检查 example.com 的邮件安全配置。”*
该服务器还提供了一个 **`security_recon`** 提示词:从你客户端的提示词菜单中选择它,并传入一个域名即可进行带有严重性排序的向导式审计。
## 工具参考
### `recon_report(domain, timeout?) -> dict`
同时运行 DNS/邮件、TLS 和 HTTP 标头检查,返回 `overall_grade`(与最薄弱组件的级别一致)、单行的 `summary`,以及 `components`(包含 `email` / `tls` / `headers`),每个组件都包含相应的 `grade` 和可操作的 `issues`。
为提高速度,它使用快速单次握手 TLS 检查 —— 如需完整的加密套件/漏洞分析,请调用 `tls_check`。这是最佳的切入点;如需获取原始细节,请使用下方的具体工具。
### `dns_recon(domain, checks?, timeout?) -> dict`
- **records** — A、AAAA、MX、NS、TXT、SOA、CNAME、CAA 记录
- **whois** — 解析后的注册字段 + 原始 WHOIS 文本
- **email** — SPF、DMARC 和 DKIM 状态,以及带有评级的 `assessment`
(字母评级 A–F,以及总结和按严重性分类、附带修复建议的单项检查结果)
`checks` 可以是 `["records", "whois", "email"]` 中的任意子集;省略此项则运行全部检查。
### `subdomain_enum(domain, wordlist?, timeout?) -> dict`
通过 DNS 解析候选子域名,并返回实际存在的子域名。`wordlist` 是逗号分隔的标签(`"www,api,dev"`);省略此项则使用内置的常见列表。每次调用最多限制 512 个候选。返回 `checked`、`found_count` 和 `found`(包含 `subdomain` 及其对应的 `ips`)。
### `tls_check(host, port=443, timeout?) -> dict`
返回 `grade`、`certificate`(有效性 / 过期时间 / 密钥算法)、`protocols`(标记旧版 SSLv3 / TLS 1.0 / 1.1)、加密套件信息、`forward_secrecy`、`hsts`、`vulnerabilities`(每项带有 `vulnerable` 标记)以及 `findings` 列表。
### `http_headers_audit(host, port?, use_ssl=True, timeout?) -> dict`
返回 `grade`、`score`、观察到的安全标头以及 `findings` 列表(为每个标头提供建议)。默认为 HTTPS(端口 443)。
### `port_scan(host, ports?, timeout?) -> dict`
针对**单个**主机的 TCP 连接扫描。`ports` 是一个字符串 —— 可以是 `"22,80,443"`、范围 `"1-1024"` 或混合形式 —— 省略此项则扫描内置的常见端口集。每次调用硬性限制最多 1024 个端口(用于单主机侦察,而非大规模扫描)。返回 `host`、`ip`、`scanned`、`open_count` 以及 `open_ports`(包含端口和服务)。请仅对你获得授权评估的主机进行扫描。
## 许可证
[MIT](./LICENSE)
标签:GitHub, MCP服务器, Python, 云存储安全, 人工智能, 安全侦察, 无后门, 用户模式Hook绕过, 网络扫描, 逆向工具