概要
Ghidra MCP Server は、Ghidraのリバースエンジニアリング機能とAIツール・自動化フレームワークを連携するための 生産環境対応MCPサーバ。 110以上のMCPツール を提供し、バイナリ解析・自動化・スクリプト管理など多彩なAPIを実装。 Java 21 LTS、Maven 3.9+、Ghidra 12.0.2、Python 3.8+ が必要。 バッチ処理・原子トランザクション・リアルタイム解析 など高信頼性と効率性を実現。 APIリファレンス・導入手順・開発ガイド・貢献方法 も充実。
Ghidra MCP Server 概要
- Ghidra の強力なリバースエンジニアリング機能と AIツール・自動化基盤 の橋渡し役
- Model Context Protocol (MCP) 110種以上のAPIをフル実装
- 生産環境対応 :バッチ処理・原子トランザクション・高信頼性
- リアルタイム解析 :Ghidraの解析エンジンとライブ連携
- クロスバイナリドキュメント化 :関数ハッシュによるバージョン横断的なドキュメント同期
主な機能
- 関数解析 :デコンパイル、コールグラフ、クロスリファレンス
- データ構造抽出 :構造体・共用体・列挙体の自動生成
- ストリング抽出 :詳細な文字列解析・分類
- インポート/エクスポート解析 :シンボルテーブル・依存ライブラリ可視化
- メモリマッピング :バイナリ全体のメモリレイアウト記録
- 自動化開発サイクル :ビルド・テスト・デプロイ・検証のパイプライン
- Ghidraスクリプト管理 :作成・実行・管理のMCP経由自動化
- マルチプログラム対応 :複数バイナリの切替・比較
- バッチ操作 :一括リネーム・コメント・型付け
導入手順
前提条件
- Java 21 LTS (OpenJDK推奨)
- Apache Maven 3.9+
- Ghidra 12.0.2 (または互換バージョン)
- Python 3.8+ (pip必須)
インストール手順
- リポジトリをクローン
git clone https://github.com/bethington/ghidra-mcp.git - ディレクトリ移動
cd ghidra-mcp - Python依存パッケージのインストール
pip install -r requirements.txt - Ghidraライブラリのコピー
- Windows:
copy-ghidra-libs.bat "C:\path\to\ghidra_12.0.2_PUBLIC" - Linux/Mac: 手動コピー(必要なJARは14個)
- Windows:
- プラグインのビルド
mvn clean package assembly:single -DskipTests - Ghidraへのデプロイ
- Windows:
.\deploy-to-ghidra.ps1 - 手動:
target\GhidraMCP-2.0.0.zipをGhidraのExtensionsフォルダへコピー
- Windows:
- リポジトリをクローン
基本的な使い方
- Stdioトランスポート(AIツール推奨)
python bridge_mcp_ghidra.py - SSEトランスポート(Web/HTTPクライアント向け)
python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081 - Ghidra起動後、バイナリをロードし
Tools > GhidraMCP > Start MCP Serverデフォルトでhttp://127.0.0.1:8080/でサーバ起動
- Stdioトランスポート(AIツール推奨)
パフォーマンス・運用実績
- MCPツール数 :110種フル実装
- 速度 :ほとんどの操作がサブ秒応答
- 効率性 :バッチ処理でAPIコールを93%削減
- 信頼性 :全処理が原子トランザクションで実施
- デプロイ :バージョン管理対応の自動デプロイスクリプト
主なAPIリファレンス抜粋
コア操作
check_connection:接続確認get_metadata:プログラムメタデータ取得get_version:サーババージョン情報get_entry_points:エントリポイント一覧
関数解析
list_functions:関数一覧(ページネート)decompile_function:関数デコンパイル(C擬似コード)get_function_callers:呼び出し元取得get_function_call_graph:関数関係グラフ
メモリ・データ
list_segments:メモリセグメント一覧disassemble_function:関数の逆アセンブルget_xrefs_to/from:クロスリファレンス取得
クロスバイナリドキュメント
get_function_hash:関数ハッシュ取得apply_function_documentation:ドキュメント一括適用
データ型・構造体
list_data_types:利用可能なデータ型一覧create_struct:構造体作成・フィールド追加/修正/削除
シンボル・ラベル
list_imports/exports:インポート/エクスポートシンボル一覧create_label/batch_create_labels:ラベル作成・一括作成
リネーム・ドキュメント
rename_function/rename_function_by_address:関数リネームset_decompiler_comment/set_disassembly_comment:コメント設定
型システム
set_function_prototype:関数シグネチャ設定set_local_variable_type:ローカル変数型設定
Ghidraスクリプト管理
list_scripts/run_script:スクリプト一覧・実行save_ghidra_script/update_ghidra_script:スクリプト保存・更新
マルチプログラム管理
list_open_programs:開いているプログラム一覧switch_program:アクティブプログラム切替compare_programs_documentation:ドキュメント比較
解析ツール
find_next_undefined_function:未定義関数検索batch_string_anchor_report:文字列アンカー解析search_byte_patterns:バイトパターン検索
アーキテクチャ
bridge_mcp_ghidra.py :MCPプロトコルをHTTPコールに変換するPythonサーバ
GhidraMCP.jar :Ghidra解析機能をHTTP経由で公開するプラグイン
ghidra_scripts/ :70種以上の自動化スクリプト
標準構成
- AI/Automation Tools(Claude等) ⇔ MCP Bridge(bridge_mcp_ghidra.py) ⇔ Ghidra Plugin(GhidraMCP.jar)
- 通信:MCPプロトコル(stdio/SSE)、HTTP REST、Ghidra API(localhost:8080)
開発・ビルド・構成
ビルド
mvn clean package assembly:single -DskipTests- デプロイ:
.\deploy-to-ghidra.ps1
プロジェクト構成
bridge_mcp_ghidra.py:MCPサーバ(Python)src/main/java/:Ghidraプラグイン(Java)lib/:Ghidraライブラリ依存(14JAR/約37MB)ghidra_scripts/:自動化スクリプトdocs/:ドキュメント・AIプロンプトexamples/:使用例scripts/:ビルド/ユーティリティスクリプト
Ghidraライブラリ依存
- Windows:
copy-ghidra-libs.bat "C:\path\to\ghidra_12.0.2_PUBLIC" - 必須JAR例:Base.jar、Decompiler.jar、PDB.jar、FunctionID.jar、他10種
- Windows:
ドキュメント・貢献
コアドキュメント
- Documentation Index、プロジェクト構成、命名規則、AIワークフロープロンプト
- リリース履歴(CHANGELOG.md、releases/)
貢献方法
- リポジトリをフォーク
- フィーチャーブランチ作成
- ビルド・テスト
- ドキュメント更新
- プルリクエスト作成
ライセンス・運用状況
- ライセンス :Apache License 2.0(詳細はLICENSE参照)
- 運用実績
- バージョン:2.0.0
- MCPツール:110種フル実装
- コンパイル成功率:100%
- バッチ効率:APIコール93%削減
- Ghidraスクリプト:70種以上
- ドキュメント:AIプロンプト含む包括的内容
- リリースノート:CHANGELOG.md参照
謝辞
- Ghidra Team :優れたリバースエンジニアリングプラットフォームの提供
- Model Context Protocolコミュニティ :MCP実装・標準化推進
こんにちはHN、複数のバージョンにわたるソフトウェアのリバースエンジニアリングは本当に面倒だから、これを作ったんだ。バージョン1.07で関数に注釈を付けるのに何時間もかけたのに、1.08が出たらすべてのアドレスがずれて、せっかくの努力が無駄になる。核心的なアイデアは、正規化された関数ハッシュシステムだよ。関数を論理構造—ニーモニック、オペランドのカテゴリ、制御フロー—でハッシュ化するんだ。生のバイトや絶対アドレスじゃなくてね。バイナリが再コンパイルされたり、リベースされたりしても、同じ関数は同じハッシュを生成する。だから、すべてのドキュメント(名前、型、コメント)が自動的に転送されるんだ。それに、110のツールを備えた完全なMCPブリッジもあるよ。デコンパイル、逆アセンブル、クロスリファレンス、注釈、バッチ分析、ヘッドレス/Dockerデプロイメントができる。ClaudeやClaude Code、またはMCP準拠のクライアントとも統合できる。参考までに、最も人気のあるGhidra MCPサーバー(LaurieWiredの、7K以上のスター)は約15のツールしかない。このプロジェクトのフォークとして始まったけど、28,600行のかなり異なるコードに成長したんだ。アーキテクチャは、Java Ghidraプラグイン(22K LOC)→ Ghidra内にHTTPサーバーを埋め込む、Python MCPブリッジ(6.5K LOC)→ バッチ最適化のある110のツール、任意のMCPクライアント→ Claude、スクリプト、CIパイプライン。ハッシングはDiablo IIで検証したよ—数十のパッチバージョンがあって、それぞれ異なるベースアドレスでDLLを再構築する。ハッシュレジストリには154K以上のエントリーがあって、1,300以上の関数注釈を自動的に次のバージョンに伝播できる。ヘッドレスモードはDocker(docker compose up)でバッチ処理とCI統合のために動作するから、GUIは不要だよ。v2.0.0では、ローカルホスト専用のバインディング(セキュリティ)、設定可能なタイムアウト、ラベル削除ツール、.envベースの設定が追加された。ハッシングアプローチやMCPプロトコルの設計決定、これが現代のREワークフローにどうフィットするかについて話すのは大歓迎だよ。