关于 Another™ MCP Server for Binary Ninja
Another MCP Server for Binary Ninja 是一个为 Binary Ninja 提供的 MCP 服务,可将已加载的二进制文件暴露给 AI 客户端进行逆向分析。它既可作为 Binary Ninja UI 插件运行,也可通过命令行以无界面模式启动,适合安全研究和逆向工程人员使用。
主要功能
- 01重命名函数与数据变量
- 02获取伪 C、伪 Rust 与中间语言代码
- 03查看反汇编、导入导出与段、节信息
- 04提取字符串、函数和数据变量列表
- 05支持 SSE 与 stdio 两种连接方式
适用场景
- 01让 AI 客户端辅助分析函数的伪代码
- 02在无界面服务器上批量加载二进制并提供分析接口
- 03在 Claude Desktop 或 Cherry Studio 中查询二进制结构
MCP 相关
该项目是一个 MCP 服务,将 Binary Ninja 中打开的每个文件以资源形式(binaryninja:// URI)暴露,并提供 pseudo_c、disassembly 等工具供 MCP 客户端调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Another™ MCP Server for Binary Ninja
English | 中文
演示
tests/binary/beleaf.elf 取自 CSAW'19:Beleaf - Nightmare。 你也可以通过上面的链接查看完整的分析文章!

……但为什么是 Another?
请参阅: 与现有插件的主要区别
安装
服务端设置
有两种方式可以运行 MCP 服务:
-
Binary Ninja UI 插件:
- 通过 Binary Ninja 的插件管理器安装插件
- 首次加载文件时,MCP 服务会自动启动。
- 可通过
Settings - MCP Server - Auto Start配置自动启动 - 可通过
Settings - MCP Server - Server port number配置监听端口
- 可通过
- 所有已打开的文件都会作为独立资源公开,详见下方的 可用资源部分
-
Binary Ninja 无头模式:
uvx binaryninja-mcp install-api # only run once uvx binaryninja-mcp server <filename> [filename]...filename可以是任意二进制文件或 BNDB;与 UI 模式类似,所有已打开的 文件都可供 MCP 客户端使用。- 服务默认运行在端口 7000
- 使用
--port标志指定其他端口
MCP 客户端设置
-
Claude Desktop(stdio 中继客户端):配置客户端,通过内置中继使用 stdio 传输进行连接。
{ "mcpServers": { "binaryninja": { "command": "uvx", "args": ["binaryninja-mcp", "client"] } } } -
Cherry Studio:
- SSE 端点(推荐):URL:
http://localhost:7000/sse - stdio 客户端:
- 命令:
uvx - 参数:
binaryninja-mcp client
- 命令:
- SSE 端点(推荐):URL:
如果希望 MCP 服务使用非默认端口,请在服务端和客户端的命令行中都添加
--port 12345。
MCP 客户端可用工具
MCP 服务提供以下工具:
rename_symbol:重命名函数或数据变量pseudo_c:获取指定函数的伪 C 代码pseudo_rust:获取指定函数的伪 Rust 代码high_level_il:获取指定函数的高级 ILmedium_level_il:获取指定函数的中级 ILdisassembly:获取函数或指定范围的反汇编update_analysis_and_wait:更新二进制文件的分析并等待完成get_triage_summary:获取 BinaryNinja Triage 视图的基本信息get_imports:获取导入符号的字典get_exports:获取导出符号的字典get_segments:获取内存段列表get_sections:获取二进制文件的节列表get_strings:获取二进制文件中的字符串列表get_functions:获取函数列表get_data_variables:获取数据变量列表
MCP 客户端可用资源
MCP 资源可通过以下格式的 URI 访问:
binaryninja://{filename}/{resource_type}
对于每个二进制文件,服务会提供以下资源类型:
triage_summary:BinaryNinja Triage 视图中的基本信息imports:导入符号/函数的字典exports:导出符号/函数的字典segments:内存段列表sections:二进制文件节列表strings:在二进制文件中找到的字符串列表functions:函数列表data_variables:数据变量列表
开发
uv 是此项目推荐的包管理工具。
将目录克隆到 Binary Ninja 插件目录
git clone https://github.com/MCPPhalanx/binaryninja-mcp.git "${env:APPDATA}\Binary Ninja\plugins\MCPPhalanx_binaryninja_mcp"
设置 Python 环境
必须手动将 Binary Ninja API 安装到 virtualenv 中。
uv venv
uv sync --dev
# install binaryninja API
binaryninja-mcp install-api
# check API is correctly installed
uv run python -c 'import binaryninja as bn; assert bn._init_plugins() is None; assert bn.core_ui_enabled() is not None; print("BN API check PASSED!!")'
为开发设置 MCP 客户端
对于使用 stdio 传输的 MCP 客户端(如 Claude Desktop),请将工作目录切换到开发文件夹。
{
"mcpServers": {
"binaryninja": {
"command": "uv",
"args": [
"--directory",
"C:/path/to/binaryninja-mcp",
"run",
"binaryninja-mcp",
"client"
]
}
}
}
启用了 SSE 的 MCP 客户端可以通过以下地址连接:http://localhost:7000/sse
构建
uv build
测试
pytest
# To update test snapshots:
pytest --snapshot-update
版本更新
PyPI 包版本会根据 Binary Ninja 的 plugin.json(采用 package.json 格式)自动派生,以保持 BN 插件和 PyPI 包的版本一致。
# bump alpha version
uvx hatch version a
# bump release version
uvx hatch version minor,rc
uvx hatch version release
参见:版本管理 - Hatch
发布
uv publish
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。