关于 Radare2 MCP Server
Radare2 MCP Server 是用 C 编写的 MCP 服务,将 radare2 的二进制分析能力暴露给 AI Agent。它可以作为命令行工具、r2 核心插件或 MCP 服务运行,面向逆向工程与安全分析人员。
主要功能
- 01基于原生 r2 API 实现
- 02支持 stdio 与 HTTP 两种 MCP 传输方式
- 03支持只读模式、沙箱锁定与工具限制
- 04可通过 r2pipe 连接本地或远程 r2 会话
- 05支持通过 X-Session-ID 进行多会话复用
- 06可选的 r2 命令与 r2js 脚本原始访问
适用场景
- 01让 AI 客户端辅助分析二进制文件结构与函数
- 02通过 r2xsql 插件使用 SQL 查询分析结果
- 03在已加载文件的 radare2 会话中直接提供 MCP 工具
MCP 相关
该项目是一个 MCP 服务,向支持 MCP 的客户端(如 Claude、VS Code、Zed)提供 radare2 相关工具,可通过 stdio 或 HTTP 连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Radare2 MCP 服务
一个 MCP 服务,可将 radare2 与 OpenCode、Mai、VSCode、Claude、CLION 等 AI Agent 搭配使用。
功能
此实现提供:
- 💻 完全使用 C 编写,并采用原生 r2 API
- 🧩 可通过命令行使用,也可作为 r2 插件和 MCP 服务运行
- 🔍 使用 radare2 无缝分析二进制文件
- 🔗 通过 r2pipe 连接任意本地或远程 r2/iaito 会话
- 🔒 支持只读模式、沙箱锁定和受限工具
- 🔩 精细配置工具
- 🔁 直接通过 stdin/stdout 通信
- 🌐 HTTP MCP 服务模式,可选使用
X-Session-ID多路复用 - 🛠️ 可选的原始访问权限,用于运行 r2 命令或 r2js 脚本
安装
使用 r2pm
使用 r2pm 安装软件包是最简单的方法:
$ r2pm -Uci r2mcp
r2mcp 可执行文件将被复制到你主目录下的 r2pm bindir 中。不过,不应直接从 shell 执行此二进制文件;它只能由你选择的大语言模型的 MCP 服务处理程序启动。
$ r2pm -r r2mcp
这是常见的 mcpServer JSON 配置文件:
{
"mcpServers": {
"radare2": {
"command": "r2pm",
"args": ["-r", "r2mcp"]
}
}
}
Codex
只需运行以下命令即可安装 Codex 插件:
make codex-plugin-install
这会在你的主目录中创建一个个人市场,并将 dist/codex-plugin 中的文件复制进去。
使用 Docker
或者,你也可以构建 Docker 镜像:
docker build -t r2mcp .
更新 MCP 客户端配置文件(见下文),以使用 Docker 镜像:
"command": "docker""args": ["run", "--rm", "-i", "-v", "/tmp/data:/data", "r2mcp"].
配置
HTTP 服务模式
使用 -H [address:]port 将 r2mcp 作为 HTTP MCP 服务运行,而非通过
stdin/stdout 通信。仅指定端口时会绑定到 127.0.0.1;如需让服务可从网络访问,
请显式使用 0.0.0.0:port:
r2mcp -H 8765
# Public binding; protect this with -a <token> or -A.
r2mcp -H 0.0.0.0:8765 -A
使用 -X max[:idle_seconds] 可启用按会话隔离的 HTTP 状态,并通过
X-Session-ID 请求标头进行路由:
r2mcp -H 8765 -X 8:600
使用 -a <token> 可启用 HTTP bearer 身份验证。客户端必须在每个
GET 和 POST 请求中发送
Authorization: Bearer <token>:
r2mcp -H 8765 -a my-secret-token
使用 -A 或 -a random 可在启动时生成随机令牌。生成的
令牌只会在 stderr 中打印一次:
r2mcp -H 8765 -A
也可以通过 R2MCP_AUTH_TOKEN 提供相同的令牌设置;将其设为
random 即可生成随机令牌。
-X 要求 radare2 ABI 为 91 或更高版本,因为较旧的 radare2 头文件未公开
HTTP 请求标头 API。对于较旧的 ABI,-H 仍可用作
单个共享 HTTP 服务,但 -X 会被忽略。Bearer 身份验证也
需要此标头 API。
r2 核心插件模式
r2 核心插件会在现有的 radare2 会话中提供 r2mcp 命令。在 r2 中启动 HTTP 模式会复用当前的 RCore,因此 MCP 工具会针对该会话中已加载的文件和分析状态运行:
r2 -e r2mcp.port=8765 -c 'r2mcp start' /bin/ls
常用子命令:
r2mcp start或r2mcp http在后台启动 HTTP MCP 服务。r2mcp stop、r2mcp restart和r2mcp status用于管理后台服务。r2mcp logs on|off和r2mcp logs file <path>用于控制插件调试日志。r2mcp approve on|off和r2mcp approve url <url>用于控制 supervisor 审批。r2mcp yolo on|off会禁用审批并开放危险的运行工具。r2mcp config会列出r2mcp.*eval 键。
该插件会为与 CLI 提供相同服务选项的 eval 键注册以下配置:
r2mcp.port、r2mcp.log、r2mcp.logfile、r2mcp.auth、r2mcp.approve、r2mcp.svc、
r2mcp.yolo、r2mcp.mini、r2mcp.permissive、r2mcp.run、
r2mcp.readonly、r2mcp.ignore_analysis、r2mcp.prompts、
r2mcp.prompts.dir、r2mcp.sandbox、r2mcp.sandbox.grain、
r2mcp.content、r2mcp.enabled、r2mcp.disabled、
r2mcp.session_tools、r2mcp.sessions、r2mcp.sessions.max、
r2mcp.sessions.timeout、r2mcp.decompiler 和 r2mcp.baseurl。
使用 -i 手动加载插件时,请在插件加载后设置这些键,例如使用 -c 'e r2mcp.port=8765',因为 radare2 会在临时插件初始化前处理早期的 -e 选项。
通过 r2xsql 使用 SQL
为 r2mcp 使用的同一 radare2 构建版本安装 r2xsql 核心插件。在本地模式下,无需 -r 即可使用 sql 工具。调用 open_file、analyze 和 sql,并传入如下参数:
{"query":"SELECT name, size FROM funcs WHERE size > 100 ORDER BY size DESC LIMIT 10"}
sql 工具会将一条语句直接传递给已加载的 SQL 核心插件,并保留 SQL 运算符和引号内的文本。结果为插件的文本输出。该工具支持 SQL 写入,因此在只读模式(-R)下不可用。请通过本地 r2mcp 服务或 r2mcp 核心插件使用;远程 r2 HTTP 客户端模式(-u)不会开放此工具。
已安装的插件会自动加载。若要显式加载某个构建版本,请在 r2mcp 命令中添加 -c 'L /absolute/path/core_r2xsql.so'。MCP 请求或 -T 测试开始前会按顺序运行启动命令,并丢弃其输出,以确保 stdout 符合 MCP 要求。在 macOS/Windows 上,请使用实际的插件文件名。
Claude Desktop 集成
在 Claude Desktop 桌面应用中,按 CMD + , 打开 Developer 设置。编辑配置文件,并在编辑 JSON 文件后重启客户端,具体如下:
-
找到 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
在配置文件中添加以下内容:
{
"mcpServers": {
"radare2": {
"command": "r2pm",
"args": ["-r", "r2mcp"]
}
}
}
VS Code 集成
若要通过将其添加到用户配置,在 Visual Studio Code 中将 r2mcp 与 GitHub Copilot Chat 搭配使用(其他选项见此处):
- 使用
CMD + Shift + P(macOS)或Ctrl + Shift + P(Windows/Linux)打开命令面板。 - 搜索并选择
Copilot: Open User Configuration(在 macOS 上通常位于~/Library/Application Support/Code/User/mcp.json)。 - 在配置文件中添加以下内容:
{
"servers": {
"radare2": {
"type": "stdio",
"command": "r2pm",
"args": ["-r", "r2mcp"]
}
},
"inputs": []
}
Zed 集成
你也可以通过将其添加到配置中,在 Zed 中使用 r2mcp:
- 打开命令面板:
CMD + Shift + P(macOS)或Ctrl + Shift + P(Windows/Linux)。 - 搜索
agent: open configuration或settings。 - 按如下方式添加服务:
"context_servers": {
"r2-mcp-server": {
"source": "custom",
"command": "r2pm",
"args": ["-r", "r2mcp"],
"env": {}
}
}
注意:你需要使用 Claude、Gemini 或其他 LLM Agent 才能使用它。
面向开发者
从源代码构建
Linux/macOS
要在本地测试服务,可以使用 make 构建并安装:
make install
这将编译服务,并在 macOS 上将 r2mcp 二进制文件放置到 /usr/local/bin。
Windows
在 Windows 上,只需像 CI 中那样使用 meson 和 ninja:
meson b
ninja -C b
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。