PyGhidra-MCP
使用说明内容(Markdown格式)
-
项目简介
- PyGhidra-MCP 是一个命令行 MCP 服务器,将 Ghidra 的分析能力、反汇编/反编译结果以及自建的向量检索能力暴露为 MCP API,供 LLM 客户端通过 JSON-RPC 请求读取资源、调用工具、获取并渲染 Prompts 等上下文信息。服务器侧负责会话管理、能力声明和多传输协议支持,便于本地开发、自动化以及 CI 流水线集成。
-
主要功能点
- 提供多种 MCP 工具(Tools),包括:decompile_function、list_project_binaries、list_project_binary_metadata、delete_project_binary、list_exports、list_imports、list_cross_references、read_bytes、gen_callgraph、import_binary 等,用于对 Ghidra 项目中的二进制进行分析、查询和操作。
- 支持通过资源(Resources)暴露分析结果、元数据及字符串/符号等信息,方便 LLM 在对战任务中快速获取上下文。
- 支持通过代码搜索、符号搜索、跨引用查询等能力,便于复杂问答与自动化工作流。
- 提供多种传输协议:Standard Input/Output(stdio)、Streamable HTTP、Server-Sent Events(SSE),以及兼容的 HTTP 传输,便于不同部署场景。
- 与 Ghidra 集成,自动化导入、分析与 Chromadb 向量数据库的代码/字符串集合,用于快速查询与向量化检索。
-
安装步骤
- 先准备工作环境
- 安装 Java 与 Ghidra,并设置 GHIDRA_INSTALL_DIR 环境变量到 Ghidra 安装目录。
- 安装 Python 及必需依赖(如 uv、pyghidra-mcp 等),可在本仓库的开发文档中找到对应命令。
- 运行 MCP 服务器
- 通过命令行直接运行:uvx pyghidra-mcp(也可以使用 Docker 容器,镜像中已包含运行所需环境)。
- 也可以指定传输协议与要分析的二进制,示例参数在帮助文档中有详细说明:
- stdio 传输:直接在终端以交互方式启动服务器,适合本地开发。
- streamable-http / SSE 传输:启动 HTTP 服务,默认监听端口 8000,供远程客户端连接。
- 构建与测试
- 项目提供单元测试和集成测试,建议在本地开发环境中执行测试以确保服务器正常工作。
- 先准备工作环境
-
服务器配置(MCP 客户端配置示例,JSON 格式,包含 server name、command、args 等)
- 配置说明:该配置用于 MCP 客户端对接 MCP 服务器,描述服务器名称、启动命令、以及启动参数等信息。客户端无需该配置就能连接服务器,但若要在集成环境中统一管理,推荐使用该 JSON 配置。
- 配置示例(文本形式,字段含义在注释中解释): { "server_name": "pyghidra-mcp", "command": "uvx", "args": [ "pyghidra-mcp" ], "description": "Ghidra 集成的 MCP 服务器,暴露工具、资源与 Prompts,支持 stdio/HTTP/SSE 传输", "env": { "GHIDRA_INSTALL_DIR": "/path/to/ghidra" // Ghidra 安装目录,请替换为实际路径 }, "transport": "stdio" // 客户端初始默认传输协议,可改为 streamable-http 或 sse } 说明:
- server_name: 服务器在客户端配置中的唯一标识名称,建议与实际运行时名称保持一致。
- command: 启动服务器的可执行命令,这里使用 uvx 来启动 Python 包中的 MCP 服务。
- args: 启动参数,常见组合包含要加载的二进制/路径或工程设置等。实际使用中可以指定要分析的二进制路径等。
- env: 环境变量配置,GHIDRA_INSTALL_DIR 需指向 Ghidra 的安装目录。
- transport: 初始默认传输协议,需与服务器实际运行时的传输模式匹配。
-
基本使用方法
- 启动后连接
- 服务器启动后,客户端通过 MCP JSON-RPC 与 MCP 服务进行通信,支持 stdio、HTTP 流、SSE 等传输。
- 调用与查询
- 使用工具(Tools)调用如 decompile_function、list_project_binaries、read_bytes 等,获取函数的伪代码、二进制信息、字节等数据。
- 常见工作流
- 将一个二进制导入 Ghidra 项目并分析完成后,可以对该二进制执行符号、导入/导出、跨引用、代码/字符串检索等操作,结合向量检索实现上下文增强的分析任务。
- 注意事项
- 运行服务器前请确保 GHIDRA_INSTALL_DIR 指向正确的 Ghidra 安装目录。
- 初始分析可能需要一定时间,请使用 wait-for-analysis 等参数或在后续调用前等待分析完成。
- 启动后连接