OSINT MCP
Reconhecimento passivo de OSINT para domínios e IPs: whois, DNS, subdomínios, Wayback, segurança de e-mail, TLS, ASN e Shodan. Sem chaves de API.
Documentação
osint-mcp
Servidor MCP que dá ao Claude (ou a qualquer cliente MCP) um conjunto de consultas passivas de reconhecimento para domínios e IPs. Não são necessárias chaves de API, tudo vem de fontes públicas.
Me cansei de ficar alternando entre abas de whois, crt.sh, Wayback Machine e Shodan ao investigar um domínio, então isso permite que o modelo faça isso e junte os resultados.
Ferramentas
| ferramenta | o que faz | fonte |
|---|---|---|
recon_domain | tudo abaixo de uma vez + uma lista de destaques que valem a pena conferir | tudo |
domain_whois | registrador, criação/expiração, nameservers, contato de abuso | RDAP (rdap.org) |
ip_whois | proprietário da rede, CIDR, país, contato de abuso, PTR | RDAP + DNS reverso |
dns_lookup | A, AAAA, CNAME, MX, NS, TXT, SOA, CAA (ou escolha os seus) | seu resolvedor ou um personalizado |
subdomains | subdomínios encontrados em logs de transparência de certificados | crt.sh |
wayback | snapshots arquivados de uma URL, suporta example.com/* | API Wayback CDX |
http_headers | status, cadeia de redirecionamentos, cabeçalhos, cabeçalhos de segurança ausentes | requisição direta |
shodan_internetdb | portas abertas, hostnames, CPEs, CVEs conhecidas | Shodan InternetDB (grátis) |
email_security | SPF, DMARC, MTA-STS, TLS-RPT, DKIM, nota A-F | DNS |
tls_certificate | emissor, expiração, SANs, versão TLS, por que um certificado é inválido | conexão direta |
asn_lookup | qual AS anuncia um IP, quem o possui, todos os seus prefixos | RIPEstat |
Tudo, exceto http_headers e tls_certificate, é passivo; o alvo nunca vê seu tráfego. Esses dois apenas abrem uma conexão normal, igual a visitar o site em um navegador.
Instalação
Requer Python 3.10+.
pip install osint-mcp-server
ou, se você usa uv, não precisa instalar nada, basta apontar o cliente para uvx (veja abaixo).
Claude Desktop
Adicione isto a claude_desktop_config.json:
{
"mcpServers": {
"osint": {
"command": "uvx",
"args": ["osint-mcp-server"]
}
}
}
Se você instalou com pip, "command": "osint-mcp-server" sem argumentos também funciona.
Claude Code
claude mcp add osint -- uvx osint-mcp-server
Cursor, Windsurf etc. aceitam o mesmo JSON do Claude Desktop.
Exemplos de prompts
- "faça recon em example.com e me diga o que se destaca"
- "alguém consegue falsificar e-mails do nosso domínio? o que devemos corrigir primeiro?"
- "quais desses 20 domínios têm certificados expirando neste mês?"
- "quais faixas de IP o AS13335 anuncia?"
- "verifique os cabeçalhos de segurança desses 5 sites e me diga quais são os piores"
- "quais dos subdomínios de example.com resolvem para algo com portas abertas?"
- "como era example.com/about em 2015?"
Cache
Respostas de API (RDAP, crt.sh, Wayback, RIPEstat, InternetDB) são armazenadas em cache no sqlite por 6 horas em ~/.cache/osint-mcp/cache.sqlite3, principalmente para não sobrecarregar o crt.sh. Verificações de DNS, TLS e HTTP são sempre ao vivo.
OSINT_MCP_CACHE=off # disable
OSINT_MCP_CACHE_TTL=3600 # seconds
OSINT_MCP_CACHE_PATH=/tmp/x.db
Notas
- crt.sh e a API Wayback CDX são lentos e retornam 502/503 com frequência. O servidor tenta novamente algumas vezes, mas às vezes é preciso tentar mais tarde.
- InternetDB não é em tempo real e só tem IPs que o Shodan realmente escaneou.
- Seletores DKIM não podem ser listados;
email_securitytenta os comuns. Passedkim_selectorsse você souber o seu. .ro,.dee alguns outros ccTLDs não têm RDAP público, entãodomain_whoisnão pode fazer muito por eles.
Desenvolvimento
git clone https://github.com/robyroro/osint-mcp
cd osint-mcp
pip install -e . pytest
pytest
Os testes não acessam a rede; chamadas HTTP são simuladas.
Para testar com o inspetor MCP:
npx @modelcontextprotocol/inspector osint-mcp
Seja razoável
Isso só puxa dados públicos, mas ainda assim: use em coisas suas, em alvos de bug bounty que estejam no escopo, ou para pesquisa. Não use para perseguir pessoas.
Licença
MIT © Robert Vind-Gardoș (@robyroro)