ThreatCluster

Inteligência de ameaças ao vivo para agentes: clusters de incidentes, perfis de atores de ameaças e malwares, CVEs com status KEV/EPSS/exploração, e vítimas de sites de vazamento de ransomware. Dez ferramentas somente leitura sobre a API ThreatCluster com chave gratuita (100 créditos por dia). Cada resultado traz URLs de citação.

Servidor MCP hospedado

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

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP de Inteligência de Ameaças

Um servidor MCP que fornece ao Claude, Cursor, VS Code, Windsurf, Zed e qualquer outro cliente MCP inteligência de ameaças em tempo real do ThreatCluster: clusters de incidentes (uma história deduplicada por incidente, com pontuação de ameaça, linha do tempo e entidades extraídas), perfis de entidades (atores, malwares, ferramentas, fornecedores, CVEs), registros de CVE com status KEV / EPSS / exploit e vítimas de sites de vazamento de ransomware.

É um wrapper fino e auditável sobre a API REST pública. Cada chamada de ferramenta é um ou dois GETs para https://threatcluster.io/api/public/v1 com sua chave de API; nada mais sai da sua máquina e não há telemetria.

Publicado duas vezes a partir de uma única especificação de ferramenta, portanto ambos são idênticos:

RuntimeInstalaçãoPacote
Python 3.10+uvx threatcluster-mcp (ou pipx run threatcluster-mcp)PyPI: threatcluster-mcp
Node 18+npx -y threatcluster-mcpnpm: threatcluster-mcp

1. Obtenha uma chave

Chaves gratuitas possuem os cinco escopos de leitura, 100 créditos por dia, 30 requisições por minuto e um período de consulta de 7 dias: https://threatcluster.io/api. Coloque-a em THREATCLUSTER_API_KEY. Se você usar o CLI tc e tiver executado tc auth login, o servidor Python captura essa credencial automaticamente (keyring ou o arquivo ~/.config/tc-cli/credentials); o servidor Node lê apenas o arquivo.

2. Adicione o 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, Configurações > Desenvolvedor > Editar Configuração)

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

Cursor — com um clique: veja listings/cursor-deeplink.md, ou adicione 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; a entrada solicita a chave em vez de armazená-la no arquivo)

{
  "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) — mesmo bloco mcpServers do Claude Desktop.

Zed (settings.json)

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

Verifique uma configuração sem iniciar um cliente: THREATCLUSTER_API_KEY=... npx -y threatcluster-mcp --check (imprime de onde a chave veio e para onde será enviada — nunca a chave).

3. Ferramentas

Os custos são créditos da API do ThreatCluster (chaves gratuitas: 100 por dia). Cada resultado carrega campos cost (créditos gastos nesta chamada), budget (restantes hoje, dos cabeçalhos de resposta), as_of e url em cada cluster, entidade, vítima e CVE para citação.

FerramentaO que respondeEndpoint(s) da APICréditos
search_threatsPesquisa por palavras-chave em clusters de incidentes; frase, depois todas as palavras, depois qualquer palavra; matched_stage indica qualGET /threats?keyword= por termo1 por termo (máx. 8 chamadas)
search_everythingClusters, perfis de entidades e ocorrências na dark web em uma única chamadaGET /search5
newest_threatsO que há de novo em 1h / 24h / 7d / 30d, por primeiro relato ou por momentumGET /threats1
get_threatRegistro completo de um cluster: resumo, linha do tempo, artigos, entidades; include_iocs adiciona indicadores validadosGET /threats/{id} (+ /iocs)1 (+1)
leak_site_victimsListagens de sites de vazamento de ransomware por setor / grupo / país / vítima, além de um total de todo o períodoGET /darkweb/ransomware/victims + /facets2
lookup_entityPerfil de um ator, malware, ferramenta, fornecedor, produto, país, setor ou CVEGET /entities/search + GET /entities/{type}/{value}2
get_vulnerabilityUm CVE: CVSS, EPSS, KEV com data de vencimento, exploits, fornecedores, produtosGET /vulnerabilities/{cve_id}1
exploited_vulnerabilitiesCVEs em um período filtrado por KEV / exploit público / severidade / fornecedor / produtoGET /vulnerabilities1
trending_entitiesAtores, malwares, ferramentas, fornecedores, CVEs, países em ascensão em um períodoGET /entities/trending1
api_budgetCréditos restantes e estado de taxa das últimas respostas — sem chamada de API—0

Um prompt, threatcluster_analyst, carrega as regras do analista (ferramentas primeiro, cite cada fato com o url retornado, diga qual período você pesquisou, listagens de sites de vazamento são alegações).

Erros retornam como erros de ferramenta MCP com a mensagem da própria API: 401 informa ao agente para definir THREATCLUSTER_API_KEY e de onde vem uma chave gratuita, 429 carrega o Retry-After, 403 nomeia o escopo ausente ou o período de consulta e o plano que o eleva.

Segurança

  • A chave é lida de THREATCLUSTER_API_KEY (depois TC_REFRESH_TOKEN, depois o armazenamento do tc-cli) e enviada apenas como cabeçalho X-API-Key (ou Authorization: Bearer para um JWT cunhado por tc login) para THREATCLUSTER_API_BASE.
  • Ela nunca é registrada, nunca impressa por --check, nunca gravada em disco e removida de toda string de erro; as suítes de teste afirmam que a chave está ausente de todos os bytes de stdout e stderr, inclusive em um 401 cujo corpo a cita.
  • Apenas stdio. Nenhuma conexão de saída além da API. Sem analytics.
  • Todas as ferramentas são somente leitura (readOnlyHint: true) e validam argumentos contra a especificação antes de qualquer requisição ser feita.

Ambiente

VariávelPadrãoFinalidade
THREATCLUSTER_API_KEY—sua chave (tc_live_…, tc_agent_…) ou um bearer de tc login
THREATCLUSTER_API_BASEhttps://threatcluster.io/api/public/v1base da API (servidores auto-hospedados ou de teste local)
THREATCLUSTER_SITEhttps://threatcluster.iobase para os campos url nos resultados

Estrutura do repositório

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 a especificação para ambos os pacotes; o CI falha se as cópias divergirem.

Desenvolvimento

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: o CLI tc, a referência da API, a receita de ferramenta de agente para uma função simples de chamada de ferramenta e o guia de integração.

GPL-3.0-or-later © ThreatCluster Ltd.