OSINT MCP

Reconocimiento OSINT pasivo para dominios e IPs: whois, DNS, subdominios, Wayback, seguridad de correo electrónico, TLS, ASN y Shodan. Sin claves API.

Documentación

osint-mcp

tests PyPI

Servidor MCP que le da a Claude (o a cualquier cliente MCP) un puñado de consultas de reconocimiento pasivo para dominios e IPs. No se necesitan claves API, todo proviene de fuentes públicas.

Me cansé de saltar entre pestañas de whois, crt.sh, Wayback Machine y Shodan al investigar un dominio, así que esto permite que el modelo lo haga y combine los resultados.

Herramientas

herramientaqué hacefuente
recon_domaintodo lo siguiente a la vez + una lista de aspectos destacados que vale la pena revisartodo
domain_whoisregistrador, creado/expira, servidores de nombres, contacto de abusoRDAP (rdap.org)
ip_whoispropietario de la red, CIDR, país, contacto de abuso, PTRRDAP + DNS inverso
dns_lookupA, AAAA, CNAME, MX, NS, TXT, SOA, CAA (o elige los tuyos)tu resolutor o uno personalizado
subdomainssubdominios encontrados en registros de transparencia de certificadoscrt.sh
waybackinstantáneas archivadas de una URL, admite example.com/*API Wayback CDX
http_headersestado, cadena de redirecciones, cabeceras, cabeceras de seguridad faltantessolicitud directa
shodan_internetdbpuertos abiertos, nombres de host, CPEs, CVEs conocidosShodan InternetDB (gratuito)
email_securitySPF, DMARC, MTA-STS, TLS-RPT, DKIM, calificación A-FDNS
tls_certificateemisor, expiración, SANs, versión TLS, por qué un certificado es inválidoconexión directa
asn_lookupqué AS anuncia una IP, quién la posee, todos sus prefijosRIPEstat

Todo excepto http_headers y tls_certificate es pasivo, el objetivo nunca ve tu tráfico. Esos dos solo abren una conexión normal, igual que visitar el sitio en un navegador.

Instalación

Requiere Python 3.10+.

pip install osint-mcp-server

o si usas uv no necesitas instalar nada, solo apunta el cliente a uvx (ver abajo).

Claude Desktop

Añade esto a claude_desktop_config.json:

{
  "mcpServers": {
    "osint": {
      "command": "uvx",
      "args": ["osint-mcp-server"]
    }
  }
}

Si instalaste con pip, "command": "osint-mcp-server" sin argumentos también funciona.

Claude Code

claude mcp add osint -- uvx osint-mcp-server

Cursor, Windsurf, etc. aceptan el mismo JSON que Claude Desktop.

Ejemplos de prompts

  • "haz reconocimiento en example.com y dime qué destaca"
  • "¿alguien puede suplantar el correo de nuestro dominio? ¿qué deberíamos arreglar primero?"
  • "¿cuáles de estos 20 dominios tienen certificados que expiran este mes?"
  • "¿qué rangos de IP anuncia AS13335?"
  • "revisa las cabeceras de seguridad de estos 5 sitios y dime cuáles son peores"
  • "¿cuáles de los subdominios de example.com resuelven a algo con puertos abiertos?"
  • "¿cómo se veía example.com/about en 2015?"

Caché

Las respuestas de la API (RDAP, crt.sh, Wayback, RIPEstat, InternetDB) se guardan en caché en sqlite durante 6 horas en ~/.cache/osint-mcp/cache.sqlite3, principalmente para que crt.sh no reciba demasiadas solicitudes. Las comprobaciones de DNS, TLS y HTTP siempre son en vivo.

OSINT_MCP_CACHE=off           # disable
OSINT_MCP_CACHE_TTL=3600      # seconds
OSINT_MCP_CACHE_PATH=/tmp/x.db

Notas

  • crt.sh y la API Wayback CDX son lentos y devuelven 502/503 con bastante frecuencia. El servidor reintenta un par de veces, pero a veces solo hay que intentarlo de nuevo más tarde.
  • InternetDB no es en tiempo real y solo tiene IPs que Shodan ha escaneado realmente.
  • Los selectores DKIM no se pueden enumerar, email_security prueba los comunes. Pasa dkim_selectors si conoces el tuyo.
  • .ro, .de y algunos otros ccTLDs no tienen RDAP público, así que domain_whois no puede hacer mucho por ellos.

Desarrollo

git clone https://github.com/robyroro/osint-mcp
cd osint-mcp
pip install -e . pytest
pytest

Los tests no tocan la red, las llamadas HTTP están simuladas.

Para probarlo con el inspector MCP:

npx @modelcontextprotocol/inspector osint-mcp

Sé razonable

Esto solo obtiene datos públicos, pero aun así: úsalo en tus propias cosas, objetivos de bug bounty que estén dentro del alcance, o para investigación. No lo uses para acosar a personas.

Licencia

MIT © Robert Vind-Gardoș (@robyroro)