アップデート一覧に戻る
New releaseAug 7, 2026

pyghidra-mcp v0.2.5

Python コマンドライン Ghidra MCP

共有

GitHub Workflow Status (with event) PyPI - Downloads

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

目次

はじめに

カテゴリ