mcpField
M
MITRE ATT&CK

MITRE ATT&CK

ローカル
github.com/Montimageセキュリティ154 週間前に更新

MITRE ATT&CK について

MITRE ATT&CKは、ATT&CKデータを構造化して扱うセキュリティアナリスト、脅威ハンター、開発者向けのMCPサーバーです。Enterprise、Mobile、ICSをカバーし、インデックス検索、キャッシュ、stdioまたはHTTP接続に対応します。

主な機能

  1. 01Enterprise、Mobile、ICSのデータ
  2. 02手法、戦術、グループ、ソフトウェアの検索
  3. 03緩和策と関連情報の照会
  4. 04条件付き更新に対応するデータキャッシュ
  5. 05stdioとHTTPのトランスポート

活用シーン

  1. 01脅威グループが使う手法の検索
  2. 02戦術に関連する手法の特定
  3. 03手法に対する緩和策の確認
  4. 04自動化ワークフローからのATT&CKデータ照会

MCP 対応

手法、戦術、グループ、ソフトウェア、緩和策を照会するツールを通じて、MCPクライアントにMITRE ATT&CKデータを提供します。stdioとHTTP接続に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"luongnv89-mitre": {
"command": "uvx",
"args": [
"mitre-mcp"
]
}
}
}
起動コマンドuvx mitre-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimitre-mcp0.3.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mitre-mcp:MITRE ATT&CK MCP サーバー

MCP Registry PyPI ダウンロード数

PyPI version Python versions Test status License Code style: black Pre-commit

MITRE ATT&CK® フレームワークを LLM、AI アシスタント、自動化ワークフローに公開する、本番環境対応の Model Context Protocol(MCP)サーバーです。公式の MCP Python SDK と mitreattack-python ライブラリを使用して構築されており、敵対者の戦術、テクニック、グループ、ソフトウェア、緩和策に安全かつ高性能でアクセスできます。

MCP Registry で公開中です(io.github.luongnv89/mitre-mcp を検索してください)。

主な特長

  • LLM に最適化されたエクスペリエンス – Claude、Windsurf、Cursor、および MCP 互換クライアントとシームレスに統合
  • デフォルトで安全 – 入力検証、TLS 検証、ディスク容量チェック、構造化されたエラー処理
  • 高性能 – 事前構築されたインデックスを使用した O(1) のテクニック検索(スキャンより 80~95%高速)
  • 柔軟なデプロイ – ローカルクライアント向けの stdio、またはウェブベースの統合向けの HTTP サーバー

目次

機能

  • 包括的なMITRE ATT&CKのカバレッジ - すべてのテクニック、戦術、グループ、ソフトウェア、緩和策を網羅
  • 複数ドメインのサポート - Enterprise、Mobile、ICSのATT&CKドメインに対応
  • インテリジェントなキャッシュ - 条件付き更新、バックグラウンド更新を伴う古いデータの提供、設定可能な有効期限(デフォルト:14日)に対応した、ユーザーごとのアトミックなキャッシュ
  • 高速な起動 - Enterpriseは起動時に読み込み、MobileとICSのドメインは初回使用時に遅延読み込み
  • パフォーマンスの最適化 - 事前構築されたインデックスを使用したO(1)検索(80~95%高速化)
  • 2種類のトランスポートモード - ローカルクライアント向けのstdio、Web連携向けのHTTP
  • CORS対応のHTTPサーバー - 非同期通知とクロスオリジンリクエストをサポート
  • 包括的なテスト - カバレッジのしきい値を必須とするpytestスイート
  • コミット前の品質チェック - フォーマット、リント、型チェック、セキュリティスキャンを自動実行
  • 入力検証 - 入力を検証し、レスポンスをサニタイズするセキュアなデフォルト設定
  • プログラム向けAPI - PythonおよびNode.jsクライアント(API-INTEGRATION.mdを参照)

利用可能なMCPツール

ツール名説明
get_techniquesフィルタリングオプションを指定してすべてのテクニックを一覧表示
get_technique_by_idIDを指定して特定のテクニックを検索(例:T1055)
get_techniques_by_tactic特定の戦術のテクニックを取得(例:persistence)
get_tacticsすべての戦術カテゴリを一覧表示
get_groupsすべての脅威アクターグループを一覧表示
get_techniques_used_by_group特定のグループが使用するテクニックを取得(例:APT29)
get_softwareフィルタリングしてマルウェアとツールを一覧表示
get_mitigationsすべてのセキュリティ緩和策を一覧表示
get_techniques_mitigated_by_mitigation特定の緩和策が対処するテクニックを取得

すべての一覧表示ツールと関連ツールは、ページング用のlimit/offsetパラメーターを受け付けます (デフォルトのページサイズは20、最大200です。CONTRIBUTING.mdの MITRE_DEFAULT_PAGE_SIZEとMITRE_MAX_PAGE_SIZEを参照してください)。また、pagination ブロック(total、offset、limit、has_more)を返します。

クイックスタート

インストール
  1. 仮想環境を作成して有効化します:
python3 -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate.bat
  1. PyPIからインストールします:
pip install mitre-mcp
  1. インストールを確認します:
mitre-mcp --help
HTTP モード(推奨)

サーバーを起動します:

mitre-mcp --http

想定される出力:

2025-11-17 22:40:10,991 - mitre_mcp.mitre_mcp_server - INFO - Starting MITRE ATT&CK MCP Server (HTTP mode on localhost:8000)
======================================================================
MITRE ATT&CK MCP Server is ready (Streamable HTTP mode)
Server URL: http://localhost:8000
MCP Endpoint: http://localhost:8000/mcp

Add this to your MCP client configuration:
{
  "mcpServers": {
    "mitreattack": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
======================================================================

MCP クライアントを設定します:

次の JSON をクライアントの設定ファイルに追加します:

{
  "mcpServers": {
    "mitreattack": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

設定ファイルの場所:

  • macOS(Claude Desktop):~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows(Claude Desktop):%APPDATA%\Claude\claude_desktop_config.json
  • Linux(Claude Desktop):~/.config/Claude/claude_desktop_config.json
  • VSCode:MCP 拡張機能の設定で構成します

カスタムホストとポート:

mitre-mcp --http --host 0.0.0.0 --port 8080

その後、クライアントの設定で http://your-server-ip:8080/mcp を使用します。

セキュリティ — ループバック以外へのバインドは、デフォルトでは認証されません。 --host 0.0.0.0(またはループバック以外のアドレス)にバインドすると、MCP エンドポイントがネットワーク全体に公開されます。データは公開されていますが、エンドポイントは CPU とメモリを消費させるための開放された手段となります。すべてのリクエストに Authorization: Bearer <token> を含めるよう、MITRE_HTTP_AUTH_TOKEN を設定するか、

MITRE_HTTP_AUTH_TOKEN=$(openssl rand -hex 32) mitre-mcp --http --host 0.0.0.0 --port 8080

ループバックのみにバインドしたサーバーの前に、認証を行うリバースプロキシを配置してください。nginx の例(TLS + Basic 認証 → 127.0.0.1:8000):

server {
    listen 443 ssl;
    server_name mcp.example.com;
    ssl_certificate     /etc/nginx/certs/mcp.example.com.pem;
    ssl_certificate_key /etc/nginx/certs/mcp.example.com.key;

    location / {
        auth_basic           "mitre-mcp";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass           http://127.0.0.1:8000;
        proxy_set_header     Host $host;
    }
}

MITRE_HTTP_AUTH_TOKEN が設定されていない状態でサーバーがループバック以外のホストにバインドされると、起動時に警告がログに記録されます。

HTTP モードを使う理由:

  • 複数のクライアントが同時に接続できます
  • 並行処理と非同期処理のサポートが強化されます
  • HTTP ツールを使ってデバッグしやすくなります
  • Web ベースのクライアント向けに CORS をサポートします
  • パスの設定が不要です
stdio モード(代替)

stdio トランスポートが必要なローカル専用クライアントの場合:

mitre-mcp

クライアントの設定:

{
  "mcpServers": {
    "mitreattack": {
      "command": "/absolute/path/to/.venv/bin/python",
      "args": ["-m", "mitre_mcp.mitre_mcp_server"]
    }
  }
}

注: 絶対パスを使用してください。ほとんどの場合、HTTP モードを推奨します。

データの強制ダウンロード

MITRE ATT&CK データを新たにダウンロードします:

mitre-mcp --http --force-download
スクリーンショットの例

VSCode の設定:

設定

ツールの呼び出し:

ツール呼び出し

結果:

結果

Web フロントエンド

React チャット UI は frontend/ にあります。ホストされたコピーは https://montimage.github.io/mitre-mcp/ で利用できます。この公開 HTTPS ページから呼び出せるのは クラウド LLM プロバイダー(Gemini、OpenRouter)です。このマシン上のもの、つまり localhost:8000 の mitre-mcp、Ollama、LM Studio、その他のループバックエンドポイントには 接続できません。ブラウザーは公開サイトからループバックアドレス空間へのアクセスをブロックします(MCP URL を https://localhost:8000/mcp にアップグレードすると net::ERR_SSL_PROTOCOL_ERROR が発生し、 http://localhost:…/v1/models では CORS またはプライベートネットワーク関連のエラーが発生します)。

MCP サーバーまたは LLM がコンピューター上で動作している場合は、ローカル UI を使用してください。

ローカルセットアップ(MCP サーバー+チャット UI)

このリポジトリをクローンし、2 つのターミナルを使用します。

1. MCP サーバーをインストールして起動する(Python >= 3.11):

uv sync --locked --extra dev
source .venv/bin/activate
mitre-mcp --http

MCP Endpoint: http://localhost:8000/mcp が表示されるまで待ちます。初回起動時に、ATT&CK データが ~/.cache/mitre-mcp にダウンロードされます。

2. チャット UI を起動する(Node 24):

cd frontend
npm ci
npm run dev

http://localhost:5173/ を開きます。GitHub Pages の URL ではありません。

3. 設定(チャットヘッダーの歯車アイコン):

設定ローカルでの値
MCP ホスト/ポートlocalhost / 8000(開発用プロキシが /mcp をサーバーに転送します)
LLM プロバイダーOllama、Gemini、OpenRouter、または OpenAI-compatible

ローカルの OpenAI-compatible サーバー(LM Studio、llama.cpp、vLLM など)を使用する場合:

  • プロバイダー:OpenAI-compatible
  • エンドポイント URL:http://localhost:<port>/v1(例:http://localhost:20128/v1)
  • モデル:エンドポイントが /v1/models で一覧表示する ID
  • API キー:サーバーで必要な場合を除き、空欄のままにします

エンドポイントは http://localhost:5173 からの CORS を許可する必要があります。Ollama が起動していない場合は、Ollama を選択したままにしないでください。デフォルトのプローブは localhost:11434 にアクセスし、Vite のログに http proxy error: /api/tags が記録されます。

詳細については、frontend/README.md をご覧ください。

ドキュメント

用途に合わせた包括的なガイドを 3 つ用意しています。

1. 初心者向けガイド

Beginner-Playbook.md - MITRE ATT&CK またはサイバーセキュリティを初めて学ぶ方向け

対象者:

  • 技術的な知識のないユーザー
  • セキュリティ意識向上トレーニング
  • 基本的な脅威インテリジェンス
  • サイバーセキュリティ全般の教育
2. 上級者向けプレイブック

Playbook.md - MCP クライアントを使用するセキュリティ専門家向け

対象者:

  • セキュリティアナリスト
  • 脅威ハンター
  • インシデント対応担当者
  • セキュリティエンジニア

すぐに使える 10 種類のシナリオが含まれています:

  • 脅威インテリジェンス
  • 検知エンジニアリング
  • 脅威ハンティング
  • レッドチーム演習
  • セキュリティ評価
  • インシデント対応
  • セキュリティ運用
  • セキュリティトレーニング
  • ベンダー評価
  • リスク管理
3. API 統合ガイド

API-INTEGRATION.md - 自動化やカスタム統合を構築する開発者向け

対象者:

  • バックエンド開発者
  • 自動化エンジニア
  • データパイプライン開発者
  • カスタムツールのプロジェクト担当者

以下が含まれています:

  • Python および Node.js クライアントの完全な実装
  • プロトコル要件と例
  • テストおよびデバッグツール
  • 一般的な統合パターン

設定

環境変数

動作をカスタマイズするには、mitre-mcp の起動前に設定します。

変数デフォルト用途
MITRE_ENTERPRISE_URL、MITRE_MOBILE_URL、MITRE_ICS_URL公式 MITRE CTI GitHub URLATT&CK バンドルの場所を上書きするか、社内ミラーを指定します
MITRE_DATA_DIR~/.cache/mitre-mcpキャッシュされたバンドルをカスタムディレクトリに保存します
MITRE_DOWNLOAD_TIMEOUT120バンドルのダウンロードにおける HTTP タイムアウト(秒)
MITRE_CACHE_EXPIRY_DAYS14キャッシュデータを更新するまでの最大経過日数
MITRE_REQUIRED_SPACE_MB200ダウンロード前に確認するディスク容量のしきい値
MITRE_DEFAULT_PAGE_SIZE / MITRE_MAX_PAGE_SIZE20 / 200リストツールが返すレコード数のデフォルト値と最大値
MITRE_MAX_DESC_LENGTH500レスポンス内の説明の最大文字数
MITRE_LOG_LEVELINFOログの詳細度(DEBUG、INFO、WARNING など)
MITRE_CORS_ORIGINSlocalhost originsHTTP モードで許可する CORS オリジン(カンマ区切りのリスト。* は明示的なオプトインです)
MITRE_HTTP_AUTH_TOKEN未設定(認証なし)設定すると、すべての HTTP リクエストで Bearer トークンが必要です。ループバック以外にバインドする場合に推奨されます

ホストされた UI(Netlify のデプロイなど)がクロスオリジンでサーバーを呼び出せるようにするには、MITRE_CORS_ORIGINS にそのオリジンを設定します。例:MITRE_CORS_ORIGINS="https://mitre-mcp.netlify.app,http://localhost:5173"。どの CORS 設定でも、認証情報は許可されません。

データのキャッシュ

サーバーはパフォーマンスを向上させるため、MITRE ATT&CK データを自動的にキャッシュします。

  1. 初回実行時に、ユーザーごとのキャッシュディレクトリにデータをダウンロードして保存します (デフォルトでは $XDG_CACHE_HOME/mitre-mcp、または ~/.cache/mitre-mcp)。
  2. 以降の実行では、キャッシュが 14 日未満であればキャッシュデータを使用します。
  3. 14 日を超えたデータは、条件付きリクエストを使用して自動的に更新します。304 Not Modified の応答が返された場合、キャッシュ済みのバンドルを再利用します。 期限切れでもデータが存在する場合、更新をバックグラウンドで実行しながら、すぐにそのデータを提供します。起動が更新によってブロックされることはなく、更新に失敗しても既存のキャッシュは保持されます。
  4. キャッシュファイルはアトミックに書き込まれます(一時ファイルへの書き込み後に名前を変更するため、ダウンロードに失敗しても正常なキャッシュが破損することはありません)。
  5. 起動時に解析されるのはエンタープライズドメインのみです。モバイルおよび ICS バンドルは初回使用時に遅延読み込みされるため、クエリされない場合はコールドスタートを高速に保てます。
  6. 新しいデータを強制的にダウンロードするには、--force-download を使用します。

パフォーマンス

シナリオ改善備考
エンタープライズのテクニック検索80-95% 高速化グループ、緩和策、テクニック向けの構築済み O(1) インデックス
ATT&CK データのダウンロード20-40% 高速化TLS セッションの再利用による HTTP 接続プーリング
ウォームキャッシュの起動<2sキャッシュ済みバンドルを再利用し、LLM クエリに即座に対応

ベンチマーク:Python 3.11 を使用した macOS 14 / Apple M3 Pro。タイミングログを表示するには MITRE_LOG_LEVEL=DEBUG を使用してください。

プログラム API

自動化、カスタム統合、バッチ処理については、API-INTEGRATION.md を参照してください。

簡単な例(Python):

from clients.python.mini_mcp_client import MitreMCPClient


async def main():
    client = MitreMCPClient(host="localhost", port=8000)

    # Get all tactics
    tactics = await client.call_tool("get_tactics", {"domain": "enterprise-attack"})

    # Get techniques for a group
    techniques = await client.call_tool(
        "get_techniques_used_by_group", {"group_name": "APT29", "domain": "enterprise-attack"}
    )

利用可能なクライアント:

  • Python:完全な CLI を備えた clients/python/mini-mcp-client.py
  • Node.js:完全な CLI を備えた clients/nodejs/mini-mcp-client.js

詳細なドキュメントについては、API-INTEGRATION.md を参照してください。

開発

クローンとインストール
git clone https://github.com/montimage/mitre-mcp.git
cd mitre-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Pre-commit フックのインストール
pre-commit install

これにより、各コミット前にコード品質チェックが自動で実行されるようになります。

テストの実行
pytest                      # Full test suite with coverage
pre-commit run --all-files  # All quality checks
コード品質ツール

フォーマット:

  • black - Python コードフォーマッター
  • isort - インポート整理ツール
  • prettier - YAML/JSON/Markdown フォーマッター

リンティングと型チェック:

  • flake8 - Python リンター
  • mypy - 静的型チェッカー
  • pydocstyle - Docstring チェッカー

セキュリティ:

  • bandit - セキュリティ脆弱性スキャナー
  • ファイルバリデーター - YAML、JSON、TOML、秘密鍵の検出

テスト:

  • pytest - コミット前のカバレッジ基準チェックを備えたテストスイート
  • インストールテスト - パッケージの検証
  • インポート検証 - モジュールをインポートできることの確認
  • CLI テスト - エントリーポイントの検証

トラブルシューティング

「Insufficient disk space」でダウンロードに失敗する

  • データディレクトリに 200 MB 以上の空き容量を確保するか、MITRE_DATA_DIR=/path/to/storage を設定してください

データが更新されない

  • キャッシュ済みバンドルは 14 日後に自動更新されます
  • 強制更新:mitre-mcp --force-download を実行するか、~/.cache/mitre-mcp を削除してください

ツール呼び出しでエラーが返される

  • テクニック ID が T#### または T####.### の形式であることを確認してください
  • 名前や戦術は 100 文字以内にしてください

MCP クライアントがサーバーを検出できない

  • クライアント設定で正しい Python パスが指定されていることを確認してください
  • 手動でテストするには、mitre-mcp を実行してサーバーが起動することを確認してください
  • HTTP モードの場合:url フィールドが正しく設定されていることを確認してください

チャット UI:「POST https://localhost:8000/mcp net::ERR_SSL_PROTOCOL_ERROR」

  • GitHub Pages の UI は HTTPS のため、localhost は https://localhost:8000 に書き換えられます。mitre-mcp --http は TLS に対応していません。代わりに http://localhost:5173 を開いてください(Web フロントエンドを参照)。

チャット UI:ローカル LLM の呼び出し時に CORS / “loopback address space” エラーが発生する

  • 原因は同じです。公開オリジンから http://localhost:… にはアクセスできません。 フロントエンドをローカルで実行し、OpenAI 互換プロバイダーの接続先を http://localhost:<port>/v1 に設定してください。

Module not found: mcp.server.fastmcp

  • 仮想環境で、固定バージョンの MCP SDK を再インストールしてください:pip install "mcp>=1.28.1,<2"(CLI の追加機能も必要な場合は mcp[cli]>=1.28.1,<2)。fastmcp ディストリビューションには mcp.server.fastmcp が含まれていませんが、このパッケージで宣言されている固定バージョンには含まれています

FAQ

mitre-mcp はオフラインで動作しますか?

  • はい。バンドルがキャッシュされると、キャッシュの有効期限が切れるまでサーバーはオフラインで動作します。

どの Python バージョンがサポートされていますか?

  • Python 3.11 から 3.14 までです(pyproject.toml を参照)。

データはどのくらいの頻度で更新されますか?

  • デフォルトでは 24 時間ごとです。MITRE_CACHE_EXPIRY_DAYS を調整するか、--force-download を使用してください。

HTTP モードは本番環境で安全ですか?

  • HTTP モードはデフォルトで localhost:8000 で配信します。外部に公開する場合は、ファイアウォールまたはリバースプロキシを使用してください。

ライセンス

MIT License - 詳細については LICENSE ファイルを参照してください。

Montimage について

mitre-mcp は、ネットワーク監視、セキュリティ分析、AI を活用した脅威検出ソリューションを専門とするサイバーセキュリティ企業、Montimage が開発・保守しています。組織がデジタル資産を保護し、ネットワークセキュリティを確保するための革新的なツールを開発しています。

ご質問やサポートについては、[email protected] までお問い合わせください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。