
Python コマンドライン Ghidra MCP
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 つの動作モードをサポートしています。
headless モードpyghidra-mcp を通じて Ghidra を起動し、実行中の GUI とライブなプログラム状態を共有する --gui モード[!NOTE] このベータプロジェクトは活発に開発中です。フィードバック、バグ報告、機能リクエスト、コードをお待ちしています。
ええ、元の ghidra-mcp は素晴らしいです。しかし pyghidra-mcp は異なるアプローチを取ります:
--gui で Ghidra を起動します。このプロジェクトは、ローカル開発、ヘッドレス環境、テスト可能なワークフロー向けに最適化された Python ファーストのエクスペリエンスを提供します。
flowchart LR subgraph Clients["Clients"] Agent["MCP host / agent"] Cli["pyghidra-mcp-cli"] User["Ghidra user"] end
subgraph Process["pyghidra-mcp process"]
Transport["stdio or streamable-http"]
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 -->|"stdio or HTTP"| Transport
Cli -->|"HTTP only"| Transport
Transport --> Tools
Tools --> Context
Context --> Project
Context --> Artifacts
Context -.-> Gui
User -.-> Gui
Gui -.-> Project
### モードの選択```mermaid
flowchart TD
Start["What do you need?"]
Start --> Headless["Agent or automation only"]
Start --> GuiNeed["Live Ghidra GUI control"]
Start --> Terminal["Interactive terminal client"]
Headless --> Stdio["pyghidra-mcp -t stdio<br/>or -t 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"]
stdioを使用し、複数のクライアントが同じ長時間実行されるGhidraプロジェクトを必要とする場合はstreamable-httpを使用します。pyghidra-mcpはGhidraを起動し、プロジェクトを開き、同じJVM内のCodeBrowserを制御する追加ツールを公開します。pyghidra-mcp-cliはHTTPクライアントです。最初にstreamable-httpサーバーを起動し、その実行中のサーバーに対してターミナルコマンドを発行します。subgraph Transports
Stdio["stdio"]
Http["streamable-http"]
Sse["sse legacy"]
end
subgraph Server["pyghidra-mcp server"]
FastMcp["FastMCP 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 --> Stdio
Agent --> Http
Automation --> Stdio
Automation --> Http
Automation --> Sse
Cli --> Http
Stdio --> FastMcp
Http --> FastMcp
Sse --> FastMcp
FastMcp --> Context
Context --> PyGhidra
PyGhidra --> Jpype
Jpype --> Project
Project --> Programs
Context --> Indexing
Indexing --> Search
FastMcp --> Tools
Tools --> Context
GuiOnly -.-> CodeBrowser
Context -.-> CodeBrowser
</details>
## 目次
- [PyGhidra-MCP - Ghidra Model Context Protocol Server](#pyghidra-mcp---ghidra-model-context-protocol-server)
- [概要](#overview)
- [また別のGhidra MCP?](#yet-another-ghidra-mcp)
- [セットアップ図](#setup-diagrams)
- [構成要素の接続方法](#how-the-pieces-connect)
- [モードの選択](#choosing-a-mode)
- [目次](#contents)
- [はじめに](#getting-started)
- [エージェント向け最適化](#optimized-for-agents)
- [CLIクライアント](#cli-client)
- [インストール](#installation)
- [CLIでのクイックスタート](#quick-start-with-cli)
- [プロジェクトの作成、管理、既存プロジェクトを開く](#project-creation-management-and-opening-existing-projects)
- [新規プロジェクトの作成](#creating-new-projects)
- [自己完結型プロジェクト構造](#self-contained-project-structure)
- [基本的なプロジェクト作成](#basic-project-creation)
- [カスタムプロジェクト作成](#custom-project-creation)
- [複数の関連プロジェクトの作成](#creating-multiple-related-projects)
- [既存のGhidraプロジェクトを開く](#opening-existing-ghidra-projects)
- [.gprファイルで開く](#opening-by-gpr-file)
- [GUIモード](#gui-mode)
- [起動時のデフォルトと大規模プロジェクト](#startup-defaults-and-large-projects)
- [開発](#development)
- [セットアップ](#setup)
- [テストと品質](#testing-and-quality)
- [API](#api)
- [ツール](#tools)
- [バッチ操作](#batch-operations)
- [読み取り/解析ツール](#read--analysis-tools)
- [プロジェクト操作](#project-operations)
- [編集/変更ツール](#edit--mutation-tools)
- [GUI制御ツール(`--gui`のみ)](#gui-control-tools---gui-only)
- [使用方法](#usage)
- [Dockerでのバイナリマッピング](#mapping-binaries-with-docker)
- [OpenWeb-UIとMCPOでの使用](#using-with-openweb-ui-and-mcpo)
- [`uvx` を使用](#with-uvx)
- [Docker を使用](#with-docker)
- [標準入出力(stdio)](#standard-inputoutput-stdio)
- [Python](#python)
- [Docker](#docker)
- [Streamable HTTP](#streamable-http)
- [Python](#python-1)
- [Docker](#docker-1)
- [サーバー送信イベント(SSE)](#server-sent-events-sse)
- [Python](#python-2)
- [Docker](#docker-2)
- [インテグレーション](#integrations)
- [Claude Desktop](#claude-desktop)
- [インスピレーション](#inspiration)
- [コントリビュート、コミュニティ、ソースからの実行](#contributing-community-and-running-from-source)
- [コントリビューターのワークフロー](#contributor-workflow)
## はじめに