threatcluster について
ThreatCluster は、セキュリティ分析担当者やエージェント向けの脅威インテリジェンス API ラッパー兼 MCP サーバーです。読み取り専用ツールで、ライブのインシデントクラスター、エンティティ情報、脆弱性状況、ランサムウェアのリークサイト掲載被害者を提供します。
主な機能
- 01インシデントクラスターと脅威記録の検索
- 02攻撃者・マルウェア・ベンダー情報の照会
- 03KEV と EPSS を含む CVE の確認
- 04ランサムウェアのリークサイト被害者の照会
- 05注目エンティティと悪用脆弱性の追跡
- 06引用 URL 付きの読み取り専用ツール
活用シーン
- 01CVE が悪用されているか確認
- 02最近のインシデントとタイムラインを調査
- 03ランサムウェアのリークサイト掲載被害者を検索
- 04引用付き脅威インテリジェンスをエージェントに提供
MCP 対応
MCP サーバーは ThreatCluster API 経由で、インシデント、エンティティ、脆弱性、ランサムウェア被害者を検索する読み取り専用ツールを公開します。結果には引用用 URL、呼び出しコスト、残りの予算が含まれます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://threatcluster.io/mcpclaude mcp add --transport http jam0k-threatcluster https://threatcluster.io/mcp{"mcpServers":{"jam0k-threatcluster":{"type":"http","url":"https://threatcluster.io/mcp"}}}Cursor で開く{"servers":{"jam0k-threatcluster":{"type":"http","url":"https://threatcluster.io/mcp"}}}VS Code で開く{"mcpServers":{"jam0k-threatcluster":{"type":"http","url":"https://threatcluster.io/mcp"}}}{"mcpServers":{"jam0k-threatcluster":{"serverUrl":"https://threatcluster.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://threatcluster.io/mcp認証が必要ツール
詳細
ThreatCluster:無料の CTI API と MCP サーバー
無料の脅威インテリジェンス API(1 日あたり 100 クレジット、クレジットカード不要)と、その API を利用する MCP サーバーです。Claude、Cursor、または任意の MCP クライアントに、最新情報、被害を受けた組織、CVE が悪用されているかどうかを尋ねると、重複排除されたインシデントクラスター、攻撃者やマルウェアのプロファイル、KEV と EPSS を含む CVE、ランサムウェアのリークサイト上の被害者を集めた最新のコーパスから回答を得られます。
Claude、Cursor、VS Code、Windsurf、Zed、その他あらゆる MCP クライアントに、ThreatCluster の最新の脅威インテリジェンスを提供する MCP サーバーです(セットアップガイド)。インシデントクラスター(脅威スコア、タイムライン、抽出されたエンティティを含む、インシデントごとに重複排除されたストーリー)、エンティティプロファイル(攻撃者、マルウェア、ツール、ベンダー、CVE)、KEV/EPSS/悪用状況を含む CVE レコード、ランサムウェアのリークサイト上の被害者を提供します。
これは、公開 REST API を包む、軽量で監査可能なラッパーです。各ツール呼び出しでは、https://threatcluster.io/api/public/v1 に対して、ご自身の API キーを使って GET リクエストを 1~2 回送信します。それ以外の情報が端末の外に送信されることはなく、テレメトリーもありません。
フィードアグリゲーターではなく、これを選ぶ理由
多くの無料 CTI MCP サーバーは、他社のインジケーターフィード(OTX、abuse.ch、AbuseIPDB)をラップしています。ThreatCluster はコーパスそのものです。すべてのストーリーは、その事案を報じたあらゆるソースをもとに構築されたクラスターで、脅威スコア、タイムライン、テキストから抽出されたエンティティを含みます。さらに、リークサイト上の被害者リストと CVE の悪用状況も、同じ API で確認できます。無料キーですべての機能を利用でき、過去 7 日間を参照できます。有料プランでは参照期間が延長されます。詳しくは、threatcluster.io/about/free-api の情報とホスト型エンドポイント(https://threatcluster.io/mcp)をご覧ください。
1 つのツール仕様から 2 種類のランタイム向けに公開しているため、どちらも同じ機能を提供します。
| ランタイム | インストール | パッケージ |
|---|---|---|
| Python 3.10+ | uvx threatcluster-mcp(または pipx run threatcluster-mcp) | PyPI:threatcluster-mcp |
| Node 18+ | npx -y threatcluster-mcp | npm:threatcluster-mcp |
1. API キーを取得する
無料キーでは、5 つの読み取りスコープ、1 日あたり 100 クレジット、1 分あたり 30 リクエスト、過去 7 日間の参照が利用できます。https://threatcluster.io/api で取得してください。キーを THREATCLUSTER_API_KEY に設定します。tc CLI を使用していて、tc auth login を実行済みの場合、Python サーバーはその認証情報(キーリングまたは ~/.config/tc-cli/credentials ファイル)を自動的に取得します。Node サーバーはファイルのみを読み取ります。
2. サーバーを追加する
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、Settings > Developer > Edit Config)
{
"mcpServers": {
"threatcluster": {
"command": "npx",
"args": ["-y", "threatcluster-mcp"],
"env": { "THREATCLUSTER_API_KEY": "tc_live_..." }
}
}
}
Cursor — ワンクリックで追加するには、listings/cursor-deeplink.md をご覧ください。または、~/.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。キーはファイルに保存されず、入力を求められます)
{
"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)— Claude Desktop と同じ mcpServers ブロックを使用します。
Zed(settings.json)
{ "context_servers": { "threatcluster": { "command": { "path": "npx", "args": ["-y", "threatcluster-mcp"], "env": { "THREATCLUSTER_API_KEY": "tc_live_..." } } } } }
クライアントを起動せずに設定を確認できます。THREATCLUSTER_API_KEY=... npx -y threatcluster-mcp --check を実行してください(キーの取得元と送信先が表示されます。キー自体は表示されません)。
3. ツール
コストは ThreatCluster API のクレジットで示されます(無料キーは 1 日あたり 100 クレジットです)。各結果のすべてのクラスタ、エンティティ、被害者、CVE には、引用用の cost(この呼び出しで消費したクレジット)、budget(レスポンスヘッダーに基づく本日の残りクレジット)、as_of、url フィールドが含まれます。
| ツール | 回答する内容 | API エンドポイント | クレジット |
|---|---|---|---|
search_threats | インシデントクラスタをキーワード検索します。フレーズ、すべての単語、いずれかの単語の順に検索し、どの段階で一致したかを matched_stage で示します | GET /threats?keyword=(用語ごと) | 用語ごとに 1(最大 8 回の呼び出し) |
search_everything | 1 回の呼び出しでクラスタ、エンティティプロフィール、ダークウェブ上の情報を検索します | GET /search | 5 |
newest_threats | 最初の報告時刻または注目度の上昇に基づき、1 時間/24 時間/7 日/30 日以内の新着情報を取得します | GET /threats | 1 |
get_threat | 1 件のクラスタの完全な記録(概要、タイムライン、記事、エンティティ)を取得します。include_iocs を指定すると、検証済みの指標が追加されます | GET /threats/{id}(および /iocs) | 1(+1) |
leak_site_victims | 業種/グループ/国/被害者で絞り込んだランサムウェアのリークサイト掲載情報に加え、対象期間全体の集計を取得します | GET /darkweb/ransomware/victims + /facets | 2 |
lookup_entity | 攻撃者、マルウェア、ツール、ベンダー、製品、国、業界、CVE のプロフィールを取得します | GET /entities/search + GET /entities/{type}/{value} | 2 |
get_vulnerability | 1 件の CVE の CVSS、EPSS、期限付きの KEV 情報、エクスプロイト、ベンダー、製品を取得します | GET /vulnerabilities/{cve_id} | 1 |
exploited_vulnerabilities | KEV/公開エクスプロイト/深刻度/ベンダー/製品で絞り込んだ、対象期間内の CVE を取得します | GET /vulnerabilities | 1 |
trending_entities | 対象期間に増加している攻撃者、マルウェア、ツール、ベンダー、CVE、国を取得します | GET /entities/trending | 1 |
api_budget | 直近のレスポンスに基づく残りクレジットとレート制限の状態を取得します。API 呼び出しは行いません | — | 0 |
1 つのプロンプト threatcluster_analyst に分析担当者向けのルールが含まれています(まずツールを使用する、返された url を使ってすべての事実に引用を付ける、検索対象期間を明示する、リークサイトの掲載情報はあくまで主張として扱う)。
エラーは、API 独自のメッセージを含む MCP ツールエラーとして返されます。401 はエージェントに THREATCLUSTER_API_KEY の設定方法と無料キーの取得先を知らせ、429 には Retry-After が含まれます。403 では、不足しているスコープまたはルックバック期間と、それを解除できるプランが示されます。
threatcluster.io について詳しく
- MCP サーバーのページには、クライアントごとの設定方法があります:Claude、OpenAI、Cursor、VS Code
- エージェントキー:エージェント向けのスコープ付き、予算設定済みキー
- 無料 API キーとAPI リファレンス
- LLM の最新性ベンチマーク:最新の脅威について、根拠に基づく回答とベースモデルのみの回答を比較します
セキュリティ
- キーは
THREATCLUSTER_API_KEY(次にTC_REFRESH_TOKEN、その次に tc-cli ストア)から読み込まれ、THREATCLUSTER_API_BASEに対してX-API-Keyヘッダーのみで送信されます(tc loginで発行された JWT の場合はAuthorization: Bearer)。 - キーはログに記録されず、
--checkで表示されず、ディスクに書き込まれることもありません。また、すべてのエラー文字列から除去されます。テストスイートでは、キーを本文に含む 401 の場合も含め、すべての標準出力と標準エラー出力のバイト列にキーが含まれないことを検証します。 - stdio のみを使用します。API 以外への外部接続はありません。分析も行いません。
- すべてのツールは読み取り専用(
readOnlyHint: true)で、リクエストを行う前に引数を仕様に照らして検証します。
環境変数
| 変数 | デフォルト | 用途 |
|---|---|---|
THREATCLUSTER_API_KEY | — | キー(tc_live_…、tc_agent_…)または tc login のベアラートークン |
THREATCLUSTER_API_BASE | https://threatcluster.io/api/public/v1 | API のベース URL(セルフホスト環境またはローカルテストサーバー用) |
THREATCLUSTER_SITE | https://threatcluster.io | 結果の url フィールドのベース URL |
リポジトリ構成
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 を実行すると、仕様が両方のパッケージにコピーされます。コピーに差異があると、CI が失敗します。
開発
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
関連情報: tc CLI、API リファレンス、基本的なツール呼び出し関数のためのエージェントツールのレシピ、インテグレーションガイド。
GPL-3.0-or-later © ThreatCluster Ltd.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。