mcpField
R
Radare2 MCP Server

Radare2 MCP Server

本地服务
github.com安全3352 周前更新

关于 Radare2 MCP Server

Radare2 MCP Server 是基于 radare2 的 MCP 服务,用 C 语言编写并直接调用 r2 原生 API,使 AI Agent 能够进行二进制分析。它可以作为命令行工具、r2 核心插件或 MCP 服务运行,适合逆向工程和安全研究人员。

主要功能

  1. 01基于原生 r2 API 的 C 实现
  2. 02支持命令行、r2 插件和 MCP 服务三种模式
  3. 03通过 r2pipe 连接本地或远程 r2/iaito 会话
  4. 04只读模式、沙箱锁定与工具限制
  5. 05HTTP 模式支持 X-Session-ID 多会话与 Bearer 认证
  6. 06可选的原始 r2 命令与 r2js 脚本执行

适用场景

  1. 01让 AI Agent 辅助分析二进制文件结构与函数
  2. 02在 r2 会话中通过 MCP 工具操作已加载的分析状态
  3. 03通过 SQL 查询 r2 分析结果,如函数列表与大小

MCP 相关

该项目是 MCP 服务,通过 stdio 或 HTTP 向 MCP 客户端暴露 radare2 的分析工具,例如 open_file、analyze 与 sql。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"radare2-mcp-radareorg": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Radare2 MCP 服务

ci radare2

r2mcp logo

一个 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 脚本

安装

截图_2025-03-22_下午5 34 47 截图_2025-03-22_下午5 36 17
使用 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 文件后重启客户端,具体如下:

  1. 找到 Claude Desktop 配置文件:

    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:%APPDATA%\Claude\claude_desktop_config.json
  2. 在配置文件中添加以下内容:

{
  "mcpServers": {
    "radare2": {
      "command": "r2pm",
      "args": ["-r", "r2mcp"]
    }
  }
}

VS Code 集成

若要通过将其添加到用户配置,在 Visual Studio Code 中将 r2mcp 与 GitHub Copilot Chat 搭配使用(其他选项见此处):

  1. 使用 CMD + Shift + P(macOS)或 Ctrl + Shift + P(Windows/Linux)打开命令面板。
  2. 搜索并选择 Copilot: Open User Configuration(在 macOS 上通常位于 ~/Library/Application Support/Code/User/mcp.json)。
  3. 在配置文件中添加以下内容:
{
  "servers": {
    "radare2": {
      "type": "stdio",
      "command": "r2pm",
      "args": ["-r", "r2mcp"]
    }
  },
  "inputs": []
}

Zed 集成

你也可以通过将其添加到配置中,在 Zed 中使用 r2mcp:

  1. 打开命令面板:CMD + Shift + P(macOS)或 Ctrl + Shift + P(Windows/Linux)。
  2. 搜索 agent: open configuration 或 settings。
  3. 按如下方式添加服务:
  "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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。