Ghidra MCP Server




これが役に立ったなら、ぜひリポジトリに ⭐ スターを付けてください — 他の人が見つけやすくなります!
Ghidra MCP が時間の節約に役立っているなら、プロジェクトのスポンサーをご検討ください。単発・継続どちらの支援も、互換性アップデート、本番環境向けの堅牢化、ドキュメント、新しいツールの資金源となります。
Ghidra の強力なリバースエンジニアリング機能と、最新の AI ツールや自動化フレームワークを橋渡しする、本番環境対応の Model Context Protocol (MCP) サーバーです。253 個の MCP ツール、実戦で鍛えられた AI ワークフロー、そして利用可能な中で最も包括的な Ghidra-MCP 統合を提供します — 現在は P-code エミュレーション、ライブデバッガ統合、PCode グラフによるデータフロー解析も含みます。
なぜ Ghidra MCP なのか?
ほとんどの Ghidra MCP 実装は、少数の読み取り専用ツールを提供して終わりです。このプロジェクトは違います — デモとしてではなく、実際のバイナリに対して毎日使っているリバースエンジニアによって作られました。
- 253 個の MCP ツール — 競合実装の 3 倍以上。読み取り操作だけでなく、リネーム、型付け、コメント、構造体作成、スクリプト実行、P-code エミュレーション、ライブデバッグのための完全な書き込みアクセスを備えています。
- 実戦で鍛えられた AI ワークフロー — 数百の関数にわたって洗練された、実証済みのドキュメントワークフロー (V5)。ステップバイステップのプロンプト、ハンガリアン記法リファレンス、バッチ処理ガイド、孤立コードの発見機能を含みます。
- 本番グレードの信頼性 — アトミックトランザクション、バッチ操作 (API 呼び出しを 93% 削減)、設定可能なタイムアウト、優雅なエラー処理。サイレント障害はありません。
- バイナリ間のドキュメント転送 — SHA-256 関数ハッシュマッチングにより、バイナリのバージョン間でドキュメントを自動的に伝播します。一度ドキュメント化すれば、どこにでも適用できます。
- 完全な Ghidra Server 統合 — 共有 Ghidra サーバーへの接続、リポジトリ管理、バージョン管理、チェックアウト/チェックインワークフロー、マルチユーザーコラボレーション。
- ヘッドレスモードと GUI モード — Ghidra GUI の有無にかかわらず実行可能。CI/CD パイプラインや大規模な自動解析に対応した Docker 対応。
- 設計による意見の明確化 — v5.0 では、命名規則、型安全性、ドキュメント標準をツール層に移しました。AI エージェントと人間のエンジニアは、すべてのプロンプトにスタイルガイドを貼り付けることなく、一貫した出力を生成できます。
規約の強制
誰もが経験したことがあるでしょう。プロジェクトを始めて 6 か月後、同じコードベースに ProcessItem、process_items、handleItem、ItemProc を見つける — 同じことをする 4 つの関数が、共通の取り決めを持たない 4 つの異なるセッションやエンジニアによって命名されているのです。修正には必要以上に時間がかかり、問題はまた起こります。
v5.0 は、規約を「覚えておくべきこと」から、実際に強制できるツール層へと移しました。
| 階層 | 動作 | 例 |
|---|
| 自動修正 | サイレントに適用 | uint32 の count フィールド → 保存時に自動的に dwCount が接頭辞として付与される |
| 警告 | 変更は通るが、警告が返される | processData → 「名前は動詞を伴う PascalCase にすべきです: ProcessData」 |
| 拒否 | 説明付きで変更がブロックされる | undefined → undefined の型変更 → 「no-op は拒否されました、型は変更されていません」 |
AI エージェントにとって、これはすべてのセッション、すべてのモデル、すべての実行にわたって一貫した出力を意味します — すべてのプロンプトにスタイルガイドを貼り付ける必要はありません。ツールがルールを知っており、モデルは判断を下すだけで済みます。
チームにとって、これは「それは我々の命名規則ではない」というレビューコメントのカテゴリ全体を排除します。規約の裁定はコードレビューではなく、ツール内に留まります。
大規模なソロ作業にとって、analyze_function_completeness は 0~100% のスコアを提供し、正直に測定します。構造的な減点 (修正不可能なコンパイラの成果物) は実効スコアでは免除され、対数スケーリングにより 1 つの悪いカテゴリが他のすべてを埋め尽くすことを防ぎ、段階的なプレートコメント品質により、何が欠けているのか、なぜなのかを正確に把握できます。
🌟 機能
コア MCP 統合
- 完全な MCP 互換性 — Model Context Protocol の完全な実装
- 253 個の MCP ツール — バイナリ解析のあらゆる側面をカバーする包括的な API サーフェス
- 本番環境対応の信頼性 — アトミックトランザクション、バッチ操作、設定可能なタイムアウト
- リアルタイム解析 — Ghidra の解析エンジンとのライブ統合
互換性に関する注意: MCP ツール名は GitHub Copilot CLI および
CAPI 検証のために正規化されています。公開されるツール名は小文字、
数字、アンダースコア、ハイフンのみを使用します。/debugger/status の
ようなネストされた HTTP パスは、静的ブリッジツールとの衝突を避ける
必要がある場合、debugger_status_2 のような名前として公開されます。
バイナリ解析機能
- 関数解析 — 逆コンパイル、コールグラフ、クロスリファレンス、完全性スコアリング
- データフロー解析 — 任意の変数またはレジスタからの PCode グラフ値伝播 (前方 / 後方)
- データ構造の発見 — フィールド解析と命名提案を伴う struct/union/enum の作成
- 文字列抽出 — 正規表現検索、品質フィルタリング、文字列を起点とした関数発見
- インポート/エクスポート解析 — シンボルテーブル、外部ロケーション、序数インポートの解決
- メモリとデータの検査 — 生メモリ読み取り、バイトパターン検索、配列境界の検出
- バイナリ間ドキュメント — 関数ハッシュマッチングとバージョン間のドキュメント伝播
動的解析 (v5.4.0)
- P-code エミュレーション — Ghidra の
EmulatorHelper を介して任意の関数を単独で実行。API ハッシュ解決をミリ秒単位でブルートフォース
- ライブデバッガ統合 — Ghidra の TraceRmi フレームワーク上の 17 個の Java エンドポイント + 22 個の Python ブリッジツール (Windows PE では dbgeng、それ以外では gdb/lldb): アタッチ、ステップ実行、ブレークポイント、レジスタ、メモリ読み取り、非破壊的な関数トレース、ASLR 対応の静的↔動的アドレス変換
AI を活用したリバースエンジニアリングワークフロー
- 関数ドキュメントワークフロー V5 — ハンガリアン記法、型監査、自動検証スコアリングを伴う、完全な関数ドキュメント化のための 7 ステッププロセス
- バッチドキュメント — 複数の関数を同時にドキュメント化するための並列サブエージェントディスパッチ
- 孤立コードの発見 — 既知のコード間のギャップにある未発見の関数を自動スキャナが発見
- データ型の調査 — 構造体発見とフィールド解析のための体系的なワークフロー
- バージョン間マッチング — 異なるバイナリバージョン間でのハッシュベースの関数マッチング
開発と自動化
- Ghidra スクリプト管理 — MCP 経由で Ghidra スクリプトを完全に作成、実行、更新、削除
- マルチプログラムサポート — 複数の開いているプログラム間の切り替えと比較
- バッチ操作 — 一括リネーム、コメント、型付け、ラベル管理 (API 呼び出しを 93% 削減)
- ヘッドレスサーバー — Ghidra GUI なしでの完全な解析 — Docker と CI/CD に対応
- プロジェクトとバージョン管理 — プロジェクトの作成、ファイル管理、Ghidra Server 統合
- 解析制御 — Ghidra アナライザをプログラムで一覧表示、設定、トリガー
🚀 クイックスタート
前提条件
- Java 21 LTS (OpenJDK 推奨)
- Apache Maven 3.9+
- Ghidra 12.1.3 (または互換バージョン)
- Python 3.10+ と uv (推奨) または pip + venv
共有 Ghidra Server のユーザーへ: Ghidra 12.1.3 クライアントは、
12.1、12.0.5、またはそれ以降の互換バージョンの Ghidra Server を
必要とします。12.1 クライアントからこのプラグインを使用する前に、
サーバーをアップグレードしてください。
Ghidra 12.1.3 は Jython をオプション拡張機能として同梱しています。
Java スクリプトはデフォルトで動作しますが、ghidra_scripts/ 内の
.py スクリプトは File > Install Extensions から Jython 拡張機能を
インストールし、Ghidra を再起動する必要があります。
インストール
すべてのプラットフォームで推奨: python -m tools.setup を直接使用してください。
ensure-prereqs はランタイムの Python 要件に加えて、ローカル Maven リポジトリに必要な Ghidra JAR をインストールします。
deploy はビルド出力をコピーし、ユーザープロファイル拡張機能をインストールし、Ghidra ユーザー設定にパッチを適用します。
- リポジトリをクローンします: ```bash
git clone https://github.com/bethington/ghidra-mcp.git
cd ghidra-mcp
- 推奨: まず環境プリフライトを実行してください: ```text
python -m tools.setup preflight --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
- Ghidra をビルドしてデプロイする: ```text
python -m tools.setup ensure-prereqs --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
python -m tools.setup build
python -m tools.setup deploy --ghidra-path "F:\ghidra_12.1.3_PUBLIC"
deploy は必要に応じて既に実行中の一致する Ghidra インスタンスを保存/終了し、拡張機能をインストールし、Ghidra を起動し、MCP のヘルスチェックを待機して、スキーマのスモークテストを実行します。