IDA Pro用のスタンドアロンMCPサーバープラグイン。
IDA Pro 9.x向けスタンドアロンMCP(Model Context Protocol)サーバープラグイン。IDAの解析機能をClaude DesktopなどのLLMクライアントに公開します。

action/format/direction パラメータを提供execute_on_main_thread() ラッパーIDASSISTMCP_ プレフィックス)hcli plugin install idassistmcp
これにより、プラグインとそのPython依存関係が自動的にインストールされます。
GitHub Releases から最新リリースzipをダウンロードし、IDAプラグインディレクトリに展開します。
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
zipを %APPDATA%\Hex-Rays\IDA Pro\plugins\ に展開します。
次に、IDAバンドルのPython(システムPythonではなく)を使用して依存関係をインストールします。
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssistMCP/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssistMCP\requirements.txt"
<IDA_INSTALL_DIR>はご使用のIDA Proインストールパスに置き換えてください。ヒント:
IDAUSR環境変数を使用してカスタムプラグインディレクトリを指定することもできます。
Claude Desktopの claude_desktop_config.json に以下を追加します。
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
IDASSISTMCP_ プレフィックス付きの環境変数で設定します。
| 変数 | デフォルト値 | 説明 |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | サーバーのバインドアドレス |
IDASSISTMCP_SERVER__PORT | 9080 | サーバーポート |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | トランスポートタイプ(sse または streamablehttp) |
IDASSISTMCP_DEBUG | false | デバッグモードを有効化 |
IDASSISTMCP_LOG_LEVEL | INFO | ログレベル |
| ツール | 説明 |
|---|---|
list_binaries | 現在読み込まれているバイナリを一覧表示 |
get_binary_info | バイナリの詳細メタデータ(アーキテクチャ、ハッシュ、セグメント) |
| ツール | 説明 |
|---|---|
get_code | 関数のコードを取得 — format: 'decompile'(擬似C)または 'disasm'(アセンブリ) |
analyze_function | 包括的な解析:メタデータ、CFG、呼び出し元/呼び出し先、逆コンパイル |
get_basic_blocks | CFGの基本ブロック(後続/先行ブロック付き) |
get_function_stack_layout | スタックフレームのレイアウト(ローカル変数、引数、保存レジスタ) |
| ツール | アクション | 説明 |
|---|---|---|
xrefs | direction: to/from/both, include_calls: bool | アドレスのxrefおよびオプションで呼び出し元/呼び出し先 |
| ツール | アクション | 説明 |
|---|---|---|
comments | action: get, set, list, remove | コメントの管理(通常、反復、関数) |
| ツール | アクション | 説明 |
|---|---|---|
variables | action: list, rename | ローカル変数の一覧表示、またはスコープ auto/local/global でローカル/グローバル変数の名前変更 |
| ツール | アクション / 説明 |
|---|---|
types | action: list, set, create_struct, create_enum — IDB型を管理 |
get_classes | 型ライブラリから構造体/クラス型を一覧表示 |
| ツール | 説明 |
|---|---|
get_functions | フィルタリングとページネーションによる全関数 |
search_functions_by_name | 名前パターンとサイズフィルターによる検索 |
get_function_by_name | 完全名での検索 |
get_function_by_address | アドレスでの検索 |
get_function_statistics | 集計統計(カウント、サイズ、トップ10) |
| ツール | 説明 |
|---|---|
rename_symbol | 任意のシンボル(関数またはデータ)の名前変更 |
batch_rename | 複数シンボルの一括名前変更 |
| ツール | 説明 |
|---|---|
get_imports | モジュールごとにグループ化されたインポートテーブル |
get_exports | エクスポートテーブル |
get_strings | ページネーション付き文字列テーブル |
get_segments | 権限付きメモリセグメント |
get_entry_points | すべてのバイナリエントリポイント |
| ツール | 説明 |
|---|---|
read_memory | アドレスから生バイトを読み取り |
get_data_at | アドレスから型付きデータを取得 |
search_bytes | バイナリバイトパターン検索 |
search_strings | ページネーション付き文字列検索 |
create_data_var | アドレスにデータ変数を定義(byte/word/dword/qword/float/ascii/C型) |
get_data_vars | 定義されたデータ変数(非コード項目)の一覧表示 |
| ツール | 説明 |
|---|---|
patch_bytes | IDB内の生バイトをパッチ |
assemble_code | アドレスにアセンブリ命令テキストをアセンブルし、オプションでパッチ |
export_program | パッチ済みバイナリまたはIDAデータベースをディスクにエクスポート |
| ツール | 説明 |
|---|---|
navigate_to | IDAカーソルをアドレスに移動 |
bookmarks | 統合ブックマーク管理 - アクション: list, set, remove |
get_current_address | カーソル位置のアドレスとコンテキストを取得 |
get_current_function | カーソル位置の関数情報を取得 |
| ツール | 説明 |
|---|---|
start_task | 非同期バックグラウンドタスクの開始 |
get_task_status | タスクの進行状況確認 |
cancel_task | 実行中のタスクをキャンセル |
list_tasks | すべての非同期タスクを一覧表示 |
IDAssistMCP/
├── idassistmcp_plugin.py # IDAプラグインエントリポイント
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # FastMCPサーバー + トランスポート
├── context.py # 単一バイナリIDAコンテキスト
├── tools.py # 41個のMCPツール(IDA API)
├── resources.py # 8個のMCPリソース
├── prompts.py # 7個のガイド付きワークフロープロンプト
├── config.py # Pydantic設定
├── cache.py # LRU解析キャッシュ
├── tasks.py # 非同期タスクマネージャー
├── logging.py # IDAロギングラッパー
├── utils.py # IDA固有ユーティリティ
└── ui/
└── tool_registry.py # UI用ツールカタログ
詳細はLICENSEファイルを参照してください。