Token导航 LogoToken导航TokenDH.com
Ghidra MCP Server logo
运维云端stdio官方级别未说明来源级核验

Ghidra MCP Server

MCP Server

一个生产就绪的模型上下文协议(MCP)服务器,将Ghidra强大的逆向工程能力与现代AI工具和自动化框架连接起来。

工具数

185

提示词数

0

GitHub Stars

0

资源数

0
逆向工程JavaClaude软件开发Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

eKsiSLe

提供方

eKsiSLe

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python bridge_mcp_ghidra.py

详细介绍

Ghidra MCP服务器

![License](https://opensource.org/licenses/Apache-2.0) ](https://openjdk.java.net/projects/jdk/21/) ](https://ghidra-sre.org/) ](CHANGELOG.md)

如果你觉得这有用,请⭐ 为repo加星——这有助于其他人发现它!

一个生产就绪的模型上下文协议(MCP)服务器,将Ghidra强大的逆向工程能力与现代人工智能工具和自动化框架连接起来。 193个MCP工具,久经考验的人工智能工作流程,以及最全面的Ghidra MCP集成。

重要提示:v4.3+迁移说明

如果您要从旧版本升级,请先阅读以下内容:

  • Python桥不再接受 --ghidra-server.
  • 通过环境变量设置Ghidra TCP URL: GHIDRA_MCP_URL.
  • 桥现在更喜欢先进行本地UDS自动发现。如果UDS可用,即使TCP存在,它也会使用UDS。
  • 如果您的Ghidra状态显示 TCP: Disabled,直接HTTP调用,如 http://127.0.0.1:17171/... 将按设计失败。

建议的MCP客户端配置(stdio):

[mcp_servers.ghidra]
command = "python3"
args = ["/absolute/path/to/bridge_mcp_ghidra.py", "--transport", "stdio"]
env = { GHIDRA_MCP_URL = "http://127.0.0.1:17171" } # used when TCP mode is enabled/needed
enabled = true

为什么选择Ghidra MCP?

大多数Ghidra MCP实现都为您提供了一些只读工具,到此为止。这个项目是不同的——它是由一位逆向工程师构建的,他每天在真实的二进制文件上使用它,而不是作为演示。

  • 193个MCP工具 --比任何竞争性实现多3倍。不仅仅是读取操作,还有重命名、键入、注释、结构创建和脚本执行的完全写入权限。
  • 久经考验的人工智能工作流程 --经过验证的文档工作流程(V5)在数百个功能中得到了改进。包括分步提示、匈牙利符号参考、批处理指南和孤立代码发现。
  • 生产级可靠性 -原子事务、批处理操作(API调用减少93%)、可配置超时和优雅的错误处理。没有无声的失败。
  • 跨二进制文档传输 --SHA-256函数哈希匹配会自动在二进制版本之间传播文档。文件一次,到处申请。
  • 完全集成Ghidra服务器 --连接到共享的Ghidra服务器、管理存储库、版本控制、签出/签入工作流和多用户协作。
  • 无头模式和GUI模式 --使用或不使用Ghidra GUI运行。Docker已为CI/CD管道和大规模自动化分析做好准备。

🌟 特性

核心MCP集成

  • 完全MCP兼容性 --模型上下文协议的完整实现
  • 193 MCP工具 -全面的API表面,涵盖二进制分析的各个方面
  • 生产就绪可靠性 --原子事务、批处理操作、可配置超时
  • 实时分析 --与Ghidra分析引擎的实时集成

二元分析能力

  • 功能分析 --反编译、调用图、交叉引用、完整性评分
  • 数据结构发现 --结构/联合/枚举创建,包括字段分析和命名建议
  • 串提取 --正则表达式搜索、质量过滤和字符串锚定函数发现
  • 进出口分析 --符号表、外部位置、顺序导入解析
  • 内存和数据检查 --原始内存读取、字节模式搜索、数组边界检测
  • 跨二进制文档 --函数哈希匹配和跨版本的文档传播

人工智能驱动的逆向工程工作流程

  • 功能文档工作流V5 --使用匈牙利符号、类型审核和自动验证评分进行完整功能文档的7步流程
  • 批处理文档 --并行子代理调度,用于同时记录多个功能
  • 孤立代码发现 --自动扫描仪在已知代码之间的间隙中发现未被发现的功能
  • 数据类型调查 --结构发现和现场分析的系统工作流程
  • 跨版本匹配 --跨不同二进制版本的基于哈希的函数匹配

开发与自动化

  • Ghidra脚本管理 --完全通过MCP创建、运行、更新和删除Ghidra脚本
  • 多程序支持 --在多个打开的程序之间切换和比较
  • 批量操作 -批量重命名、注释、键入和标签管理(API调用减少93%)
  • 无头服务器 --无需Ghidra GUI的完整分析——Docker和CI/CD就绪
  • 项目和版本控制 --创建项目、管理文件、Ghidra服务器集成
  • 分析控制 --以编程方式列出、配置和触发Ghidra分析器

🚀 快速开始

先决条件

  • Java 21 LTS (建议使用OpenJDK)
  • Apache Maven 3.9+
  • 吉德拉12.0.3 (或兼容版本)
  • Python 3.8+ 使用pip

安装

推荐用于Windows:使用 mcp4ghidra-setup.ps1 作为主要切入点。 它在一个命令中处理先决条件设置+构建+部署。 重要提示: -SetupDeps 仅安装Maven/Ghidra JAR依赖项。 -Deploy 是最终用户命令,并且(默认情况下)在构建/部署之前也确保Python要求。
  1. 克隆存储库:
   git clone https://github.com/bethington/ghidra-mcp.git
   cd ghidra-mcp
  1. 建议:先运行环境预检:
   .\mcp4ghidra-setup.ps1 -Preflight -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
  1. 构建并部署到Ghidra(单个命令):
   .\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
  1. 可选的严格/手动模式 (高级):
   # Skip automatic prerequisite setup
   .\mcp4ghidra-setup.ps1 -Deploy -NoAutoPrereqs -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
  1. 显示脚本帮助:
   .\mcp4ghidra-setup.ps1 -Help
   # or
   Get-Help .\mcp4ghidra-setup.ps1 -Detailed
  1. 可选的仅构建模式 (高级/故障排除):
   # Preferred: script-managed build-only
   .\mcp4ghidra-setup.ps1 -BuildOnly
   # Manual Maven build (requires Ghidra deps already installed in local .m2)
   mvn clean package assembly:single -DskipTests

安装(Linux--Ubuntu/Debian)

使用 mcp4ghidra-setup.sh 作为Linux的主要入口点。 它处理先决条件设置、Maven依赖项安装、构建和部署。
  1. 克隆存储库:
   git clone https://github.com/bethington/ghidra-mcp.git
   cd ghidra-mcp
  1. 安装系统必备组件 (如果尚未安装):
   sudo apt update && sudo apt install -y openjdk-21-jdk maven python3 python3-pip curl jq unzip
  1. 飞行前运行环境:
   ./mcp4ghidra-setup.sh --preflight --ghidra-path ~/ghidra_12.0.3_PUBLIC
  1. 构建并部署到Ghidra(单个命令):
   ./mcp4ghidra-setup.sh --deploy --ghidra-path ~/ghidra_12.0.3_PUBLIC

这将:

- 将Ghidra JAR依赖项安装到本地 ~/.m2/repository - 构建 GhidraMCP-.zip 使用Maven - 将扩展解压缩到特定于操作系统的Ghidra用户扩展目录 - 更新 preferencesLastExtensionImportDirectory - 安装Python要求

  1. 可选:仅设置Maven依赖关系:
   ./mcp4ghidra-setup.sh --setup-deps --ghidra-path ~/ghidra_12.0.3_PUBLIC
  1. 显示脚本帮助:
   ./mcp4ghidra-setup.sh --help
按操作系统扩展/配置路径 - Linux: $HOME/.config/ghidra/ghidra__PUBLIC/ - macOS: $HOME/Library/ghidra/ghidra__PUBLIC/ - 扩展文件夹: /Extensions/GhidraMCP/
其他辅助脚本 (PowerShell实用程序的Linux等效工具): - functions-extract.sh -通过Ghidra REST API提取函数(使用 curl/jq) - functions-process.sh --使用Claude CLI进行并行函数处理

基本用法

选项1:标准传输(推荐用于AI工具)

python bridge_mcp_ghidra.py

使用明确的TCP回退URL(如果需要):

GHIDRA_MCP_URL=http://127.0.0.1:17171 python bridge_mcp_ghidra.py --transport stdio
注: --ghidra-server 在v4.3+中被删除。

选项2:SSE传输(Web/HTTP客户端)

python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081

在吉德拉

  1. 启动Ghidra并打开一个 代码浏览器 窗口
  2. 代码浏览器,通过启用插件 文件>配置>配置所有插件>GhidraMCP
  3. 可选:通过配置自定义端口 代码浏览器>编辑>工具选项>GhidraMCP HTTP服务器
  4. 通过启动服务器 工具>GhidraMCP>启动MCP服务器
  5. 检查 工具>GhidraMCP>服务器状态 确认运输:

- UDS: RunningTCP: Disabled 意味着桥接器/工具应通过UDS连接。 - TCP: Running 表示HTTP端点在您配置的端口上可用(默认 8089 除非更改)。

验证它是否正常工作

# Quick health check
curl http://127.0.0.1:8089/check_connection
# Expected: "Connected: GhidraMCP plugin running with program ''"

# Get version info
curl http://127.0.0.1:8089/get_version

❓ 故障排除

“GhidraMCP”菜单未出现在“工具”中

原因: 插件未启用或安装不正确。

解决方案:

  1. 验证是否安装了扩展: 文件>安装扩展 --应列出GhidraMCP
  2. 启用插件: 文件>配置>配置所有插件>GhidraMCP (勾选此框)
  3. 重新启动Ghidra 安装/启用后

服务器没有响应/连接被拒绝

原因: 服务器未启动或端口错误。

解决方案:

  1. 确保已启动服务器: 工具>GhidraMCP>启动MCP服务器
  2. 检查配置的端口: 编辑>工具选项>GhidraMCP HTTP服务器
  3. 检查端口是否正在使用中:
   # Linux/macOS
   lsof -i :8089
   # Windows
   netstat -ano | findstr :8089
  1. 查找Ghidra控制台中的错误: 窗口>控制台

MCP工具出现故障,显示“传输关闭”

原因: 网桥进程在启动时退出(最常见的是更新后过时的CLI参数)。

修复:

  1. 移除 --ghidra-server 来自MCP客户端参数。
  2. 用途:

- args: ["/path/to/bridge_mcp_ghidra.py", "--transport", "stdio"] - 环境: GHIDRA_MCP_URL=http://127.0.0.1:17171 (或您的TCP端口)

  1. 在客户端中重新启动MCP服务器切换。
  2. 在Ghidra,检查 工具>GhidraMCP>服务器状态:

- 如果 TCP: Disabled,HTTP检查 127.0.0.1: 预计会失败。 - 这在使用UDS传输时是正常的。

500内部服务器错误

原因: 服务器端异常,通常是由于缺少程序数据。

解决方案:

  1. 确保在CodeBrowser中加载二进制文件
  2. 首先运行自动分析: 分析>自动分析
  3. 检查Ghidra控制台(窗口>控制台)Java异常
  4. 某些操作需要经过充分分析的二进制文件

404未找到错误

原因: 终结点不存在或URL错误。

解决方案:

  1. 验证终结点是否存在: curl http://127.0.0.1:8089/get_version
  2. 检查端点名称中的拼写错误
  3. 确保使用正确的HTTP方法(GET与POST)

扩展未出现在安装扩展中

原因: JAR文件位置错误。

解决方案:

  1. 手动安装位置: ~/.ghidra/ghidra_12.0.3_PUBLIC/Extensions/GhidraMCP/lib/GhidraMCP.jar
  2. 或使用: 文件>安装扩展>添加 并选择ZIP文件
  3. 确保为您的Ghidra版本构建了JAR/ZIP

构建失败,显示“未找到Ghidra依赖项”

原因: Ghidra JAR未安装在本地Maven存储库中。

解决方案:

# Windows (recommended)
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\ghidra_12.0.3_PUBLIC"

# Or manual install (see install-ghidra-deps.sh)

📊 生产绩效

  • MCP工具184个工具已全面实施
  • 速度:对大多数行动的反应低于秒
  • 效率:通过批处理操作减少93%的API调用
  • 可靠性:具有全有或全无语义的原子事务
  • AI工作流程:经过验证的文档提示在数百个实际功能中得到了改进
  • 部署:自动版本感知部署脚本

🛠️ API 参考

核心业务

  • check_connection -验证MCP连接
  • get_metadata -程序元数据和信息
  • get_version -服务器版本信息
  • get_function_count -返回程序的函数总数
  • get_entry_points -二进制入口点发现
  • get_current_address -获取光标地址(仅限GUI)
  • get_current_function -在光标处获取功能(仅GUI)
  • get_current_selection -获取当前选择上下文(地址+函数)
  • read_memory -从内存中读取原始字节
  • save_program -保存当前程序
  • exit_ghidra -保存并优雅退出Ghidra

功能分析

  • list_functions -列出所有函数(分页)
  • list_functions_enhanced -带有isThunk/is外部标志的列表
  • list_classes -列出命名空间/类名(分页)
  • search_functions_enhanced -使用过滤器进行高级功能搜索
  • decompile_function -将函数分解为C伪代码
  • force_decompile -强制重新反编译(绕过缓存)
  • batch_decompile -批量反编译多个函数
  • get_function_callers -获取函数调用者
  • get_function_callees -获取函数调用项
  • get_function_call_graph -函数关系图
  • get_full_call_graph -完整的程序调用图
  • get_function_signature -获取函数原型字符串
  • get_function_hash -标准化函数操作码的SHA-256哈希
  • get_bulk_function_hashes -带过滤器的分页批量哈希
  • get_function_jump_targets -从反汇编中获取跳转目标地址
  • get_function_metrics -获取函数的复杂性度量
  • get_function_xrefs -获取函数交叉引用
  • analyze_function_complete -综合功能分析
  • analyze_function_completeness -文件完整性评分
  • batch_analyze_completeness -多功能批量完整性分析
  • find_similar_functions_fuzzy -模糊相似性匹配
  • bulk_fuzzy_match -所有功能的批量模糊匹配
  • diff_functions -并行区分两种功能
  • validate_function_prototype -验证函数原型字符串
  • can_rename_at_address -检查地址是否可以重命名
  • delete_function -删除地址处的功能

内存和数据

  • list_segments -内存段和布局
  • list_data_items -列出定义的数据标签和值(分页)
  • list_data_items_by_xrefs -按外部参照计数排序的数据项
  • get_function_by_address -功能在地址
  • disassemble_function -拆卸列表
  • disassemble_bytes -原始字节反汇编
  • get_xrefs_to -地址的交叉引用
  • get_xrefs_from -地址的交叉引用
  • get_bulk_xrefs -批量交叉引用查找
  • analyze_data_region -分析内存区域结构
  • inspect_memory_content -查看原始内存内容
  • detect_array_bounds -检测阵列边界
  • search_byte_patterns -搜索字节模式
  • create_memory_block -创建新的内存块

跨二进制文档

  • get_function_documentation -导出完整的功能文档
  • apply_function_documentation -将文档导入目标功能
  • compare_programs_documentation -比较程序之间的文档
  • build_function_hash_index -构建持久JSON索引
  • lookup_function_by_hash -在索引中查找匹配函数
  • propagate_documentation -将文档应用于所有匹配的实例

数据类型和结构

  • list_data_types -可用数据类型
  • search_data_types -搜索数据类型
  • get_data_type_size -获取数据类型的字节大小
  • get_valid_data_types -获取有效Ghidra内置类型的列表
  • get_struct_layout -获取结构的详细现场布局
  • validate_data_type -验证数据类型语法
  • validate_data_type_exists -检查数据类型是否存在
  • create_struct -创建自定义结构
  • add_struct_field -向结构中添加字段
  • modify_struct_field -修改现有字段
  • remove_struct_field -从结构中删除字段
  • create_enum -创建枚举
  • get_enum_values -获取枚举值
  • create_array_type -创建数组数据类型
  • create_typedef -创建typedef别名
  • create_union -创建联合数据类型
  • create_pointer_type -创建指针数据类型
  • clone_data_type -用新名称克隆数据类型
  • apply_data_type -将类型应用于地址
  • delete_data_type -删除数据类型
  • consolidate_duplicate_types -合并重复类型
  • suggest_field_names -人工智能辅助的结构字段名称建议
  • create_data_type_category -在类型管理器中创建类别文件夹
  • move_data_type_to_category -将类型移动到其他类别
  • list_data_type_categories -列出所有数据类型类别
  • import_data_types -从GDT/头文件导入类型

符号和标签

  • list_imports -导入的符号和库
  • list_exports -导出的符号和函数
  • list_external_locations -外部位置参考
  • get_external_location -具体外部位置细节
  • list_strings -通过分析提取字符串
  • search_memory_strings -按正则表达式/子字符串模式搜索字符串
  • list_namespaces -可用命名空间
  • list_globals -全局变量
  • create_label -在地址处创建标签
  • batch_create_labels -批量标签创建
  • delete_label -删除地址处的标签
  • batch_delete_labels -批量标签删除
  • rename_label -重命名现有标签
  • rename_or_label -重命名或创建标签

重命名和文档

  • rename_function -按名称重命名函数
  • rename_function_by_address -按地址重命名函数
  • rename_data -重命名数据项
  • rename_variables -重命名函数变量
  • rename_global_variable -重命名全局变量
  • rename_external_location -重命名外部引用
  • batch_rename_function_components -批量重命名
  • set_decompiler_comment -设置反编译器注释
  • set_disassembly_comment -设置拆卸注释
  • set_plate_comment -设置功能板注释
  • get_plate_comment -获取功能板评论
  • batch_set_comments -批量评论设置
  • clear_function_comments -清除函数的所有注释
  • list_bookmarks -列出所有书签
  • set_bookmark -创建或更新书签
  • delete_bookmark -删除书签

类型系统

  • set_function_prototype -设置函数签名
  • set_local_variable_type -设置变量类型
  • set_parameter_type -设置参数类型
  • batch_set_variable_types -批量类型设置
  • set_variable_storage -控制变量存储位置
  • set_function_no_return -将函数标记为不返回
  • clear_instruction_flow_override -指令上的明确流量超控
  • list_calling_conventions -可用的通话约定
  • get_function_variables -获取所有函数变量
  • get_function_labels -在功能中获取标签

Ghidra脚本管理

  • list_scripts -列出可用脚本
  • run_script -运行脚本
  • list_ghidra_scripts -列出自定义Ghidra脚本
  • save_ghidra_script -保存新脚本
  • get_ghidra_script -获取脚本内容
  • run_ghidra_script -按名称执行Ghidra脚本
  • run_script_inline -执行内联脚本代码
  • update_ghidra_script -更新现有脚本
  • delete_ghidra_script -删除脚本

多程序支持

  • list_open_programs -列出所有打开的程序
  • get_current_program_info -当前程序详细信息
  • switch_program -切换活动程序
  • list_project_files -列出项目文件
  • open_program -从项目中打开程序

项目生命周期

  • create_project -创建一个新的Ghidra项目
  • open_project -打开现有项目
  • close_project -关闭当前项目
  • delete_project -删除项目
  • list_projects -在目录中列出Ghidra项目

项目组织

  • create_folder -在项目树中创建文件夹
  • move_file -将域文件移动到另一个文件夹
  • move_folder -将文件夹移动到其他位置
  • delete_file -从项目中删除域文件

分析工具

  • find_next_undefined_function -查找未定义的函数
  • find_undocumented_by_string -按字符串引用查找函数
  • batch_string_anchor_report -串锚分析
  • get_assembly_context -获取程序集上下文
  • analyze_struct_field_usage -分析结构字段访问
  • get_field_access_context -获取字段访问模式
  • create_function -在地址处创建函数
  • analyze_control_flow -圈复杂度和循环检测
  • analyze_call_graph -构建函数调用图
  • analyze_api_call_chains -检测API调用威胁模式
  • detect_malware_behaviors -检测恶意软件行为类别
  • find_anti_analysis_techniques -寻找反分析技术
  • find_dead_code -检测无法访问的代码
  • extract_iocs_with_context -从字符串中提取IOC
  • apply_data_classification -将数据分类应用于地址

分析控制

  • list_analyzers -列出所有可用的Ghidra分析仪
  • configure_analyzer -启用/禁用或配置分析器
  • run_analysis -以编程方式触发Ghidra自动分析

服务器连接(Ghidra服务器)

  • connect_server -连接到Ghidra服务器
  • disconnect_server -断开与Ghidra服务器的连接
  • server_status -检查服务器连接状态
  • list_repositories -列出服务器上的存储库
  • create_repository -创建新存储库
  • list_repository_files -列出服务器存储库文件夹中的文件
  • get_repository_file -获取服务器存储库中文件的元数据

版本控制

  • checkout_file -从版本控制中检出文件
  • checkin_file -签入带有注释的文件
  • undo_checkout -撤消结账而不提交
  • add_to_version_control -将文件添加到版本控制

版本历史记录

  • get_version_history -获取文件的完整版本历史记录
  • get_checkouts -获取活动结账状态

管理员

  • terminate_checkout -强制终止用户的结账
  • list_server_users -列出Ghidra服务器上的所有用户
  • set_user_permissions -设置用户的存储库访问级别

知识数据库(仅桥接,需要PostgreSQL)

  • store_function_knowledge -将记录的功能数据存储到知识数据库中
  • query_knowledge_context -按关键字搜索记录的函数(ILIKE+tsvector)
  • store_ordinal_mapping -按二进制版本存储序号到名称的映射
  • get_ordinal_mapping -按二进制、版本、序号查找已知序号
  • export_system_knowledge -按游戏系统将记录的功能导出为降价

更改日志.md 版本历史。

🏗️ 建筑

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   AI/Automation │◄──►│   MCP Bridge    │◄──►│  Ghidra Plugin  │
│     Tools       │    │ (bridge_mcp_    │    │ (GhidraMCP.jar) │
│  (Claude, etc.) │    │  ghidra.py)     │    │                 │
└─────────────────┘    └─────────────────┘    └─────────────────┘
        │                       │                       │
   MCP Protocol            HTTP REST              Ghidra API
   (stdio/SSE)          (localhost:8089)      (Program, Listing)

组件

  • bridge_mcp_ghidra.py --将MCP协议转换为HTTP调用的Python MCP服务器(193个工具)
  • GhidraMCP.jar --Ghidra插件,通过HTTP公开分析功能(176个GUI端点)
  • MCP4Ghidra无头服务器 --独立无头服务器——184个端点,无需GUI
  • ghidra_scripts/ --常见任务的自动化脚本集合

🔧 发展

从源头构建

# Recommended: one command does setup + build + deploy
.\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC"

# Optional: build only (no deploy)
.\mcp4ghidra-setup.ps1 -BuildOnly

# Version bump (updates all 7 project files atomically)
.\bump-version.ps1 -New X.Y.Z

脚本命令参考

主要操作(选择一个):

  • -Deploy (默认):自动设置前置条件、构建、部署
  • -SetupDeps:将Ghidra JAR安装到本地 .m2 (仅限Maven deps;不安装Python包)
  • -BuildOnly:仅构建工件
  • -Clean:删除中的构建/缓存工件和本地Ghidra依赖文件夹 .m2 适用于活动版Ghidra
  • -Preflight:验证工具、路径、所需的Ghidra jar和写入权限,而无需进行更改

有用的选项:

  • -GhidraPath "C:\ghidra_12.0.3_PUBLIC"
  • -GhidraVersion "12.0.3"
  • -StrictPreflight
  • -NoAutoPrereqs
  • -SkipBuild
  • -SkipRestart
  • -DryRun
  • -Force
  • -Verbose
  • -Help

快速示例:

# Standard deploy (recommended)
.\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC"

# First-time dependency setup only
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\ghidra_12.0.3_PUBLIC"

# Build only
.\mcp4ghidra-setup.ps1 -BuildOnly

# Preflight checks only
.\mcp4ghidra-setup.ps1 -Preflight -GhidraPath "C:\ghidra_12.0.3_PUBLIC"

# Strict preflight (fails on warnings)
.\mcp4ghidra-setup.ps1 -Preflight -StrictPreflight -GhidraPath "C:\ghidra_12.0.3_PUBLIC"

# Show command help
.\mcp4ghidra-setup.ps1 -Help

项目结构

ghidra-mcp/
├── bridge_mcp_ghidra.py     # MCP server (Python, 193 tools)
├── src/main/java/           # Ghidra plugin + headless server (Java)
│   └── com/xebyte/
│       ├── MCP4GhidraPlugin.java         # GUI plugin (176 endpoints)
│       ├── headless/                    # Headless server (184 endpoints)
│       └── core/                        # Shared service layer (12 services)
├── ghidra_scripts/          # Automation scripts
├── tests/                   # Python unit tests + endpoint catalog
│   ├── unit/               # Catalog consistency, schema, tool function tests
│   └── endpoints.json      # Endpoint specification (191 entries)
├── docs/                    # Documentation
│   ├── prompts/            # AI workflow prompts
│   ├── releases/           # Version release notes
│   └── project-management/ # Project docs
└── .github/workflows/      # CI/CD pipelines

依赖库

Ghidra JAR必须安装到本地Maven存储库中(~/.m2/repository)在编译之前。 这是每台机器的一次性设置,当您的Ghidra版本更改时也是如此。 -Deploy 现在默认情况下会自动安装这些。

该工具强制以下内容之间的版本一致性:

  • pom.xml (ghidra.version)
  • -GhidraVersion (如有提供)
  • -GhidraPath 版本段(例如。, ghidra_12.0.3_PUBLIC)

如果这些不匹配,部署将很快失败,并出现明显的错误。

故障排除:版本不匹配

如果看到版本不匹配错误,请对齐所有三个值:

  1. pom.xmlghidra.version
  2. -GhidraVersion (如果使用)
  3. -GhidraPath 版本段(ghidra_X.Y.Z_PUBLIC)

然后重新运行:

.\mcp4ghidra-setup.ps1 -Deploy -GhidraPath "C:\ghidra_12.0.3_PUBLIC" -GhidraVersion "12.0.3"
# Windows
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\path\to\ghidra_12.0.3_PUBLIC"

# Optional version override
.\mcp4ghidra-setup.ps1 -SetupDeps -GhidraPath "C:\path\to\ghidra_12.0.3_PUBLIC" -GhidraVersion "12.0.3"

所需库(14个JAR,~37MB):

源路径目的
Base.jarFeatures/Base/lib/Ghidra核心功能
解压缩器.jarFeatures/Decompiler/lib/反编译引擎
PDB罐Features/PDB/lib/Microsoft PDB符号支持
FunctionID.jarFeatures/FunctionID/lib/功能识别
软件建模.jarFramework/SoftwareModeling/lib/程序模型API
Project.jarFramework/Project/lib/项目管理
Docking.jarFramework/Docking/lib/UI对接框架
Generic.jarFramework/Generic/lib/通用实用程序
实用程序.jarFramework/Utility/lib/核心公用设施
Gui.jarFramework/Gui/lib/GUI组件
FileSystem.jarFramework/FileSystem/lib/文件系统支持
Graph.jarFramework/Graph/lib/图形/调用图分析
DB.jarFramework/DB/lib/数据库操作
Emulation.jarFramework/Emulation/lib/P代码仿真
备注:库中不包括库(请参阅 .gitignore).在构建之前,您必须从Ghidra安装中安装它们。
脚本角色: - mcp4ghidra-setup.ps1:统一自动化脚本(-SetupDeps, -BuildOnly, -Deploy, -Clean) - 默认 -Deploy 行为:自动设置先决条件,然后构建和部署 - 使用 -NoAutoPrereqs 用于严格/手动先决条件管理

发展特征

  • 自动化部署:版本感知部署脚本
  • 批量操作:将API调用减少93%
  • 原子事务:全有或全无语义
  • 综合录井:调试和跟踪功能

📚 文档

核心文档

AI工作流提示

发布历史

🐳 无头服务器(Docker)

GhidraMCP包括一个无头服务器模式,用于在没有Ghidra GUI的情况下进行自动分析。

Docker快速入门

# Build and run
docker-compose up -d ghidra-mcp

# Test connection
curl http://localhost:8089/check_connection
# Connection OK - GhidraMCP Headless Server v4.3.0

无头API工作流

# 1. Load a binary
curl -X POST -d "file=/data/program.exe" http://localhost:8089/load_program

# 2. Run auto-analysis (identifies functions, strings, data types)
curl -X POST http://localhost:8089/run_analysis

# 3. List discovered functions
curl "http://localhost:8089/list_functions?limit=20"

# 4. Decompile a function
curl "http://localhost:8089/decompile_function?address=0x401000"

# 5. Get metadata
curl http://localhost:8089/get_metadata

关键无头端点

端点方法描述
/load_programPOST加载二进制文件进行分析
/run_analysisPOST运行Ghidra自动分析
/list_functionsGET列出所有发现的函数
/list_exportsGET列出导出的符号
/list_importsGET列出导入的符号
/decompile_functionGET将函数分解为C代码
/create_functionPOST在地址处创建函数
/get_metadataGET获取程序元数据
/create_projectPOST创建Ghidra项目
/list_analyzersGET列出可用分析器
/server/statusGET检查Ghidra服务器连接

配置

Docker的环境变量:

  • GHIDRA_MCP_PORT -服务器端口(默认:8089)
  • GHIDRA_MCP_BIND_ADDRESS -绑定地址(Docker默认为0.0.0.0)
  • JAVA_OPTS -JVM选项(默认值:-Xmx4g-XX:+UseG1GC)

🤝 贡献

贡献.md 详细的贡献指南。

快速开始

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 构建并测试您的更改(mvn clean package assembly:single -DskipTests)
  4. 根据需要更新文档
  5. 提交您的更改(git commit -m 'Add amazing feature')
  6. 推到分支(git push origin feature/amazing-feature)
  7. 打开拉取请求

📄 许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。

🏆 生产状态

度量
版本4.3.0
MCP工具193已完全执行
GUI端点175(MCP4Ghidra插件)
无头端点183(MCP4Ghidra无头服务器)
编译✅ 100%成功
批量效率API呼叫减少93%
AI工作流程7个经过验证的文档工作流程
Ghidra脚本包括自动化脚本
文档全面的AI提示

更改日志.md 查看版本历史和发行说明。

🙏 致谢

👥 贡献者

该项目得益于敬业贡献者的工作:

核心贡献者

@heeen --重大贡献包括:

  • 用于交叉二进制比较的模糊函数匹配和结构化差分(#13)
  • 脚本执行改进和错误修复(#12)
  • 新的API端点: save_program, exit_ghidra, delete_function, create_memory_block, run_script_inline (#11)
  • 架构愿景:注释驱动设计、UDS传输、Python桥优化建议
  • Ghidra团队 -对于令人难以置信的逆向工程平台
  • 模型上下文协议 -用于标准化的AI集成框架
  • 贡献者 -用于测试、反馈和改进

______________________________________________________________________

🔗 相关项目

  • 再宇宙 --Ghidra BSim PostgreSQL平台,用于大规模二进制相似性分析。与GhidraMCP完美搭配,用于人工智能驱动的逆向工程工作流程。
  • 作弊引擎服务器python --用于动态内存分析和调试的MCP服务器。

______________________________________________________________________

具备企业级可靠性和全面的二进制分析功能,可用于生产部署。

目录标签

目录标签

逆向工程JavaClaude软件开发本地部署二进制分析AI集成自动化工具

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

185

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP