ghidraMCP について
ghidraMCP は、LLM が Ghidra を使ってアプリケーションをリバースエンジニアリングできるようにする MCP サーバーです。Ghidra プラグインと Python 製の MCP クライアントで構成され、リバースエンジニアリングやセキュリティ研究を行う人を対象としています。
主な機能
- 01Ghidra 内でのバイナリの逆コンパイルと解析
- 02メソッドやデータの自動リネーム
- 03メソッド、クラス、インポート、エクスポートの一覧表示
- 04Ghidra GUI を使わないヘッドレス解析モード
活用シーン
- 01LLM によるクローズドソースのバイナリ解析の支援
- 02MCP クライアントからの Ghidra の逆コンパイル結果とシンボル情報の参照
MCP 対応
ghidraMCP は MCP サーバーとして動作し、Ghidra の中核機能をツールとして MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ghidraMCP
ghidraMCP は、LLM がアプリケーションを自律的にリバースエンジニアリングできるようにする Model Context Protocol サーバーです。Ghidra のコア機能から多数のツールを MCP クライアントに提供します。
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
機能
MCP サーバー + Ghidra プラグイン
- Ghidra でバイナリを逆コンパイルして分析します
- メソッドとデータの名前を自動的に変更します
- メソッド、クラス、インポート、エクスポートを一覧表示します
インストール
前提条件
- Ghidra 12.1.4 をインストールします
- uv をインストールします(または Python 3.10 以降で
pip install git+https://github.com/LaurieWired/GhidraMCPを実行し、以下のコマンドとしてghidra-mcpを使用します)
Ghidra
まず、このリポジトリから最新のリリースをダウンロードします。これには Ghidra プラグインと Python MCP クライアントが含まれています。その後、プラグインを Ghidra に直接インポートできます。
- Ghidra を起動します
File->Install Extensionsを選択します+ボタンをクリックします- ダウンロードしたリリースから
ghidra_12.1.4_PUBLIC_<date>_GhidraMCP.zipを選択します - Ghidra を再起動します
File->Configure->Developerで GhidraMCPPlugin が有効になっていることを確認します- 任意:
Edit->Tool Options->GhidraMCP HTTP Serverから Ghidra のポートを設定します
インストール手順の動画:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
MCP クライアント
理論上、どの MCP クライアントでも ghidraMCP を使用できます。ほとんどのクライアントは、次のような JSON 設定を受け付けます。
{
"mcpServers": {
"ghidra": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
サーバーの IP とポートは設定可能で、対象の Ghidra インスタンスを指すように設定します。設定しない場合、どちらもデフォルトで localhost:8080 になります。
コマンドを起動する代わりに URL に接続するクライアントでは、まず MCP サーバーを自分で起動します。
uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/
次に、クライアントで http://127.0.0.1:8081/mcp をリモートサーバーとして追加します。
例 1:VS Code
コマンドパレットから MCP: Add Server を実行するか、ワークスペースの .vscode/mcp.json に次の内容を追加します。
{
"servers": {
"ghidra": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
例 2:Claude Code
次のコマンドを実行します。
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/
ヘッドレス(Ghidra GUI なし)
ghidra-mcp は PyGhidra を使って、Ghidra GUI を起動せずにバイナリをインポートして分析することもできます。Python 3.10~3.13、Ghidra に GhidraMCP 拡張機能をインストールしていること(または --extension-jar /path/to/GhidraMCP.jar)、および GHIDRA_INSTALL_DIR が Ghidra 12.1.4 のディレクトリに設定されていることが必要です。
uvx --python 3.13 --from "ghidra-mcp[headless] @ git+https://github.com/LaurieWired/GhidraMCP" ghidra-mcp --headless --binary /path/to/target
上記のクライアント設定と同じコマンドと引数を使用します。実行間で Ghidra プロジェクトを保持し(変更を保存する)には、--project DIR を追加します。macOS では、Ghidra のディレクトリから support/gradle/gradlew buildNatives を実行して、Ghidra のデコンパイラーを一度ビルドしてください。
ソースからビルドする
GHIDRA_INSTALL_DIRに Ghidra 12.1.4 のディレクトリを設定します- 次のコマンドを実行して、Gradle(Java 21)で拡張機能をビルドします。
cd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension
生成された extension/dist/ 内の zip ファイルには、ビルド済みの Ghidra プラグインとそのリソースが含まれます。Ghidra が新しい拡張機能を認識するには、次のファイルが必要です。
- lib/GhidraMCP.jar
- extension.properties
- Module.manifest
Python MCP サーバーは、チェックアウトしたディレクトリから uv run ghidra-mcp で実行でき、uv run pytest でテストできます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。