العودة إلى التحديثات
New releaseAug 3, 2026

pyghidra-mcp v0.2.4

سطر أوامر بايثون Ghidra MCP

مشاركة

GitHub Workflow Status (with event) PyPI - Downloads

PyGhidra-MCP - خادم بروتوكول سياق النموذج (MCP) لـ Ghidra

نظرة عامة

pyghidra-mcp هو خادم بروتوكول سياق النموذج (MCP) يعمل من سطر الأوامر، يجلب القوة التحليلية الكاملة لـ Ghidra، وهي مجموعة قوية لهندسة البرمجيات العكسية (SRE)، إلى عالم الوكلاء الأذكياء والأدوات القائمة على نماذج اللغة الكبيرة (LLM). يعمل كجسر بين ProgramAPI و FlatProgramAPI الخاصين بـ Ghidra إلى بايثون باستخدام pyghidra و jpype، ثم يعرض هذه الوظائف عبر بروتوكول سياق النموذج.

MCP هو واجهة موحدة تسمح لنماذج اللغة وأدوات التطوير (مثل VS Code) والوكلاء المستقلين بالوصول إلى سياق منظم، واستدعاء الأدوات، والتعاون بذكاء. فكر في MCP على أنه الجسر بين أدوات التحليل القوية ونظام LLM البيئي.

مع pyghidra-mcp، يصبح Ghidra خلفية ذكية - جاهزة للاستجابة لاستعلامات غنية بالسياق، وأتمتة مهام هندسة عكسية عميقة، والتكامل مع سير العمل المعزز بالذكاء الاصطناعي.

يدعم pyghidra-mcp الآن وضعين للتشغيل:

  • وضع headless للتحليل والأتمتة عبر CLI
  • وضع --gui، الذي يطلق Ghidra عبر pyghidra-mcp ويشارك حالة البرنامج الحية مع واجهة المستخدم الرسومية قيد التشغيل

[!ملاحظة] هذا المشروع التجريبي قيد التطوير النشط. نحن نرحب بتعليقاتك، وتقارير الأخطاء، وطلبات الميزات، والمساهمات البرمجية.

MCP آخر لـ Ghidra؟

نعم، ghidra-mcp الأصلي رائع. لكن pyghidra-mcp يتبع نهجًا مختلفًا:

  • 🐍 بدون واجهة رسومية أولاً، مع قدرة على الواجهة – يعمل بالكامل عبر CLI لأتمتة انسيابية، أو قم بإطلاق Ghidra باستخدام --gui عندما تحتاج إلى تنقل وتحرير حي في الواجهة.
  • 🔁 مُصمم للأتمتة – مثالي للتكامل مع LLMs وخطوط أنابيب CI والأدوات التي تحتاج سلوكًا متكررًا.
  • ✅ متوافق مع CI/CD – مبني على اختبارات وحدة واختبارات تكامل قوية لكل من جلسات العميل والخادم.
  • 🚀 بدء تشغيل سريع – يسمح بدء التشغيل غير المتزامن للخادم ببدء معالجة الطلبات بينما لا تزال الملفات الثنائية تُحلل في الخلفية. يدعم الإطلاق السريع من سطر الأوامر بأقل إعداد.
  • 📦 تحليل على مستوى المشروع – يتيح إجراء هندسة عكسية متزامنة لجميع الملفات الثنائية في مشروع Ghidra
  • 🤖 جاهز للوكلاء – مبني لسير العمل القائمة على الوكلاء الأذكياء وأتمتة الهندسة العكسية على نطاق واسع.
  • 🔍 بحث دلالي في الكود – يستخدم التضمينات المتجهة (عبر ChromaDB) لتمكين البحث السريع والغامض عبر الدوال المفككة والتعليقات والرموز - مثالي لاستكشاف الكود الزائف C والفرز القائم على الوكلاء.

هذا المشروع يوفر تجربة قائمة على بايثون أولاً مُحسّنة للتطوير المحلي والبيئات بدون واجهة رسومية وسير عمل قابل للاختبار.

رسومات بيانية للإعداد

كيف ترتبط القطع```mermaid

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"]
  • Headless MCP: استخدم stdio لمضيفي MCP المحليين، أو streamable-http عندما يحتاج عدة عملاء إلى نفس مشروع Ghidra طويل الأمد.
  • GUI mode: يقوم pyghidra-mcp بتشغيل Ghidra، وفتح المشروع، وكشف أدوات إضافية لتوجيه CodeBrowser في نفس JVM.
  • CLI client: pyghidra-mcp-cli هو عميل HTTP. ابدأ خادم streamable-http أولاً، ثم أصدر أوامر طرفية ضد ذلك الخادم الجاري.
الهندسة المعمارية التفصيلية وسطح الأداة```mermaid 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"]
    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>

## المحتويات

الفئات