BNSQL MCP 服务器
使用说明(简明易懂,面向开发者和集成人员)
-
项目简介
- BNSQL 提供一个 MCP 服务器端实现,允许具备 MCP 客户端的 LLM 与工具对接。服务器通过 MCP 协议暴露“查询 SQL”、“问答(NL 问题转 SQL)”等工具,并对 Binary Ninja 数据库中的资源(如 funcs、strings、imports 等)提供统一访问入口。整体设计目标是为 LLM 应用提供安全、可扩展的上下文服务框架。
-
主要功能点
- MCP 服务器核心功能:接收并处理 MCP 客户端的请求,返回 JSON-RPC 风格的结果,支持资源查询、工具执行、以及 NL 问答入口。
- 暴露工具
- sql_query:直接执行 SQL 查询并返回结果。
- agent_ask:接收自然语言问题,交给 AI 助手转化为 SQL 并返回答案(前置依赖:编译时开启 AI Agent 支持)。
- 数据源与表格能力:提供对 Binary Ninja 数据库中常用表的访问(如 funcs、strings、imports、xrefs、blocks 等)。
- 安全与传输:通过 SSE 的 MCP 通道实现客户端与服务器之间的实时通信;可与 Claude Desktop 等 MCP 客户端配合使用。
- 服务器模式与集成性:同时提供本地 HTTP/REST、原始 TCP 等扩展轨迹支持(如有编译配置),以及 MCP 服务入口,方便在不同场景下接入。
-
安装步骤
- 环境与依赖
- 需要一个支持的构建系统(如 CMake),以及 Binary Ninja 的开发环境。
- 建议在开启 AI Agent 支持的编译选项下构建(以使 agent_ask Tool 可用),并确保相关依赖可用。
- 构建与编译
- 配置构建参数,确保开启 BNSQL 的 MCP/AI 辅助能力,例如通过编译选项启用 AI Agent 支持。
- 构建生成可执行文件。
- 启动 MCP 服务器
- 通过命令行启动 MCP 服务器:在包含目标数据库的基础上启动,可选端口默认为 9998,服务器将提供 /sse 端点供 MCP 客户端连接。
- 运行时注意
- 将服务器端口开放给需要访问的 MCP 客户端,按需配置绑定地址和认证策略(如需要 token 的场景)。
- 环境与依赖
-
服务器配置(供 MCP 客户端使用的配置示例,JSON 形式) 注意:以下配置用于描述如何让 MCP 客户端知道如何启动并连接到服务器。MCP 客户端本身不需要包含代码,仅需要读取该配置以建立连接。
{ "server_name": "bnsql-mcp", "command": "bnsql", "args": ["<database.bndb>", "--mcp", "9998"] }
配置字段说明
- server_name: MCP 服务器在客户端侧的标识名称,便于在多服务器场景中区分。
- command: 启动 MCP 服务器的可执行程序,此处指向 BNSQL 的主程序(可以是本地二进制)。
- args: 启动参数列表。包含目标数据库文件路径以及开启 MCP 的参数。端口号(如 9998)可通过参数调整,默认端口为 9998,SSE 端点为 http://localhost:9998/sse。
-
基本使用方法
- 启动服务器后,使用 MCP 客户端配置指向 http://<host>:<port>/sse。
- 使用 sql_query 工具执行 SQL 查询,得到结构化结果(列名、行数据)。
- 使用 agent_ask 工具进行自然语言问答(需要 AI 助手能力支持的编译选项)。
- MCP 客户端可以通过工具接口发起查询、提问并接收格式化的结果与日志。
-
备注
- MCP 服务与 Binary Ninja 数据库紧密耦合,面向 LLM/AI 场景的上下文提供与能力扩展设计。
- 如需使用 HTTP REST、Raw TCP 等模式,请按实际编译选项开启相关模块。