概要
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実装・標準化推進