REA MCP 安装指南:接入 Claude Code、Cursor 与 Codex
本页目录
REA(Reverse Engineer Anything)是 morluto 维护的开源项目,它通过 MCP 给 AI 编程 agent 提供逆向分析工具。你向 agent 提一个关于本地程序或二进制文件的问题,REA 负责检查目标,返回的结论都附带证据(Evidence):源码位置、地址、引用关系,以及它没能确定的未知项。同样的工作流也可以在终端里通过 rea 命令行直接运行。
这篇文章适合想把 REA 接入 Claude Code、Cursor、Codex 或其他 MCP 客户端的开发者,也适合想先搞清楚“setup 到底会改我电脑上哪些东西”的人。读完后你会:
- 准备好受支持的 Node.js 版本;
- 用
npx rea-agents setup把 REA 注册到自己的 agent; - (可选)装好全局
rea命令,并知道怎么更新; - 用
rea providers和rea capabilities弄清本机有哪些分析引擎(provider)可用; - 完成第一次不需要任何反汇编器的分析。
本文基于 REA 6.4.0,也就是项目安装文档中记录的 npm 版本。REA 迭代很快,如果本文的参数和你本机 rea --help 的输出不一致,以 --help 为准。
前置条件
Node.js 22.19+、24.11+ 或 26+,以及 npm。 这是唯一的硬性要求。准确的支持范围是:Node.js 22.x(>=22.19)、24.x(>=24.11)和 26+。Node.js 23、25 以及各种预发布版本都不受支持。REA 直接使用 Node.js 自带的 npm,不会替你升级 Node、npm 或 Homebrew。
先确认当前版本:
node -v
npm -v
如果 node -v 版本太旧,或者提示找不到命令,就安装 Node.js 24 LTS。REA 官网的 get-started 页面给出了这些方式:
# Windows (PowerShell)
winget install OpenJS.NodeJS.LTS
# macOS with Homebrew
brew install node
# macOS / Linux without Homebrew: install fnm, reopen the terminal, then
curl -fsSL https://fnm.vercel.app/install | bash
fnm install 24
fnm default 24
为什么要这么较真:很多 Linux 发行版仓库里的 nodejs 版本低于 22.19,而 REA 只支持上面列出的版本线。先把运行时搞对,后面就不会遇到莫名其妙的报错。
一个支持本地 MCP server 的编程 agent。 最常见的是 Claude Code、Codex 和 Cursor。setup 也能识别 Claude Desktop、Gemini CLI、Windsurf、VS Code、GitHub Copilot CLI、OpenCode、Qwen Code、Grok Build 等(见第 2 步的表格)。
可选:原生分析引擎。 只有分析原生二进制时才需要 Ghidra、Hopper 或 IDA。JavaScript/Electron 和 .NET 的静态分析不需要它们,引擎可以以后再配。
第 1 步:运行 setup
在任意目录执行:
npx rea-agents setup
如果想确保拿到 npm 上最新发布的版本,而不是缓存或当前项目里的旧版本,显式加上标签:
npx rea-agents@latest setup
整个过程分几步,每一步都需要你确认,所以可以放心运行:
- npm 先询问是否下载包。 这是 npm 自己的提示,同意它并不等于同意 REA 修改任何配置。
- REA 列出支持的 agent 让你多选。 已有的 REA 注册默认勾选;新检测到的客户端会列出来但不会默认勾选——检测到只是参考信息,不代表授权。
- REA 展示变更计划。 包括要改动的每个 agent 配置文件路径、skill 安装位置、涉及的外部软件;如果你选了 Hopper,还会单独列出它的安装计划。你批准之前不会写入任何文件。
- REA 执行计划。 写配置时保留无关条目和注释,创建
.rea.backup备份,原子替换文件并校验结果。 - 按完成提示重启对应的 agent。
对每个 agent,setup 做两件事:添加 REA 的 MCP server 条目,以及安装 REA 自带的工作流 skill(给 agent 用的调查步骤说明)。Claude Code 的 skill 装在 ~/.claude/skills(或 $CLAUDE_CONFIG_DIR/skills),大多数其他客户端用 ~/.agents/skills。只想要 MCP server、不想装 skill,就加 --skill=false。
setup 会把注册信息锁定到执行 setup 的那个 REA 版本。6.4.0 写入的配置长这样:
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "rea-agents@6.4.0", "mcp"]
}
}
}
版本锁定的好处是:agent 不会在你项目做到一半时悄悄换成新版 REA,升级由你主动决定(见第 3 步)。对 Codex 和 Grok Build,setup 还会加上 startup_timeout_sec = 30。
正确地重启
这里的“重启”是指彻底重启。终端类 agent(Claude Code、Codex、Gemini CLI)要退出会话再重新启动;桌面应用(Cursor、Claude Desktop、Windsurf、VS Code)要完全退出,macOS 上按 ⌘Q,只关窗口不够。setup 运行时已经开着的 agent,在重新连接之前看不到新的 server。
让 agent 帮你运行 setup
也可以把下面这段话贴给 agent,这是 REA 官网建议的提示词:
Install REA and connect it to this coding agent using npx rea-agents@latest setup.
Show me the setup plan for approval, then verify the installation.
agent 会执行同样的命令,并且应当先把计划给你看。计划请自己读、自己批准,不要让 agent 代你点同意。
第 2 步:指定 agent(Claude Code、Cursor、Codex)
在自己电脑上用交互式选择就够了。如果是写脚本、管理 dotfiles 或者要在多台机器上复现,就用可重复的 --client 参数显式指定客户端,指定后会跳过交互式选择。
先为 Codex 和 Cursor 生成计划,但不写入任何东西:
npx rea-agents@latest setup --client codex --client cursor --dry-run
--dry-run 返回状态 planned,退出码为 0;去掉它就会真正执行。支持的 agent 列表中常用的客户端 ID:
| 客户端 | --client 取值 |
|---|---|
| Claude Code | claude_code |
| Claude Desktop | claude_desktop |
| Codex | codex |
| Cursor | cursor |
| Gemini CLI | gemini_cli |
| Windsurf | windsurf |
| VS Code | vscode |
| GitHub Copilot CLI | copilot_cli |
| OpenCode | opencode |
| Qwen Code | qwen_code |
| Grok Build | grok_build |
无人值守时可以用 --yes 自动批准,但它只在明确的范围内生效:要和 --client 搭配(或者你确实想覆盖所有检测到的客户端时用 --all-detected)。不带范围参数时,--yes 只会刷新已有的 REA 注册。加 --json 可以得到机器可读的输出:
npx rea-agents@latest setup --client claude_code --yes --json
setup 不认识的客户端
只要客户端能启动本地 stdio MCP server,就能用 REA:把上面那段带版本号的配置加进它的 MCP 配置即可。REA 也登记在 MCP Registry 中,名称是 io.github.morluto/rea,支持 Registry 发现的客户端可以直接搜到。
第 3 步:可选的全局 CLI 与更新方式
给 agent 用的话,npx 就够了。如果还想在 shell 里直接敲 rea,就全局安装:
npm install --global rea-agents
rea --help
注意:不带 --global 的 npm install rea-agents 只会把 rea 放进当前项目的 node_modules/.bin,不会出现在 PATH 里。这是 “rea: command not found” 最常见的原因。
REA 修 bug 很频繁,建议经常更新。全局 npm(或 Bun)安装的更新命令:
rea update
rea update 只更新当前运行的 CLI 所属的那份全局安装,并在完成后校验新版本号。它不会改写 agent 的注册信息——注册仍然锁定在旧版本。更新结束时它会打印一条限定范围的 setup 命令,运行它、审阅并批准注册刷新,再重启 agent。
如果从来没全局安装、一直用 npx,刷新方式是:
npx rea-agents@latest setup
不安装任何东西、只查最新发布版本:npm view rea-agents dist-tags.latest。
Bun 用户可以把 npx rea-agents@latest 换成 bunx rea-agents@latest。Bun 全局更新要求 Bun 1.2.17 或更高。
以后想卸载:rea uninstall 只移除 REA 自己的注册和 skill 文件;rea uninstall --purge-data 还会清掉 ~/.rea 下的缓存和状态。Hopper、Node.js、你的 Evidence 文件和其他 MCP server 都不受影响。
第 4 步:用 rea providers 和 rea capabilities 看清能分析什么
在把原生二进制交给 REA 之前,先问问它这台机器上到底有哪些引擎可用:
rea providers --json
rea capabilities --json
(没有全局安装时:npx -y rea-agents@latest providers --json。)
providers 列出二进制会话的 provider(Hopper、Ghidra、IDA)以及每个 provider 支持的操作;capabilities 补充辅助能力。两者合起来回答的问题是:“我把这个可执行文件交给 REA,谁来分析它?“它们反映的是 CLI 的视角;在 agent 里,以已连接 server 实际提供的工具列表为准。
provider 的选择规则很简单:
- 只有一个可用 provider 支持该目标时,REA 自动使用它。
- 有多个时,REA 返回
ambiguous错误,并在details.candidate_ids里列出候选。CLI 用--provider ghidra指定,MCP 在open_binary里传provider_id。 - 想长期偏好某个引擎,就设置
REA_ANALYSIS_PROVIDER=ghidra;显式的--provider优先级更高。
如果一个引擎都没有:Ghidra 免费,参见本站的 REA + Ghidra 分析原生二进制;Hopper 是商业软件但有演示模式,setup 可以在你单独批准后安装它;IDA 通过已有的 IDA MCP 注册接入,见 IDA 指南。
第 5 步:第一次分析
先从不需要原生引擎的任务开始:对 JavaScript 或 Electron 应用做静态分析。REA 只读文件,不会运行应用。
REA 官网正好提供了一个练习目标:一个只有六个文件的 Electron 笔记应用,带一个 Export notes 按钮(见 first investigation 教程)。下载 https://rea.tools/examples/notes-example.zip 并解压,然后运行:
rea analyze-javascript-application /absolute/path/to/notes-example --json > notes-evidence.json
为什么要重定向到文件:应用的 Evidence 可能非常大(REA 文档里提到过一个真实 Electron 应用的 Evidence 文件有 334 MB)。存成文件后,你或 agent 可以按需读取其中的投影视图,而不是把终端刷屏。对目录或 .asar 目标,直接用 rea analyze PATH 也会走同一个工作流。
接着在 agent 里做同样的事。在 Claude Code、Cursor 或 Codex 中提问:
Use REA to inspect /absolute/path/to/notes-example and find what happens when
I click Export notes. Show where notes.csv is written, which fields it contains,
and the relevant files and lines.
(用中文提问也可以,比如:“用 REA 分析 /absolute/path/to/notes-example,告诉我点击 Export notes 之后发生了什么,notes.csv 写到哪里、包含哪些字段,并给出相关文件和行号。”)
好的回答会从 renderer.js 里的按钮出发,经过 preload.js 中的 notes:export 消息,追到 main.js 里把 notes.csv 写进下载目录的处理函数。REA 官网展示的处理函数是:
ipcMain.handle("notes:export", () => {
const destination = path.join(app.getPath("downloads"), "notes.csv");
writeFileSync(destination, toCsv(notes), "utf8");
return destination;
});
如果 agent 的回答没有文件名和行号,就追问它要。REA 的价值就在于有证据支撑的结论,agent 也应该把“观察到的事实”和“推断”分开说。
这一步跑通,就说明整条链路都正常:Node 运行时、MCP 注册、skill 以及 REA 的分析工作流。
常见安装问题与排错
agent 里看不到 REA 的工具。 绝大多数是没有彻底重启。完全退出客户端再打开,然后检查它的注册:
npx -y rea-agents@latest doctor --client codex --json
把 codex 换成 claude_code、cursor 等即可。doctor 检查的是配置文件和前置条件,不检查实时连接;如果注册正常但工具仍然缺失,说明客户端需要重新连接。
rea doctor 报告不健康,可我只想做 JavaScript 分析。 不带参数的 rea doctor 会审计所有内容,包括你可能根本没装的可选引擎。按任务限定范围:rea doctor --provider ghidra --json、rea doctor --client cursor --json 或 rea doctor --skill --json,限定后退出状态只反映该范围。静态 JavaScript 分析直接运行 analyze-javascript-application 就行。
Node 版本不对或运行时不受支持。 再确认一遍 node -v。fnm、nvm 之类的版本管理器可能让 GUI 客户端拿到和终端不同的 PATH,于是它启动的 npx 跑在旧版 Node 上。把受支持的版本设为默认(例如 fnm default 24),再重启客户端。
rea: command not found。 安装时没加 --global,或者 npm 的全局 bin 目录不在 PATH 里。改用 npm install --global rea-agents,或者继续用 npx -y rea-agents@latest <command>。
PowerShell 提示 “running scripts is disabled on this system”。 执行一次 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned,再重试 npx。
setup 拒绝写入。 已有客户端配置格式错误或路径不安全时,整个事务会在写入前中止。按提示修好对应文件(之前的运行会留下 .rea.backup),再重新运行。
文档里提到的新功能找不到。 仓库 main 分支可能领先于 npm 发布版。安装文档会注明哪些功能只在 main 上,例如 DeepSeek Harness(dsh)就不在 6.4.0 里。
agent 里的 Ghidra 查询超时。 第一次 Ghidra 查询要导入并自动分析二进制,可能要好几分钟。REA 默认给 330,000 ms(REA_GHIDRA_STARTUP_TIMEOUT_MS),但 MCP 客户端对单次工具调用的超时可能更短。详见 Ghidra 那篇文章。
Claude Code 配了第三方 ANTHROPIC_BASE_URL 后不停压缩上下文。 这种模式下 Claude Code 每次请求都会发送全部工具定义。客户端配置说明建议在 rea server 条目的 env 中加入 "REA_MCP_INPUT_SCHEMA_PROFILE": "compact",setup 会保留这项覆盖。
还是解决不了?先更新(rea update 或 npx rea-agents@latest setup)再重试;问题依旧就去提 issue,附上 REA 版本、目标类型、复现步骤和错误输出。
关于合规使用
REA 在本地分析目标,但 agent 会把工具结果发给它所用的模型服务商。只分析你拥有或已获授权的软件;在对应用、设备或网络做运行时采集之前,请先阅读项目的 DISCLAIMER.md。
下一步
- 用免费引擎分析原生程序:REA + Ghidra 分析原生二进制
- 追踪桌面应用的 preload 和 IPC:Electron 应用逆向分析
- 用 agent 练习 CTF 逆向题:用 REA + AI agent 解 CTF 逆向题
- 保存并对比不同版本的结果:Evidence、快照与版本对比
- 了解 REA 与其他逆向 MCP 的区别:REA 与 GhidraMCP、IDA Pro MCP 对比