
コードエージェント向けのマルチセッションIDALib MCPルーター。IDA互換のリバースエンジニアリングツールを使用して複数のバイナリを並行分析します。
1つのMCPエンドポイント。多数の独立したIDALibセッション。
軽量でエージェントファーストの制御層。IDA Pro MCPツールセットを用いたヘッドレスバイナリ解析のためのものです。
[!IMPORTANT] Pocket Disasmは独立したオープンソースプロジェクトです。Hex-Raysとの提携、推奨、スポンサー、公式製品ではありません。 IDA ProおよびIDALibはHex-Raysの製品であり、個別に有効なインストールとライセンスが必要です。Pocket DisasmはIDA、IDALib、またはその他のHex-Raysソフトウェアを配布しません。
Pocket Disasmは1つの公開MCPルーターを実行し、バイナリごとに独自のIDALibワーカーを割り当てます。コーディングエージェントは、ファイルごとに個別の対話型IDAウィンドウを起動することなく、解析セッションの作成、選択、検査、保存、終了を行うことができます。
このプロジェクトは、コアのMCP解析実装およびツールカタログとして、mrexodia/ida-pro-mcpの固定リビジョンを使用しています。Pocket Disasmは、その上流プロジェクトを基に、統一マルチセッションルーター、プロセス分離、エージェント統合、診断、ターミナルコントロールセンターを構築しています。
PowerShellで1つのコマンドを実行します:
irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1 | iex
その後、新しいターミナルを開いて実行します:
pocket
インストーラーは %LOCALAPPDATA%\PocketDisasm 以下に独立したPython環境を作成し、固定された依存関係をインストールし、ユーザーの PATH に pocket コマンドを追加し、ターミナルコントロールセンターを開きます。
ida-pro-mcp ツールカタログにルーティングされます。pocket を実行します。idalib.dll を含むディレクトリを指定します。デフォルトのエンドポイントは次のとおりです:
http://127.0.0.1:13339/mcp
ポートはTUIから変更できます。Pocket Disasmは以前に登録したすべてのMCP設定ファイルを更新し、必要に応じてルーターを再起動します。
エージェントはバイナリごとに専用のMCPサーバーを必要としません。共有エンドポイントを通じてセッションを作成しルーティングします:
idb_open(input_path="C:\\samples\\first.exe", session_id="first", wait=true)
idb_open(input_path="C:\\samples\\second.dll", session_id="second", wait=true)
decompile(addr="main", database="first")
survey_binary(database="second")
選択は現在のMCPクライアントにスコープすることもできます:
idb_select(database="first")
decompile(addr="main")
これにより、1つのモデルが複数のバイナリを管理したり、複数のエージェントが同じルーターを通じて、選択されたデータベースを共有せずに作業したりできます。
flowchart LR
A1["Coding agent A"] --> MCP["Pocket Disasm MCP<br/>127.0.0.1:13339/mcp"]
A2["Coding agent B"] --> MCP
A3["Coding agent N"] --> MCP
MCP --> S["Multi-session supervisor"]
S --> W1["IDALib worker<br/>binary A"]
S --> W2["IDALib worker<br/>binary B"]
S --> WN["IDALib worker<br/>binary N"]
アクティブなセッションはそれぞれ独自のプロセス、内部ポート、独立した解析ワークスペース、IDAデータベース、ワーカーログを持ちます。設定可能なワーカー数の上限により無制限なプロセス生成を防ぎます。デフォルトは8で、TUIでは1から128の値を受け付けます。
Pocket Disasmは通常のIDA MCPカタログに以下のツールを追加します:
survey_binary、lookup_funcs、func_query、find_bytes、decompile などの通常の解析ツールは、オプションの database 引数を受け付けます。省略した場合、Pocket DisasmはそのMCPクライアントによって選択されたセッションを使用します。
TUIは既存の設定ファイルに pocket-disasm MCPエントリのみをマージします。ファイル全体を置き換えることはありません。
同様の操作はCLIからも利用可能です:
pocket integrate codex claude cursor --scope global
pocket integrate claude cursor vscode --scope project --project-dir .
TUIは通常のインストールと制御をカバーします。CLIは自動化と診断のために引き続き使用できます:
すべてのオプションについては pocket <command> --help を実行してください。
Pocket Disasmはユーザー状態を以下の場所に保存します:
%LOCALAPPDATA%\PocketDisasm
重要なファイルは次のとおりです:
TUIで Inspect logs を選択するか、以下を実行します:
pocket logs
TUIは起動時に一度新しいバージョンを確認します。更新が利用可能な場合、アクションリストに Update Pocket Disasm が表示されます。アップデーターは設定を保持し、独立環境を更新し、TUIを再起動し、以前実行中だった場合はルーターをオンラインに戻します。
winget を使用してPython 3.12をインストールできます。Pocket DisasmにはIDA、IDALib、IDAライセンスは含まれません。これは独立したプロジェクトであり、Hex-Raysとの提携や推奨はありません。
$script = irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1
& ([scriptblock]::Create($script)) -Uninstall
エージェントのMCPエントリは意図的に自動削除されません。これにより、アンインストール中に関係のない設定が書き換えられることはありません。不要になった場合は、対応するエージェント設定ファイルから削除できます。
Pocket Disasmは MIT License の下でリリースされています。
| ツール | 目的 |
|---|
idb_open | ローカルバイナリ用の独立したセッションを作成 |
idb_list | セッション、状態、プロセス、現在の選択を一覧表示 |
idb_select | 現在のMCPクライアントのデフォルトセッションを選択 |
idb_health | ワーカーの起動とプロセスの健全性を読み取り |
idb_wait | IDAの自動解析とMCPの起動を待機 |
idb_save | 現在のIDAデータベースを保存 |
idb_logs | 1つのワーカーの最近の出力を読み取り |
idb_close | ワーカーを停止しリソースを解放 |
| エージェント | グローバル設定 | プロジェクト設定 |
|---|
| Codex | ~/.codex/config.toml | グローバルエンドポイントが使用されます |
| Claude Code | ~/.claude.json | .mcp.json |
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| VS Code | ユーザープロファイル mcp.json | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | グローバルエンドポイントが使用されます |
| コマンド | 説明 |
|---|
pocket | ターミナルコントロールセンターを開く |
pocket doctor | Python、IDA、IDALib、MCPの依存関係を検証 |
pocket start | バックグラウンドで統一ルーターを起動 |
pocket stop | ルーターとそのワーカーを停止 |
pocket restart | ルーターを再起動 |
pocket status | エンドポイントとデーモンの状態を表示 |
pocket logs | 最近の診断出力を表示 |
pocket port <port> | 登録済みエージェント設定のエンドポイントを変更 |
pocket config --max-workers <n> | 同時ワーカー数の上限を設定 |
pocket integrate <agents> | 1つ以上のコーディングエージェントを設定 |
| ファイル | 内容 |
|---|
config.json | IDAパス、エンドポイントポート、ワーカー数上限 |
integrations.json | Pocket Disasmで管理されるMCP設定ファイル |
events.log | 構造化されたライフサイクルイベントと例外トレースバック |
pocket-disasm.out.log | ルーターの標準出力 |
pocket-disasm.err.log | ルーターのエラー出力 |
sessions/<session>/worker.log | IDALibワーカーの永続的な出力 |
installer.log | インストールとアップグレードの記録 |
update.log | TUI内アップデーターの出力 |