recon-mcp
Provides DNS lookups and record retrieval using Cloudflare's DNS-over-HTTPS API.
Provides DNS lookups and record retrieval using Google's DNS-over-HTTPS API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@recon-mcpMap the attack surface of example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
recon-mcp
An MCP server that gives an AI agent 15 OSINT tools over free, public sources. No API keys, no accounts, no signup — every source here answers unauthenticated.
It is also a worked example of what changes when an MCP server has to survive real use rather than a demo: response shaping, context budgeting, per-endpoint retry policy, and composite tools that collapse a predictable ten-call sequence into one.
"Map the attack surface of github.com"
→ recon_domain("github.com") one call
→ 139 subdomains from Certificate Transparency
→ 6 of them still resolve, checked in parallel
→ 12 addresses profiled for open ports and known CVEsThat is a real run, not an illustration. It took ~2 minutes, nearly all of it waiting on crt.sh — certificate transparency is the slow leg on any busy domain. The win here is call count, not latency: the same picture assembled tool-by-tool costs twenty-plus round trips with the model deciding the obvious next step between each one.
Install
git clone https://github.com/<you>/recon-mcp && cd recon-mcp
python -m venv .venv && . .venv/bin/activate
pip install -e .Register it with any MCP client. For Claude Desktop / Claude Code:
{
"mcpServers": {
"recon": {
"command": "/absolute/path/to/recon-mcp/.venv/bin/recon-mcp"
}
}
}That is the whole setup. There is no configuration file and nothing to authenticate.
Related MCP server: wrg-mcp-server
Tools
Tool | Answers |
| Full first pass: CT → DNS → host exposure, one call |
| Subdomains from Certificate Transparency logs |
| Raw CT entries — issuer, validity, SANs |
| A/AAAA/CNAME/MX/NS/TXT/SOA in one parallel call |
| One specific record type |
| PTR for an IPv4 address |
| Shodan InternetDB: ports, hostnames, tags, CVEs |
| Just the open ports |
| Just the CVEs, with a false-positive warning |
| One CVE: CVSS score, vector, description |
| CVEs by keyword, newest first |
| Registration data: dates, registrar, nameservers |
| Netblock owner, range, country |
| Historical URLs archived under a domain |
| Snapshots of one URL over time, with digests |
Sources: crt.sh, Cloudflare & Google DNS-over-HTTPS, Shodan InternetDB, NVD, RDAP, Wayback Machine.
Design notes
The parts that took iteration, and why they ended up this way.
One envelope, including on failure
Every tool returns the same shape:
{
"ok": true,
"status": 200,
"data": {},
"pivots": {"hosts": [], "ips": [], "emails": [], "urls": []},
"truncated": false,
"hint": "..."
}Tools that each invent their own result format make the model rediscover structure on every call. Errors keep the shape too — a tool that returns a bare string on failure forces the agent to branch on type before it can read anything.
hint carries what a status code cannot: that a 404 from Shodan means "never
crawled, probably nothing exposed" rather than "broken", or that CVE lists
from banner matching produce false positives when patches are backported.
Compaction is the default, full is opt-in
Recon endpoints answer big. A CT query on an active domain returns tens of
thousands of rows; handing that to a model ends the session. Lists are cut to
25 items and strings to 6000 characters, recursively, with truncated set so
nothing silently disappears. Any tool takes full: true when the caller
genuinely wants everything.
The budget is deliberately tight. An agent can always ask for more — it cannot un-blow its context window.
pivots — the next hop without a parse step
Every response harvests hostnames, IPs, emails and URLs out of the payload. The identifiers worth querying next live in unpredictable places: a hostname appears in a certificate subject, a redirect target and a PTR record, none of which share a key name. Harvesting them centrally means the agent chains lookups instead of parsing prose to find something to look up.
Retry budgets per endpoint
One retry policy for every source is wrong in both directions. crt.sh is slow and gateway-errors under load: long timeout, few retries, patience. NVD rate-limits unauthenticated callers to roughly five requests per 30 seconds: back off hard, cache for an hour. DNS is fast and cheap: short timeout, retry immediately against the spare resolver.
Retrying a known-broken endpoint four times turns one bad call into forty seconds of an agent sitting still — which the user experiences as the tool being broken.
Composite tools
An opening pass over a domain is always the same sequence, and the model's
"reasoning" between the steps adds nothing while the latency is real.
recon_domain runs it in-process with the fan-out parallelised: ~15 calls
become 1. The per-source tools stay available for drilling into whatever the
overview surfaces.
Its host_limit cap is the important part. Some domains have thousands of
subdomains; resolving all of them would mean thousands of DNS queries and a
result nobody can read. The tool takes the most promising ones, says how many
it skipped, and lets the caller go deeper deliberately.
Failures stay inside the tool
An unhandled exception in a handler propagates as a protocol error and, depending on the client, kills the connection or leaves the agent with no idea what happened. Everything is caught at the boundary and returned as a normal failure envelope: a broken tool costs one turn, not the session.
Logging goes to stderr, never stdout — stdout carries the MCP protocol, and a stray log line there corrupts the stream in a way that is unpleasant to debug from the client side.
Scope and use
This queries public databases about internet-facing infrastructure. It sends no traffic to the targets themselves: certificate logs, passive DNS, archived crawls and an existing scan index. That makes it safe for attack-surface mapping, asset inventory and pre-engagement research.
It is not a scanner and does not confirm anything. CVEs from Shodan are inferred from banners and go stale; archived URLs may be long gone. Everything here is a lead to verify, not a finding to report.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseDqualityDmaintenanceA comprehensive MCP server providing tools for IP, domain, email, and image-based open-source intelligence. It integrates services like Shodan, VirusTotal, and HaveIBeenPwned to facilitate advanced security research and data gathering.Last updated5645ISC
- Alicense-qualityAmaintenanceAn MCP server that exposes a 60+ tool security and threat-intel stack to AI agents, enabling secret scanning, Sigma rule generation, ransomware lookup, OSINT, and deep research.Last updated1MIT
- Alicense-qualityDmaintenanceA comprehensive MCP server that exposes multiple OSINT tools to AI assistants like Claude, enabling sophisticated reconnaissance and information gathering tasks using industry-standard OSINT tools.Last updated227MIT
- Alicense-qualityDmaintenanceMCP server that exposes 108+ omega-cli OSINT tools for reconnaissance, web analysis, threat intelligence, and reporting, enabling AI assistants to perform comprehensive open-source intelligence tasks.Last updatedMIT
Related MCP Connectors
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nekiyRichie/recon-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server