mcpField
I
IDA Pro MCP Fusion

IDA Pro MCP Fusion

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

IDA Pro MCP Fusion について

IDA Pro MCP Fusionは、MCP対応のコーディングエージェントをローカルのライセンス済みIDA Proに接続し、リバースエンジニアリングを行います。ライブ解析に永続SQLiteキャッシュと、複数バイナリを扱うヘッドレスワーカーを単一エンドポイントで統合します。

主な機能

  1. 01関数のデコンパイルと逆アセンブル
  2. 02クロスリファレンスとコールグラフの照会
  3. 03SQLiteへの解析キャッシュ
  4. 04複数バイナリセッションの管理
  5. 05制限付きツールプロファイル

活用シーン

  1. 01複数のバイナリサンプルで関数を調査
  2. 02反復調査でインデックス済み解析を再利用
  3. 03複数バイナリのキャッシュを一括構築
  4. 04自動化を読み取り専用ツールに制限

MCP 対応

MCPサーバーはstdioまたはHTTP経由で、IDAの解析、編集、キャッシュ、セッション管理ツールをMCPクライアントに公開します。ローカルのライセンス済みIDA Proが必要です。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbida-pro-mcp-fusion-2.0.0.mcpb2.0.0

ツール

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

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

詳細

IDA Pro MCP Fusion — MCP による複数バイナリのリバースエンジニアリング

英語 — 選択中 ロシア語版を開く

最新リリース テスト Python 3.11 以降 IDA Pro 8.3 以降 stdio または HTTP 経由の MCP MIT ライセンス

1 つの MCP エンドポイント。多数のバイナリ。永続的な分析コンテキスト。

クイックスタート · Fusion を選ぶ理由 · アーキテクチャ · ツール · 設定 · 開発

Fusion とは?

IDA Pro MCP Fusion は、MCP 互換のコーディングエージェントを IDA Pro に接続し、1 つの接続を実用的なリバースエンジニアリング用ワークスペースに変えます。ライブの IDA 分析に永続的な SQLite インデックスと、複数のバイナリを分離されたヘッドレスワーカーで開いたままにできるスーパーバイザーを組み合わせています。

関数の逆コンパイルや逆アセンブル、クロスリファレンスの追跡、型の照会、シンボルの名前変更、データのパッチ、シグネチャの作成、複数サンプルの調査、キャッシュ済み分析の再利用に活用できます。IDA のシングルスレッド API を何度もたどる必要はありません。

重要

このプロジェクトには、ライセンス済みの IDA Pro をローカルにインストールする必要があります。IDA Free はサポートされていません。サーバーは IDA、Hex-Rays、またはホスト型分析サービスを提供しません。

Fusion を選ぶ理由

機能変更点
⚡永続的な SQLite キャッシュ関数、文字列、グローバル、インポート、xref、コールグラフのエッジを、繰り返しの調査でも引き続き照会できます。
◈複数バイナリ対応スーパーバイザー1 つの MCP エンドポイントから、複数の GUI またはヘッドレスデータベースを開き、アドレス指定し、閉じられます。
⛓永続ワーカー後から起動したスーパーバイザーは、同じデータベース用の既存ワーカーを検出して引き継げます。
◎バッチ優先のワークフロー1 回の idb_batch_open 呼び出しで、サンプル群の分析を事前に実行し、キャッシュを構築できます。
⛨制御された操作範囲読み取り専用プロファイル、オプトイン方式の危険なツール、ワーカー数の上限、タイムアウト、アイドル時のクリーンアップによって、自動化を制限します。

キャッシュは IDB の隣に <database>.mcp.sqlite として保存されます。IDB の更新日時とキャッシュスキーマを基に最新状態を確認するため、古い行が黙って再利用されることはありません。

クイックスタート

1. 前提条件
  • IDA Pro 8.3 以降。IDA 9.x を推奨します
  • Python 3.11 以降
  • uv / uvx
  • ローカルの stdio サーバーを起動できる任意の MCP クライアント

uv がまだインストールされていない場合は、インストールしてください。

python -m pip install uv

IDA のヘッドレス Python 環境を一度有効にします。

# Windows — adjust the IDA version/path if needed
uv run "C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py"
# macOS — adjust the IDA version/path if needed
uv run "/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py"
2. MCP サーバーを追加する

推奨のセットアップでは、このリポジトリから最新のコードを直接実行します。

{
  "mcpServers": {
    "ida-pro-mcp-fusion": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/rison1337/ida-pro-mcp-fusion",
        "idalib-mcp",
        "--stdio"
      ]
    }
  }
}

Claude Code:

claude mcp add ida-pro-mcp-fusion -- uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion idalib-mcp --stdio

または、最新リリースからパッケージ化された MCP バンドルをダウンロードします。

3. データベースを開く

接続済みのエージェントに、次のように開始するよう依頼します。

idb_open(
    "C:/samples/target.exe",
    preferred_session_id="target",
    build_caches=True,
    init_hexrays=True,
)

以降の各分析呼び出しでは、データベースを明示的に指定します。

survey_binary(database="target")
decompile("main", database="target")
xrefs_to("WinMain", database="target")
cache_callgraph_hotspots(limit=25, database="target")

アーキテクチャ

IDA Pro MCP Fusion のアーキテクチャ
  1. MCP クライアントは、stdio または HTTP 経由で idalib-mcp を起動します。
  2. スーパーバイザーはバイナリごとにワーカーを作成または引き継ぎ、ワーカー数の上限を適用します。
  3. ツール呼び出しには database セッション ID が含まれるため、リクエストは正しい IDB にルーティングされます。
  4. IDA はライブの逆コンパイルと変更処理を実行し、キャッシュツールはサイドカーの SQLite データベースからインデックス化されたクエリに応答します。
  5. ワーカーはホスト上で検出可能な状態を保ち、アイドル状態の TTL が経過すると自動的にクリーンアップされます。

GUI データベースも利用できます。idb_open は、次の 4 つのルーティングモードをサポートします。

モード動作
prefer_headlessidalib ワーカーを使用または作成します。これがデフォルトです。
force_headless実行中の GUI インスタンスを引き継ぎません。
prefer_gui一致する GUI インスタンスを引き継ぎ、なければワーカーを作成します。
force_gui一致する GUI インスタンスを引き継ぐか、IDA GUI を起動します。

複数バイナリのワークフロー

小規模なコレクションを開き、すべてのセッションを利用可能な状態に保ちます。

idb_batch_open(
    [
        "C:/samples/loader.exe",
        "C:/samples/payload.dll",
        "C:/samples/helper.dll",
    ],
    session_prefix="case42",
    refresh_cache=True,
    cache_include_xrefs=True,
)

大規模なコーパスでは、各キャッシュを構築した後、ワーカーをすぐに解放します。

idb_batch_open(
    ["C:/corpus/a.exe", "C:/corpus/b.exe", "C:/corpus/c.exe"],
    close_after_cache=True,
    retry_without_auto_analysis_on_timeout=True,
)

便利なセッション制御:

idb_list()
idb_close(database="case42_1_loader")

ツール一覧

コードベースには、スーパーバイザーの複数セッション制御に加えて、IDA 向けの分析ツールが 75 個登録されています。クライアントに表示される正確な数は意図的に変動します。デバッガーツールは拡張機能であり、危険な操作は明示的に有効化しない限り無効で、プロファイルによって許可リストをさらに絞り込むこともできます。

分野主なツール
セッションidb_open、idb_batch_open、idb_list、idb_close、idb_save
調査と逆コンパイルsurvey_binary、decompile、disasm、analyze_function、analyze_component
検索と関連性find、find_bytes、search_text、xrefs_to、callees、callgraph、trace_data_flow
永続キャッシュcache_status、refresh_cache、cache_entity_query、cache_xrefs、cache_callgraph_hotspots、cache_find_regex
型とスタックdeclare_type、type_inspect、set_type、infer_types、stack_frame、declare_stack
データベース編集rename、set_comments、define_func、define_code、patch_asm、make_data
シグネチャmake_signature、make_signature_for_function、make_signature_for_range、find_xref_signatures
デバッガー拡張機能dbg_start、dbg_bps、dbg_regs、dbg_stacktrace、dbg_read、dbg_write

キャッシュ専用の 9 つのツールは次のとおりです。

cache_status              refresh_cache
cache_refresh_if_stale    cache_list_funcs
cache_entity_query        cache_xrefs
cache_callgraph           cache_callgraph_hotspots
cache_find_regex

設定

ワーカープール
uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion \
  idalib-mcp --stdio --max-workers 4
オプション/変数用途
--max-workers N同時に実行するデータベースワーカーの最大数です。0 は無制限を意味します。デフォルト:4。
IDA_MCP_MAX_WORKERSワーカー数上限の環境変数によるデフォルト値です。
IDA_MCP_OPEN_TIMEOUT自動分析を伴うオープン処理の最大時間(秒)です。デフォルト:1800。0 にすると上限が無効になります。
IDA_MCP_LOAD_TIMEOUT読み込みのみのオープン処理の最大時間(秒)です。デフォルト:300。0 にすると上限が無効になります。
制限付きプロファイル

厳選したツールのみを公開します。

idalib-mcp --stdio --profile profiles/readonly.txt

すぐに使えるプロファイルが 2 つ含まれています。

セッションを引き続き開いて調査できるよう、管理ツールは常に利用できます。

HTTP トランスポート
idalib-mcp --host 127.0.0.1 --port 8745

IDA GUI ブリッジ:

ida-pro-mcp --transport http://127.0.0.1:8744/sse

GUI プラグインをインストールし、クライアント設定を対話形式で生成するには:

python -m pip install https://github.com/rison1337/ida-pro-mcp-fusion/archive/refs/heads/main.zip
ida-pro-mcp --install

インストール後、IDA と MCP クライアントを再起動してください。

安全上の注意

  • サーバーはデフォルトでループバックにバインドします。信頼できないネットワークに公開しないでください。
  • 変更を加えるツールと任意の Python ツールは安全ではないものとして扱われ、デフォルトでは有効になっていません。
  • py_eval、py_exec_file、デバッガーの制御、パッチ適用操作では、コードを実行したり、IDB を恒久的に変更したりする可能性があります。信頼できるクライアントと入力に対してのみ有効にしてください。
  • 信頼できないバイナリは、手動でマルウェアを分析する場合と同じ隔離境界内で分析してください。

ワークフローで必要な場合にのみ、安全でないワーカーツールを有効にしてください。

idalib-mcp --stdio --unsafe

トラブルシューティング

uvx が認識されない

python -m pip install uv で uv をインストールし、新しいターミナルを開いて、uvx --version で確認してください。

Python と IDA のバージョンが一致しない

Hex-Rays の idapyswitch を実行して Python 3.11 以降のインストールを選択し、py-activate-idalib.py で再度 idalib を有効にしてください。

データベース呼び出しで database が必要だと表示される

idb_list() を呼び出し、返された session_id を database= として渡してください。セッション ID の代わりにパスやファイル名を指定することはできません。

ワーカーの上限に達した

idb_close で使用していないセッションを閉じるか、--max-workers を引き上げるか、コーパスのインデックス作成には close_after_cache=True を使用してください。

開発

リポジトリをクローンし、プラットフォームに依存しないテストスイートを実行してください。

git clone https://github.com/rison1337/ida-pro-mcp-fusion.git
cd ida-pro-mcp-fusion
python -m pip install pytest jsonschema "mcp>=1.0" "tomli-w>=1.0"
python -m pytest -q tests

有効化した IDA 環境で、IDA を使用するテストスイートを実行してください。

uv run ida-mcp-test tests/typed_fixture.elf -q

新しい IDA ツールは src/ida_pro_mcp/ida_mcp/api_*.py に配置し、@tool デコレーターを通じて登録します。スーパーバイザーとワーカーのライフサイクルテストは tests/ 以下にあります。

プロジェクトの由来とクレジット

Fusion Edition は rison1337 がメンテナンスしています。

このプロジェクトは、MIT ライセンスの mrexodia/ida-pro-mcp コードベースを基盤としています。永続キャッシュとヘッドレスオーケストレーションには、QiuChenly/ida-pro-mcp-enhancement および winmin/ida-headless-mcp で開発されたアイデアも取り入れています。クレジットはこのページとソース履歴に記載しています。Fusion のパッケージング、キャッシュツール、バッチワークフロー、セッションのライフサイクル、公開上のアイデンティティは、このリポジトリで管理しています。

ライセンス

MIT License のもとで配布されています。IDA Pro と Hex-Rays は Hex-Rays SA の商標であり、このプロジェクトには含まれていません。


ロシア語

英語版を開く ロシア語 — 選択中

1 つの MCP 接続。多数のバイナリ。分析コンテキストを保持。

クイックスタート · Fusion を選ぶ理由 · アーキテクチャ · ツール · 設定

Fusion とは?

IDA Pro MCP Fusion は MCP 対応エージェントを IDA Pro に接続し、1 つの接続を本格的なリバースエンジニアリング環境に変えます。IDA でのライブ分析に永続的な SQLite インデックスと、分離されたヘッドレスワーカーで複数のバイナリを保持できるスーパーバイザープロセスを組み合わせています。

関数の逆コンパイルや逆アセンブル、クロスリファレンス、型、呼び出しグラフの調査、シンボルの名前変更、データへのパッチ適用、シグネチャの作成に加え、すでに構築した分析結果を再利用できます。

重要

ローカルにライセンス認証済みの IDA Pro がインストールされている必要があります。IDA Free はサポートされていません。サーバーには IDA や Hex-Rays は含まれず、バイナリを外部サービスに送信することもありません。

Почему Fusion

ВозможностьЧто это даёт
⚡Постоянный SQLite-кэшФункции, строки, глобальные переменные, импорты, xref и call graph доступны между запусками.
◈Мульти-бинарный supervisorНесколько GUI- или headless-баз управляются через одну MCP-точку.
⛓Живущие воркерыСледующее подключение может найти и принять уже запущенный worker для той же базы.
◎Пакетный анализОткрытие образцов и построение кэшей выполняется одним idb_batch_open.
⛨Контролируемый интерфейсRead-only-профили, лимит воркеров, тайм-ауты и opt-in для опасных инструментов.

Кэш лежит рядом с IDB в файле <database>.mcp.sqlite. Актуальность проверяется по времени изменения IDB и версии схемы, поэтому устаревшие данные не выдаются незаметно.

Быстрый старт

1. Что понадобится
  • IDA Pro 8.3 или новее; рекомендуется IDA 9.x
  • Python 3.11 или новее
  • uv / uvx
  • MCP-клиент, который умеет запускать локальный stdio-сервер

Установите uv, если его ещё нет:

python -m pip install uv

Один раз активируйте headless Python от IDA:

# Windows — при необходимости измените версию и путь к IDA
uv run "C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py"
# macOS — при необходимости измените версию и путь к IDA
uv run "/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py"
2. Добавьте MCP-сервер

Рекомендуемая конфигурация запускает код напрямую из этого репозитория:

{
  "mcpServers": {
    "ida-pro-mcp-fusion": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/rison1337/ida-pro-mcp-fusion",
        "idalib-mcp",
        "--stdio"
      ]
    }
  }
}

Для Claude Code:

claude mcp add ida-pro-mcp-fusion -- uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion idalib-mcp --stdio

Готовый MCPB-пакет доступен в последнем релизе.

3. Откройте базу

Попросите подключённого агента начать так:

idb_open(
    "C:/samples/target.exe",
    preferred_session_id="target",
    build_caches=True,
    init_hexrays=True,
)

Каждый следующий вызов анализа получает явный ID базы:

survey_binary(database="target")
decompile("main", database="target")
xrefs_to("WinMain", database="target")
cache_callgraph_hotspots(limit=25, database="target")

Архитектура

Архитектура IDA Pro MCP Fusion
  1. MCP-клиент запускает idalib-mcp через stdio или HTTP.
  2. Supervisor создаёт или принимает по одному worker-процессу на каждый бинарник.
  3. Каждый вызов содержит database, поэтому запрос попадает в нужную IDB-сессию.
  4. IDA выполняет живой анализ и изменения, а cache-инструменты читают индекс из SQLite.
  5. Воркеры остаются обнаруживаемыми на компьютере и завершаются после периода простоя.

idb_open поддерживает четыре режима:

РежимПоведение
prefer_headlessИспользовать или создать idalib-worker. Режим по умолчанию.
force_headlessНе принимать запущенный GUI-процесс.
prefer_guiПринять подходящий GUI, а если его нет — создать worker.
force_guiПринять GUI или запустить новый процесс IDA.

Работа с несколькими бинарниками

Открыть несколько образцов и оставить все сессии доступными:

idb_batch_open(
    [
        "C:/samples/loader.exe",
        "C:/samples/payload.dll",
        "C:/samples/helper.dll",
    ],
    session_prefix="case42",
    refresh_cache=True,
    cache_include_xrefs=True,
)

Для большого корпуса можно построить кэш и сразу освободить worker:

idb_batch_open(
    ["C:/corpus/a.exe", "C:/corpus/b.exe", "C:/corpus/c.exe"],
    close_after_cache=True,
    retry_without_auto_analysis_on_timeout=True,
)

Управление сессиями:

idb_list()
idb_close(database="case42_1_loader")

Инструменты

В кодовой базе зарегистрировано 75 инструментов анализа IDA, а supervisor добавляет управление мульти-бинарными сессиями. Видимый клиенту список намеренно меняется: debugger-инструменты являются расширением, опасные операции отключены без явного разрешения, а профиль может оставить только выбранные имена.

ОбластьПримеры
Сессииidb_open, idb_batch_open, idb_list, idb_close, idb_save
Обзор и декомпиляцияsurvey_binary, decompile, disasm, analyze_function, analyze_component
Поиск и связиfind, find_bytes, search_text, xrefs_to, callees, callgraph, trace_data_flow
Постоянный кэшcache_status, refresh_cache, cache_entity_query, cache_xrefs, cache_callgraph_hotspots, cache_find_regex
Типы и стекdeclare_type, type_inspect, set_type, infer_types, stack_frame, declare_stack
Изменение базыrename, set_comments, define_func, define_code, patch_asm, make_data
Сигнатурыmake_signature, make_signature_for_function, make_signature_for_range, find_xref_signatures
Debugger-расширениеdbg_start, dbg_bps, dbg_regs, dbg_stacktrace, dbg_read, dbg_write

Настройка

Пул воркеров
uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion \
  idalib-mcp --stdio --max-workers 4
Параметр / переменнаяНазначение
--max-workers NМаксимум одновременно работающих баз; 0 — без лимита. По умолчанию 4.
IDA_MCP_MAX_WORKERSЗначение лимита по умолчанию из окружения.
IDA_MCP_OPEN_TIMEOUTМаксимальное время автоанализа при открытии в секундах. По умолчанию 1800.
IDA_MCP_LOAD_TIMEOUTМаксимальное время загрузки без автоанализа. По умолчанию 300.
Ограниченные профили

Оставить только выбранные инструменты:

idalib-mcp --stdio --profile profiles/readonly.txt
HTTP
idalib-mcp --host 127.0.0.1 --port 8745

GUI-мост:

ida-pro-mcp --transport http://127.0.0.1:8744/sse

Для установки GUI-плагина:

python -m pip install https://github.com/rison1337/ida-pro-mcp-fusion/archive/refs/heads/main.zip
ida-pro-mcp --install

После установки перезапустите IDA и MCP-клиент.

Безопасность

  • По умолчанию сервер слушает только loopback. Не открывайте его в недоверенную сеть.
  • Изменяющие и произвольные Python-инструменты помечены как unsafe и выключены по умолчанию.
  • py_eval, py_exec_file, debugger-команды и патчинг могут выполнять код или менять IDB.
  • Непроверенные бинарники анализируйте в той же изоляции, что и при ручном malware analysis.

Включить unsafe-инструменты можно явно:

idalib-mcp --stdio --unsafe

Решение проблем

uvx не найден

Установите uv командой python -m pip install uv, откройте новый терминал и проверьте uvx --version.

Несовместимая версия Python или IDA

Запустите idapyswitch, выберите Python 3.11+, затем снова выполните py-activate-idalib.py.

Ошибка о том, что нужен database

Вызовите idb_list() и передайте возвращённый session_id как database=. Пути и имена файлов вместо ID сессии не принимаются.

Достигнут лимит воркеров

Закройте неиспользуемую сессию через idb_close, увеличьте --max-workers или используйте close_after_cache=True.

Разработка

git clone https://github.com/rison1337/ida-pro-mcp-fusion.git
cd ida-pro-mcp-fusion
python -m pip install pytest jsonschema "mcp>=1.0" "tomli-w>=1.0"
python -m pytest -q tests

Для тестов, которым нужна сама IDA:

uv run ida-mcp-test tests/typed_fixture.elf -q

Новые инструменты находятся в src/ida_pro_mcp/ida_mcp/api_*.py и регистрируются через @tool. Тесты supervisor и lifecycle — в tests/.

Проект и авторство

Fusion Edition поддерживается rison1337.

Проект основан на MIT-кодовой базе mrexodia/ida-pro-mcp. Постоянный кэш и headless-оркестрация также используют идеи из QiuChenly/ida-pro-mcp-enhancement и winmin/ida-headless-mcp. Атрибуция сохранена в README и истории исходников; упаковка Fusion, cache-инструменты, batch workflow и lifecycle сессий поддерживаются в этом репозитории.

Лицензия

Проект распространяется по MIT License. IDA Pro и Hex-Rays — товарные знаки Hex-Rays SA и не входят в состав проекта.

コメント

MCP は初めてですか?

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

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