clearbluejar/pyghidra-mcp

Python Command-Line Ghidra MCP

解決する課題

pyghidra-mcp は、強力なソフトウェアリバースエンジニアリング(SRE)スイートである Ghidra と AI エージェントおよび LLM との連携を可能にします。これにより、複雑なバイナリ解析ツールと LLM エコシステムの間のギャップが解消され、エージェントが人間による GUI 操作を介さずに、高度なリバースエンジニアリングタスクの自動化、セマンティックなコード検索、Ghidra プロジェクトの管理を行えるようになります。

仕組み

このプロジェクトは、pyghidrajpype を介して Ghidra の Program および FlatProgram API を Python に接続する Model Context Protocol (MCP) サーバーを実装しています。主に2つの動作モードを提供します:

  • Headless Mode: 自動化や CI パイプライン向けの CLI 駆動型アプローチ。
  • GUI Mode: Ghidra の GUI を起動し、MCP サーバーがライブプログラムの状態を共有して、同じ JVM 内で CodeBrowser を制御できるようにします。

ChromaDB をベクトル埋め込みに使用することで、デコンパイルされた関数、コメント、シンボルにわたるセマンティック検索を可能にします。また、ローカルホスト用の stdio や、共有の長時間実行プロジェクト用の streamable-http を含む、複数のトランスポートレイヤーをサポートしています。

対象ユーザー

  • セキュリティ研究者: AI エージェントを使用してバイナリのトリアージや、反復的なリバースエンジニアリングタスクを自動化したい方。
  • ソフトウェアエンジニア: バイナリ解析を CI/CD パイプラインに統合したい方。
  • AI エージェント開発者: コンパイル済みバイナリの深い構造的知識を必要とするツールを構築している方。

ハイライト

  • セマンティックコード検索: ベクトル埋め込みを使用して、擬似 C コードのファジー検索を実現。
  • エージェントに最適化: トークン使用量を最小限に抑えるため、限定的なツール説明と集中したデータ返却機能を備えています。
  • デュアルモード動作: 完全なヘッドレス自動化とライブ GUI 同期の両方をサポート。
  • バッチ操作: LLM のラウンドトリップを減らすため、一度の呼び出しで複数の関数のデコンパイルや相互参照のリスト表示が可能。
  • 柔軟なトランスポート: さまざまなクライアントのニーズに合わせて stdiostreamable-http、SSE をサポート。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト