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

tests PyPI

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

ferramentao que fazfonte
recon_domaintudo abaixo de uma vez + uma lista de destaques que valem a pena conferirtudo
domain_whoisregistrador, criação/expiração, nameservers, contato de abusoRDAP (rdap.org)
ip_whoisproprietário da rede, CIDR, país, contato de abuso, PTRRDAP + DNS reverso
dns_lookupA, AAAA, CNAME, MX, NS, TXT, SOA, CAA (ou escolha os seus)seu resolvedor ou um personalizado
subdomainssubdomínios encontrados em logs de transparência de certificadoscrt.sh
waybacksnapshots arquivados de uma URL, suporta example.com/*API Wayback CDX
http_headersstatus, cadeia de redirecionamentos, cabeçalhos, cabeçalhos de segurança ausentesrequisição direta
shodan_internetdbportas abertas, hostnames, CPEs, CVEs conhecidasShodan InternetDB (grátis)
email_securitySPF, DMARC, MTA-STS, TLS-RPT, DKIM, nota A-FDNS
tls_certificateemissor, expiração, SANs, versão TLS, por que um certificado é inválidoconexão direta
asn_lookupqual AS anuncia um IP, quem o possui, todos os seus prefixosRIPEstat

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_security tenta os comuns. Passe dkim_selectors se você souber o seu.
  • .ro, .de e alguns outros ccTLDs não têm RDAP público, então domain_whois nã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)