osint-mcp
MCP server that gives Claude (or any MCP client) a handful of passive recon lookups for domains and IPs. No API keys needed, everything comes from public sources.
I got tired of jumping between whois, crt.sh, the Wayback Machine and Shodan tabs when looking into a domain, so this lets the model do it and put the results together.
Tools
| tool | what it does | source |
|---|---|---|
domain_whois |
registrar, created/expires, nameservers, abuse contact | RDAP (rdap.org) |
ip_whois |
network owner, CIDR, country, abuse contact, PTR | RDAP + reverse DNS |
dns_lookup |
A, AAAA, CNAME, MX, NS, TXT, SOA, CAA (or pick your own) | your resolver or a custom one |
subdomains |
subdomains found in certificate transparency logs | crt.sh |
wayback |
archived snapshots of a URL, supports example.com/* |
Wayback CDX API |
http_headers |
status, redirect chain, headers, missing security headers | direct request |
shodan_internetdb |
open ports, hostnames, CPEs, known CVEs | Shodan InternetDB (free) |
Everything except http_headers is passive, the target never sees your traffic. http_headers is just a normal GET request, same as opening the page in a browser.
Install
Needs Python 3.10+.
pip install osint-mcp-server
or if you use uv you don't need to install anything, just point the client at uvx (see below).
Claude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"osint": {
"command": "uvx",
"args": ["osint-mcp-server"]
}
}
}
If you installed with pip, "command": "osint-mcp-server" with no args works too.
Claude Code
claude mcp add osint -- uvx osint-mcp-server
Cursor, Windsurf etc. take the same JSON as Claude Desktop.
Example prompts
- "what can you find about example.com? registrar, dns, subdomains, anything interesting"
- "check the security headers on these 5 sites and tell me which are worst"
- "which of the subdomains of example.com resolve to something with open ports?"
- "what did example.com/about look like in 2015?"
Notes
- crt.sh and the Wayback CDX API are slow and return 502/503 pretty often. The server retries a couple of times but sometimes you just have to try again later.
- InternetDB isn't real-time and only has IPs Shodan has actually scanned.
.ro,.deand some other ccTLDs don't have public RDAP, sodomain_whoiscan't do much for them.
Development
git clone https://github.com/robyroro/osint-mcp
cd osint-mcp
pip install -e . pytest
pytest
Tests don't hit the network, HTTP calls are mocked.
To poke at it with the MCP inspector:
npx @modelcontextprotocol/inspector osint-mcp
Be reasonable
This only pulls public data, but still: use it on your own stuff, bug bounty targets that are in scope, or for research. Don't use it to go after people.
License
MIT
Release files for osint-mcp-server 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| osint_mcp_server-0.1.0.tar.gz | 10.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| osint_mcp_server-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.8 kB
Release files / osint_mcp_server-0.1.0.tar.gz
| Download URL | osint_mcp_server-0.1.0.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4304a767d3f37ddce164b882979bceb024f2b8a8d45a90eb5b6f69fb8497eac9
|
|
BLAKE2b-256 checksum How to use checksums |
21c64b46a83230d9adbabf3fcf200c5be18e7f8a1dbb0145fc0e71e5f1a5a5db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / osint_mcp_server-0.1.0-py3-none-any.whl
| Download URL | osint_mcp_server-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cffcfc67d7f63e84ea8139dba2117a051c8b048347beebffe3b4e2361bf179fc
|
|
BLAKE2b-256 checksum How to use checksums |
da8133a3bf21b08ab2e50fe059ed233b60acad704887a16df89e7828ed6070e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log