
pyghidra-mcp v0.2.5
Python コマンドライン Ghidra MCP
PyGhidra-MCP - Ghidra Model Context Protocol サーバー
概要
pyghidra-mcp は、堅牢なソフトウェアリバースエンジニアリング(SRE)スイートである Ghidra の完全な分析能力を、インテリジェントエージェントと LLM ベースのツール群の世界に持ち込むコマンドライン Model Context Protocol(MCP)サーバーです。
pyghidra と jpype を使用して Ghidra の ProgramAPI と FlatProgramAPI を Python に橋渡しし、その機能を Model Context Protocol 経由で公開します。
MCP は、言語モデル、開発ツール(VS Code など)、自律エージェントが構造化されたコンテキストにアクセスし、ツールを呼び出し、インテリジェントに協働することを可能にする統一インターフェースです。MCP は、強力な分析ツールと LLM エコシステムをつなぐ架け橋と考えてください。
pyghidra-mcp を使えば、Ghidra はインテリジェントなバックエンドとなり、コンテキスト豊富なクエリに応答し、深いリバースエンジニアリングタスクを自動化し、AI 支援ワークフローに統合する準備が整います。
pyghidra-mcp は現在、2 つの動作モードをサポートしています:
- CLI 駆動の分析と自動化のための
headlessモード --guiモード。pyghidra-mcpを通じて Ghidra を起動し、実行中の GUI とライブなプログラム状態を共有します
[!NOTE] このベータプロジェクトは活発に開発中です。フィードバック、バグ報告、機能リクエスト、コードをぜひお寄せください。
また別の Ghidra MCP なのか?
はい、オリジナルの ghidra-mcp は素晴らしいものです。しかし pyghidra-mcp は異なるアプローチを取っています:
- 🐍 ヘッドレスファースト、GUI 対応 – 合理化された自動化のために完全に CLI 経由で実行するか、ライブな GUI ナビゲーションと編集が必要な場合は
--guiで Ghidra を起動できます。 - 🔁 自動化のために設計 – LLM、CI パイプライン、再現可能な動作を必要とするツール群との統合に最適です。
- ✅ CI/CD フレンドリー – クライアントとサーバーの両方のセッションに対して堅牢なユニットテストと統合テストを備えて構築されています。
- 🚀 迅速な起動 – 非同期起動により、バイナリがバックグラウンドで分析されている間もサーバーはリクエストの処理を開始できます。最小限のセットアップで高速なコマンドライン起動をサポートします。
- 📦 プロジェクト全体の分析 – Ghidra プロジェクト内のすべてのバイナリを並行してリバースエンジニアリングできます
- 🤖 エージェント対応 – インテリジェントなエージェント駆動ワークフローと大規模なリバースエンジニアリング自動化のために構築されています。
- 🔍 セマンティックコード検索 – ベクトル埋め込み(ChromaDB 経由)を使用して、デコンパイルされた関数、コメント、シンボル全体にわたる高速でファジーな検索を可能にします—疑似 C の探索やエージェント駆動のトリアージに最適です。
このプロジェクトは、ローカル開発、ヘッドレス環境、テスト可能なワークフローに最適化された Python ファーストの体験を提供します。
セットアップ図
各部分の接続方法
flowchart LR
subgraph Clients["Clients"]
Agent["MCP host / agent"]
Cli["pyghidra-mcp-cli"]
User["Ghidra user"]
end
subgraph Process["pyghidra-mcp process"]
Transport["streamable HTTP (recommended)<br/>stdio (local fallback)"]
Tools["MCP tools"]
Context["PyGhidra context"]
end
Project["Ghidra project<br/>.gpr / .rep"]
Artifacts["MCP artifacts<br/>ChromaDB + GZF cache"]
Gui["Ghidra GUI / CodeBrowser<br/>only with --gui"]
Agent -->|"HTTP (recommended)"| Transport
Cli -->|"HTTP only"| Transport
Transport --> Tools
Tools --> Context
Context --> Project
Context --> Artifacts
Context -.-> Gui
User -.-> Gui
Gui -.-> Project
モードの選択
flowchart TD
Start["What do you need?"]
Start --> Headless["Agent or automation"]
Start --> GuiNeed["Live Ghidra GUI control"]
Start --> Terminal["Interactive terminal client"]
Headless --> Http["pyghidra-mcp<br/>--transport streamable-http"]
GuiNeed --> GuiMode["pyghidra-mcp --gui<br/>--transport streamable-http<br/>--project-path project.gpr"]
Terminal --> HttpServer["Start pyghidra-mcp<br/>--transport streamable-http"]
HttpServer --> CliMode["Run pyghidra-mcp-cli commands"]
- Headless MCP:
streamable-httpを使用します。Ghidra とそのプロジェクトを単一の長時間稼働サーバーとして維持し、MCP ホストと CLI クライアントの両方で動作します。 - GUI モード:
pyghidra-mcpは Ghidra を起動し、プロジェクトを開き、同じ JVM 内で CodeBrowser を操作する追加ツールを公開します。 - CLI クライアント:
pyghidra-mcp-cliは HTTP クライアントです。まずstreamable-httpサーバーを起動し、その後、実行中のサーバーに対してターミナルコマンドを発行します。 - stdio: HTTP エンドポイントに接続できない MCP ホスト専用にこれを保持します。
詳細なアーキテクチャとツールサーフェス
flowchart TD
subgraph Clients
Agent["LLM / MCP host"]
Cli["pyghidra-mcp-cli"]
Automation["scripts and CI"]
end
subgraph Transports
Stdio["stdio"]
Http["streamable-http"]
Sse["sse legacy"]
end
subgraph Server["pyghidra-mcp server"]
McpServer["MCPServer tool server"]
Context["PyGhidra context"]
Indexing["background analysis and Chroma indexing"]
subgraph Tools["MCP tools"]
Analysis["decompile, xrefs, bytes, callgraph"]
Search["symbols, strings, code"]
ProjectOps["import, delete, metadata, list binaries"]
Edits["rename function, rename variable, set type, set prototype, set comment"]
GuiOnly["GUI only: open program, goto, list open programs, set current program"]
end
end
subgraph GhidraRuntime["Ghidra runtime"]
PyGhidra["pyghidra"]
Jpype["JPype shared JVM"]
Project["Ghidra project"]
Programs["program databases"]
CodeBrowser["Ghidra GUI / CodeBrowser"]
end
Agent --> Http
Automation --> Http
Automation --> Sse
Cli --> Http
Stdio --> McpServer
Http --> McpServer
Sse --> McpServer
McpServer --> Context
Context --> PyGhidra
PyGhidra --> Jpype
Jpype --> Project
Project --> Programs
Context --> Indexing
Indexing --> Search
McpServer --> Tools
Tools --> Context
GuiOnly -.-> CodeBrowser
Context -.-> CodeBrowser
目次
- PyGhidra-MCP - Ghidra Model Context Protocol サーバー