ThreatCluster

Inteligencia de amenazas en vivo para agentes: clústeres de incidentes, perfiles de actores de amenazas y malware, CVEs con estado KEV/EPSS/exploit, y víctimas de sitios de filtración de ransomware. Diez herramientas de solo lectura sobre la API de ThreatCluster con una clave gratuita (100 créditos al día). Cada resultado incluye URLs de citación.

Servidor MCP alojado

npx add-mcp 'https://threatcluster.io/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Servidor MCP de Inteligencia de Amenazas

Un servidor MCP que brinda a Claude, Cursor, VS Code, Windsurf, Zed y cualquier otro cliente MCP inteligencia de amenazas en vivo desde ThreatCluster: clústeres de incidentes (una historia deduplicada por incidente, con puntuación de amenaza, cronología y entidades extraídas), perfiles de entidades (actores, malware, herramientas, proveedores, CVEs), registros CVE con estado KEV / EPSS / explotación, y víctimas de sitios de filtración de ransomware.

Es un envoltorio delgado y auditable sobre la API REST pública. Cada llamada de herramienta es uno o dos GETs a https://threatcluster.io/api/public/v1 con tu clave API; nada más sale de tu máquina, y no hay telemetría.

Publicado dos veces desde una misma especificación de herramienta, por lo que ambos son idénticos:

RuntimeInstalaciónPaquete
Python 3.10+uvx threatcluster-mcp (o pipx run threatcluster-mcp)PyPI: threatcluster-mcp
Node 18+npx -y threatcluster-mcpnpm: threatcluster-mcp

1. Obtén una clave

Las claves gratuitas incluyen los cinco alcances de lectura, 100 créditos al día, 30 solicitudes por minuto y una ventana retrospectiva de 7 días: https://threatcluster.io/api. Colócala en THREATCLUSTER_API_KEY. Si usas el CLI tc y has ejecutado tc auth login, el servidor Python toma esa credencial automáticamente (almacén de claves o el archivo ~/.config/tc-cli/credentials); el servidor Node solo lee el archivo.

2. Agrega el servidor

Claude Code

claude mcp add threatcluster -e THREATCLUSTER_API_KEY=tc_live_... -- npx -y threatcluster-mcp
# or the Python build:
claude mcp add threatcluster -e THREATCLUSTER_API_KEY=tc_live_... -- uvx threatcluster-mcp

Claude Desktop (claude_desktop_config.json, Configuración > Desarrollador > Editar configuración)

{
  "mcpServers": {
    "threatcluster": {
      "command": "npx",
      "args": ["-y", "threatcluster-mcp"],
      "env": { "THREATCLUSTER_API_KEY": "tc_live_..." }
    }
  }
}

Cursor — con un clic: consulta listings/cursor-deeplink.md, o agrégalo a ~/.cursor/mcp.json / .cursor/mcp.json:

{ "mcpServers": { "threatcluster": { "command": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "tc_live_..." } } } }

VS Code (.vscode/mcp.json; la entrada solicita la clave en lugar de almacenarla en el archivo)

{
  "inputs": [{ "type": "promptString", "id": "tc-key", "description": "ThreatCluster API key", "password": true }],
  "servers": {
    "threatcluster": { "type": "stdio", "command": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "${input:tc-key}" } }
  }
}

Windsurf (~/.codeium/windsurf/mcp_config.json) — el mismo bloque mcpServers que Claude Desktop.

Zed (settings.json)

{ "context_servers": { "threatcluster": { "command": { "path": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "tc_live_..." } } } } }

Verifica una configuración sin iniciar un cliente: THREATCLUSTER_API_KEY=... npx -y threatcluster-mcp --check (imprime de dónde proviene la clave y a dónde se enviará — nunca la clave).

3. Herramientas

Los costos son créditos de la API de ThreatCluster (claves gratuitas: 100 al día). Cada resultado incluye campos cost (créditos gastados en esta llamada), budget (restantes hoy, de los encabezados de respuesta), as_of y url en cada clúster, entidad, víctima y CVE para citación.

HerramientaQué respondePunto(s) final(es) de APICréditos
search_threatsBúsqueda por palabras clave sobre clústeres de incidentes; frase, luego todas las palabras, luego cualquier palabra; matched_stage indica cuálGET /threats?keyword= por término1 por término (máx. 8 llamadas)
search_everythingClústeres, perfiles de entidades y coincidencias en la web oscura en una sola llamadaGET /search5
newest_threatsQué hay de nuevo en 1h / 24h / 7d / 30d, por primer informe o por impulsoGET /threats1
get_threatRegistro completo de un clúster: resumen, cronología, artículos, entidades; include_iocs agrega indicadores validadosGET /threats/{id} (+ /iocs)1 (+1)
leak_site_victimsListados de sitios de filtración de ransomware por sector / grupo / país / víctima, más un recuento de toda la ventanaGET /darkweb/ransomware/victims + /facets2
lookup_entityPerfil de un actor, malware, herramienta, proveedor, producto, país, industria o CVEGET /entities/search + GET /entities/{type}/{value}2
get_vulnerabilityUn CVE: CVSS, EPSS, KEV con fecha límite, exploits, proveedores, productosGET /vulnerabilities/{cve_id}1
exploited_vulnerabilitiesCVEs en una ventana filtrados por KEV / exploit público / severidad / proveedor / productoGET /vulnerabilities1
trending_entitiesActores, malware, herramientas, proveedores, CVEs, países en ascenso durante una ventanaGET /entities/trending1
api_budgetCréditos restantes y estado de tasa de las últimas respuestas — sin llamada a la API—0

Un mensaje, threatcluster_analyst, contiene las reglas del analista (herramientas primero, cita cada hecho con el url devuelto, indica el período que buscaste, los listados de sitios de filtración son afirmaciones).

Los errores regresan como errores de herramienta MCP con el mensaje propio de la API: 401 le indica al agente configurar THREATCLUSTER_API_KEY y de dónde proviene una clave gratuita, 429 lleva el Retry-After, 403 nombra el alcance faltante o la ventana retrospectiva y el plan que la eleva.

Seguridad

  • La clave se lee de THREATCLUSTER_API_KEY (luego TC_REFRESH_TOKEN, luego el almacén de tc-cli) y se envía solo como el encabezado X-API-Key (o Authorization: Bearer para un JWT emitido por tc login) a THREATCLUSTER_API_BASE.
  • Nunca se registra, nunca se imprime con --check, nunca se escribe en disco y se elimina de toda cadena de error; los conjuntos de pruebas verifican que la clave esté ausente de todos los bytes de stdout y stderr, incluso en un 401 cuyo cuerpo la cita.
  • Solo stdio. Sin conexión saliente aparte de la API. Sin analíticas.
  • Todas las herramientas son de solo lectura (readOnlyHint: true) y validan argumentos contra la especificación antes de realizar cualquier solicitud.

Entorno

VariablePredeterminadoPropósito
THREATCLUSTER_API_KEY—tu clave (tc_live_…, tc_agent_…) o un bearer de tc login
THREATCLUSTER_API_BASEhttps://threatcluster.io/api/public/v1base de la API (servidores autohospedados o de prueba local)
THREATCLUSTER_SITEhttps://threatcluster.iobase para los campos url en los resultados

Diseño del repositorio

tools/tools.json   the single source of truth: tools, schemas, endpoint mapping, credits, prompt
python/            PyPI package (hatchling; mcp + httpx)          -> console script threatcluster-mcp
node/              npm package (TypeScript; @modelcontextprotocol/sdk + zod) -> bin threatcluster-mcp
tests/fixtures/    recorded API responses and tool outputs; both packages must replay them identically
listings/          directory manifests and submission copy (Smithery, MCP registry, Glama, mcp.so, Cursor, VS Code)
.github/workflows/ CI (both suites) and tag-triggered publishing (PyPI trusted publishing, npm provenance)

python3 tools/sync_tools.py copia la especificación en ambos paquetes; CI falla si las copias se desvían.

Desarrollo

pip install -e "python/[test]" && (cd python && pytest)
cd node && npm install && npm test
# live validation against a real API (spends ~30 credits, re-records tests/fixtures):
THREATCLUSTER_LIVE=1 THREATCLUSTER_API_KEY=... THREATCLUSTER_API_BASE=... pytest python/tests/test_live.py

Relacionados: el CLI tc, la referencia de la API, la receta de herramienta de agente para una función simple de llamada a herramientas, y la guía de integración.

GPL-3.0-o-posterior © ThreatCluster Ltd.