MCP server giving AI coding agents (Claude Code, Codex, Cline) safe, structured network & security recon tools — DNS, WHOIS, TLS, and HTTP security headers, each with a graded verdict. Authorized testing & education only.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
claude mcp add recon-mcp -- uvx recon-kit-mcp{
"mcpServers": {
"recon-mcp": {
"command": "uvx",
"args": ["recon-kit-mcp"]
}
}
}MCP Servers overview
# recon-mcp
**English** | [繁體中文](./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)
An [MCP](https://modelcontextprotocol.io) server that gives AI coding agents —
**Claude Code, Codex, Cline, and any MCP client** — safe, structured network and
security **reconnaissance** tools.
Most MCP servers wrap CRUD APIs. `recon-mcp` instead exposes the kind of
read-only recon an engineer reaches for when investigating an asset, and returns
clean JSON — with a graded verdict — so the agent can reason over results
instead of parsing console output.
> ⚠️ **Authorized use only.** These tools are for security testing of assets you
> own or have explicit written permission to assess, for CTF practice, and for
> education. Do not point them at third-party infrastructure without
> authorization. You are responsible for how you use this software.
## Tools
| Tool | What it does |
|------|--------------|
| `recon_report` | **Start here.** One call → DNS, TLS, and HTTP headers checked together, with an overall grade |
| `dns_recon` | DNS + WHOIS + email security (SPF/DMARC/DKIM), graded |
| `subdomain_enum` | Discover subdomains via DNS brute-force and/or Certificate Transparency logs |
| `tls_check` | Certificate, protocols, ciphers, and known TLS vulnerabilities, graded |
| `http_headers_audit` | HTTP security headers (CSP, HSTS, X-Frame-Options, …), graded |
| `cookie_audit` | Redirect chain + cookie flags (Secure / HttpOnly / SameSite), graded |
| `cors_check` | CORS policy probe — flags arbitrary-Origin reflection and wildcard misuse |
| `well_known_audit` | Fetches & parses `security.txt` (RFC 9116) and `robots.txt` |
| `ip_info` | Resolves the host and enriches its IP via RDAP (owner, country, CIDR, abuse) |
| `port_scan` | TCP port scan of one host (≤1024 ports/call), open ports + services |
## Example
Just ask your agent: *"run a security recon report on example.com."* It calls
`recon_report` once and gets a graded overview it can act on:
```json
{
"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" }
] }
}
}
```
Need more detail on one area? The agent can call `dns_recon`, `subdomain_enum`,
`tls_check`, `http_headers_audit`, `cookie_audit`, `cors_check`,
`well_known_audit`, `ip_info`, or `port_scan` directly.
## Install
Requires Python ≥ 3.10. Runs on Linux, macOS, and Windows (tested in CI).
**Recommended — no clone, via [uv](https://docs.astral.sh/uv/):**
```bash
uvx recon-kit-mcp
```
**Or from source (for development):**
```bash
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 .
```
## Use with Claude Code
Add the server (stdio transport). With `uvx` you don't need an absolute path:
```bash
claude mcp add recon -- uvx recon-kit-mcp
```
Or add it manually to any MCP client config:
```json
{
"mcpServers": {
"recon": {
"command": "uvx",
"args": ["recon-kit-mcp"]
}
}
}
```
(From a source checkout, point the command at `/absolute/path/to/.venv/bin/recon-kit-mcp` instead.)
Then just ask: *"run a security recon report on example.com"* — or target one
area, e.g. *"check the email security of example.com."*
The server also ships a **`security_recon` prompt**: pick it from your client's
prompt menu and pass a domain for a guided, severity-sorted audit.
## Tool reference
### `recon_report(domain, timeout?) -> dict`
Runs DNS/email, TLS, and HTTP-header checks together and returns `overall_grade`
(as weak as the weakest component), a one-line `summary`, and `components`
(`email` / `tls` / `headers`), each with its `grade` and actionable `issues`.
Uses a fast single-handshake TLS check for speed — call `tls_check` for the full
cipher/vulnerability analysis. The best starting point; use the tools below for
raw detail.
### `dns_recon(domain, checks?, timeout?) -> dict`
- **records** — A, AAAA, MX, NS, TXT, SOA, CNAME, CAA records
- **whois** — parsed registration fields + raw WHOIS text
- **email** — SPF, DMARC, and DKIM posture, plus a graded `assessment`
(letter grade A–F, a summary, and per-check findings with severity and a
recommended fix)
`checks` is any subset of `["records", "whois", "email"]`; omit it to run all.
### `subdomain_enum(domain, wordlist?, source="dns", timeout?) -> dict`
Discovers subdomains from two complementary sources:
- `source="dns"` (default) — resolves candidate labels via DNS. `wordlist` is
comma-separated labels (`"www,api,dev"`); omit it for a built-in common list.
Capped at 512 candidates per call. Returns resolved `ips`.
- `source="ct"` — queries public **Certificate Transparency** logs (crt.sh) for
every name ever certified for the domain. Fully passive; finds real hosts no
wordlist would guess.
- `source="both"` — runs both and merges, recording which source(s) saw each host.
Returns `sources`, `found_count`, and `found` (each with `subdomain`, the
`sources` that saw it, and `ips` when resolved).
### `tls_check(host, port=443, timeout?) -> dict`
Returns `grade`, `certificate` (validity / expiry / key algorithm),
`protocols` (flags legacy SSLv3 / TLS 1.0 / 1.1), cipher info,
`forward_secrecy`, `hsts`, `vulnerabilities` (each with a `vulnerable` flag),
and a `findings` list.
### `http_headers_audit(host, port?, use_ssl=True, timeout?) -> dict`
Returns `grade`, `score`, the observed security headers, and a `findings`
list with a recommendation per header. Defaults to HTTPS (port 443).
### `cookie_audit(host, port?, use_ssl=True, timeout?) -> dict`
Follows the redirect chain from the host (capped at 10 hops, flagging any
HTTPS→HTTP downgrade) and audits every `Set-Cookie` seen for the `Secure`,
`HttpOnly`, and `SameSite` flags. Returns `redirect_chain`, `final_url`,
`cookies` (flags only — values are never returned), `cookie_grade`,
`cookie_score`, and a `findings` list.
### `cors_check(host, port?, use_ssl=True, timeout?) -> dict`
Sends one GET with an untrusted `Origin` and inspects the
`Access-Control-Allow-Origin` / `-Allow-Credentials` response. Reflecting an
arbitrary Origin **with** credentials is high severity (any site can read
authenticated responses); a wildcard or trusted `null` origin are lesser issues.
Returns `acao`, `allows_credentials`, `reflects_origin`, `wildcard`, `severity`,
and `findings`.
### `well_known_audit(host, timeout?) -> dict`
Fetches and parses `security.txt` (RFC 9116, tried at `/.well-known/` then the
legacy path) and `robots.txt`. Returns `security_txt` (parsed fields, structural
`issues`, `location`) and `robots_txt` (`sitemaps`, `disallow`/`allow` paths,
`user_agents`), each with a `present` flag.
### `ip_info(host, timeout?) -> dict`
Resolves the host's IP and looks it up in the public **RDAP** registry (via
rdap.org's bootstrap to the right RIR). Returns `ip` and `rdap` (`handle`,
`name`, `country`, `cidr`, `org`, `abuse_email`).
### `port_scan(host, ports?, timeout?) -> dict`
TCP connect scan of a **single** host. `ports` is a string — `"22,80,443"`, a
range `"1-1024"`, or a mix — and omitting it scans a built-in common-port set.
Hard-capped at 1024 ports per call (single-host recon, not mass scanning).
Returns `host`, `ip`, `scanned`, `open_count`, and `open_ports` (port +
service). Scan only hosts you are authorized to assess.
## License
[MIT](./LICENSE)
<!-- mcp-name: io.github.nan786521/recon-kit-mcp -->
What people ask about recon-mcp
What is nan786521/recon-mcp?
+
nan786521/recon-mcp is mcp servers for the Claude AI ecosystem. MCP server giving AI coding agents (Claude Code, Codex, Cline) safe, structured network & security recon tools — DNS, WHOIS, TLS, and HTTP security headers, each with a graded verdict. Authorized testing & education only. It has 1 GitHub stars and was last updated today.
How do I install recon-mcp?
+
You can install recon-mcp by cloning the repository (https://github.com/nan786521/recon-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is nan786521/recon-mcp safe to use?
+
Our security agent has analyzed nan786521/recon-mcp and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains nan786521/recon-mcp?
+
nan786521/recon-mcp is maintained by nan786521. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to recon-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy recon-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/nan786521-recon-mcp)<a href="https://claudewave.com/repo/nan786521-recon-mcp"><img src="https://claudewave.com/api/badge/nan786521-recon-mcp" alt="Featured on ClaudeWave: nan786521/recon-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。