<strong>用于 Binary Ninja 的 MCP(模型上下文协议)服务器</strong>
[
][python-url]
[![GitHub 讨论][discussions-badge]][discussions-url]
English | 中文
://img.shields.io/pypi/pyversions/binaryninja-mcp.svg [python-url]: https://www.python.org/downloads/ [discussions-badge]: https://img.shields.io/github/discussions/MCPPhalanx/binaryninja-mcp [discussions-url]: https://github.com/MCPPhalanx/binaryninja-mcp/discussions
tests/binary/beleaf.elf 来自 CSAW'19: Beleaf - Nightmare。 您还可以从上述链接找到完整的说明!

参见: 与现有插件的关键差异
有两种方法可以运行 MCP 服务器:
Binary Ninja UI 插件:
设置 - MCP 服务器 - 自动启动 进行配置设置 - MCP 服务器 - 服务器端口号 进行配置Binary Ninja 无头模式:
uvx binaryninja-mcp install-api # 只需运行一次
uvx binaryninja-mcp server <filename> [filename]...
filename 可以是任何二进制文件或 BNDB,就像在 UI 模式下一样,所有打开的文件都可供 MCP 客户端使用。--port 标志指定不同的端口Claude Desktop (stdio 中继客户端):配置客户端通过内置中继使用 stdio 传输连接。
{
"mcpServers": {
"binaryninja": {
"command": "uvx",
"args": ["binaryninja-mcp", "client"]
}
}
}
Cherry Studio:
http://localhost:7000/sseuvxbinaryninja-mcp
client
如果您希望在非默认端口上运行 MCP 服务器,请在服务器和客户端命令行中添加 --port 12345。
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 资源可以通过 URI 格式访问:
binaryninja://{filename}/{resource_type}
服务器为每个二进制提供这些资源类型:
triage_summary: 来自 BinaryNinja Triage 视图的基本信息imports: 导入符号/函数字典exports: 导出符号/函数字典segments: 内存段列表sections: 二进制部分列表strings: 在二进制中找到的字符串列表functions: 函数列表data_variables: 数据变量列表uv 是此项目的推荐包管理工具。
git clone https://github.com/MCPPhalanx/binaryninja-mcp.git "${env:APPDATA}\Binary Ninja\plugins\MCPPhalanx_binaryninja_mcp"
必须手动将 Binary Ninja API 安装到虚拟环境中。
uv venv
uv sync --dev
# 安装 binaryninja API
binaryninja-mcp install-api
# 检查 API 是否正确安装
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!!")'
对于像 Claude Desktop 这样的具有 stdio 传输的 MCP 客户端,更改工作目录到开发文件夹。
{
"mcpServers": {
"binaryninja": {
"command": "uv",
"args": [
"--directory",
"C:/path/to/binaryninja-mcp",
"run",
"binaryninja-mcp",
"client"
]
}
}
}
启用 SSE 的 MCP 客户端可以使用以下方式连接:http://localhost:7000/sse
uv build
pytest
# 更新测试快照:
pytest --snapshot-update
PyPI 包版本会根据 Binary Ninja 的 plugin.json(使用 package.json 格式)自动推导,以保持 BN 插件和 PyPI 包之间的版本一致性。
# 更新 alpha 版本
uvx hatch version a
# 更新发布版本
uvx hatch version minor,rc
uvx hatch version release
参见:版本控制 - Hatch
uv publish