🔓 unclaimed — this page was auto-generated from GitHub. Are you the creator?
Claim this page →
frx-director-mcp
强模型(Claude/GPT)经 MCP 指挥 firefox-reverse 浏览器内置逆向 Agent —— 便宜模型在「AI 辅助」模式下执行工具、强模型只做方向修正。高能力领航 + 低成本实操,自动化 Web 签名/加密逆向。
{
"mcpServers": {
"frx-director-mcp": {
"command": "npx",
"args": ["-y", "https://github.com/WhiteNightShadow/frx-director-mcp"]
}
}
}frx-director-mcp
两种模式驱动浏览器逆向 —— ① 强模型领航 · 低模型实操 ② 强模型带自建经验库 · 亲自直驱
EN — TL;DR: An MCP server bridging a high-capability model (Claude / GPT) to the firefox-reverse browser's built-in reverse-engineering engine. Two composable modes: (1) Delegate — the strong model directs while a cheap worker (DeepSeek / Qwen / GLM) executes all tooling (token cost-split); (2) Direct-drive — the strong model uses its own skill / experience library and calls the 44 engine tools itself via
agent_call_tool. Never touches your API key (configured once in the browser).
frx-director-mcp 是一个 MCP 服务,把强模型(Claude / GPT)通过标准 MCP 协议接到 firefox-reverse 浏览器内置的逆向引擎上。两种可自由组合的模式:
- 模式一 · 领航委派(高模型配置、低模型调用):强模型当 director 只下方向、审结论;便宜的 worker 模型(DeepSeek-flash / Qwen-turbo / GLM)在浏览器里执行全部工具(抓包、签名追踪、补环境、脚本验证…)。token 天然拆分——强模型的判断力用在最高杠杆点,重复执行交给低成本模型;worker 复用浏览器内置的逆向方法论。
- 模式二 · 经验库直驱(高模型带自建经验库、亲自调用):强模型用自己的经验库 / 技能(skill)/ 方法论,通过
agent_call_tool亲自直调浏览器的 44 个核心逆向工具(signer_trace/jsvmp_trace/closure_read/page_eval/ 引擎级 hook…),跳过 worker。更快更准、可注入你自己的逆向经验;代价是每个工具回合花强模型的 token。
两种模式共用同一套桥接与浏览器引擎,可按任务、按步自由切换。服务本身零站点逻辑、不接触任何 API Key(Key 仅在浏览器侧配置)。
目录
两种模式 · 工作流程 · 系统架构 · 快速开始 · 一键使用 · 工具参考 · 安全与约束 · 开发
两种模式
| 模式一 · 领航委派 | 模式二 · 经验库直驱 | |
|---|---|---|
| 谁执行工具 | 便宜的 worker 模型(浏览器内) | 强模型自己(经 MCP 直调) |
| 强模型角色 | 下方向 / 审阶段结论 | 亲自调用每个工具 |
| 经验 / 方法论来源 | 浏览器内置 skill(worker 用) | 强模型自带的经验库 / skill |
| token 开销 | 低(每轮读结论 + 写一条方向) | 高(每个工具回合都花强模型 token) |
| 适合 | 长任务、省钱、worker 够用 | 强模型本身懂逆向、要更快更准、要带自己的经验库 |
| 关键工具 | agent_start / agent_send / agent_read | agent_tools + agent_call_tool |
模式一(默认,省钱主路) 是结构性的成本拆分:强模型只在最高杠杆点介入,assist(AI 辅助阶段门)强制 worker 每阶段产出可审阅结论,让强模型尽早拦截错误路线。
模式二(0.2.0 起,opt-in 增益) 把浏览器的 44 个核心工具直接暴露给强模型:先 agent_tools 看清能力与参数,再 agent_call_tool 亲自直调。强模型可带自己的逆向经验库 / skill(例如把一套方法论作为 system prompt),用引擎级工具(页面检测不到)一步步控制浏览器。
两者不是二选一:可以同一会话里简单步骤亲自
agent_call_tool快跑、繁重重复步骤agent_start委派 worker。唯一约束:同一浏览器同一时刻只跑一种——agent_call_tool在有 worker 会话运行时会被拒绝(与 agent 共享标签页 / hook / trace 状态,并发会串味),先agent_stop/agent_wait_for_stop再直调。
工作流程
模式一 · 领航委派(强模型下方向、worker 执行):
强模型 director (Claude / GPT) firefox-reverse 浏览器
┌───────────────────────┐ MCP / stdio ┌──────────────────────────────┐
│ ① agent_start 下目标 │ ─────────────────▶ │ worker 模型(便宜)执行 44 工具 │
│ ② agent_wait_for_stop │ │ 抵达阶段门 → 产出阶段结论 │
│ ③ agent_read 审阅 │ ◀───────────────── │ │
│ ④ agent_send 纠方向 │ ─────────────────▶ │ 按新方向继续 │
└───────────────────────┘ └──────────────────────────────┘
└──────────── 循环 ②~④,直到产出可独立运行的结果 ────────────┘
强模型每轮只消耗少量 token(读结论 + 写一条方向);worker 承担全部工具执行。
模式二 · 经验库直驱(强模型带自己的经验库、亲自调每个工具):
强模型 (Claude + 自建经验库/skill) firefox-reverse 浏览器
┌───────────────────────┐ MCP / stdio ┌──────────────────────────────┐
│ ① agent_tools 看能力 │ ─────────────────▶ │ 返回 44 工具的名/参数/说明 │
│ ② agent_call_tool 直调 │ ─────────────────▶ │ 引擎级 dispatch → 工具信封 │
│ (signer_trace/ │ ◀───────────────── │ (与内置 Agent 同一套引擎) │
│ page_eval/…) │ │ │
└───────────────────────┘ └──────────────────────────────┘
└── 强模型用自己的判断+经验库,逐个工具推进,无需 worker ──┘
强模型直接掌舵引擎工具:更快更准、可注入自己的逆向经验;代价是工具回合的 token 由强模型承担。
系统架构
director (Claude / GPT)
│ stdio (MCP)
▼
frx-director-mcp ──── 11 tools ──── BrowserBridge(Marionette 默认 / File 备用)
│ 模式一: agent_start/send/read… │ 模式二: agent_tools + agent_call_tool
│ │ TCP 127.0.0.1:2828 · chrome-context ExecuteScript
│ 每会话 convo / turnlog ▼
│ ChromeUtils.importESModule(AgentSession.sys.mjs)
▼ │ run / getState / stop
本地工作目录 agentSession 单例(firefox-reverse 父进程常驻)
▼
内置逆向 Agent(worker 模型)+ 工作目录 ledger.md / progress.md
桥接层(BrowserBridge)是抽象接口,默认实现走 Marionette;可切换至 FileBridge 作为备用通道,工具层无需改动。
快速开始
前置条件
-
安装 firefox-reverse 浏览器,并在其 Agent 设置中为一个便宜的 worker 模型配置 API Key(DeepSeek / 通义千问 / GLM 等;本服务不接触该 Key)。
💡 worker 模型选型(重要):走 MCP 驱动这种长工具循环时,务必选标准 / 快速档,推荐
deepseek-v4-flash—— 实测零漂移、约 2–3 分钟/阶段、配合最顺。切勿用推理档(如deepseek-v4-pro):推理档在长工具循环里易退化成「只吐纯文本计划、不再调用工具」而中断,是 worker 的首要失败模式。可在浏览器 Agent 设置里把默认 worker 设为该档,或在agent_start({ model: "deepseek-v4-flash" })里临时指定(同一个 Key、无需改配置)。 -
以 Marionette + 系统权限启动浏览器(chrome 上下文执行特权 JS 所必需):
"/Applications/Firefox Reverse.app/Contents/MacOS/firefox" \ -marionette -remote-allow-system-access -profile "<你的 profile>"(或配置
FRX_AUTOLAUNCH=1等环境变量,由本服务自动拉起。) -
Node.js ≥ 18。
方式一:让 AI 自动安装(推荐)
在你的 AI 编码工具(Cursor / Claude Code / Codex 等)对话框中输入:
帮我安装并配置这个 MCP 工具:frx-director-mcp 项目地址:https://github.com/WhiteNightShadow/frx-director-mcp
AI 将自动完成 克隆 → 安装依赖 → 构建 → 写入客户端 MCP 配置 的全过程。
方式二:手动安装
git clone https://github.com/WhiteNightShadow/frx-director-mcp.git
cd frx-director-mcp
npm install && npm run build # 产物:dist/index.js
将以下条目加入你客户端的 MCP 配置(<安装路径> 替换为实际路径):
Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json
{ "mcpServers": { "frx-director": {
"command": "node",
"args": ["<安装路径>/frx-director-mcp/dist/index.js"]
} } }
Cursor — .cursor/mcp.json
{ "mcpServers": { "frx-director": {
"command": "node",
"args": ["<安装路径>/frx-director-mcp/dist/index.js"]
} } }
Claude Code — 命令行
claude mcp add frx-director -- node <安装路径>/frx-director-mcp/dist/index.js
可选环境变量(均有默认值;方式一会由 AI 自动填写,完整说明见 .env.example):
| 变量 | 说明 |
|---|---|
FRX_MARIONETTE_PORT | Marionette 端口,默认 2828 |
FRX_JSX_PROMPT_SRC | 指向 firefox-reverse 的 AgentPanel.jsx,使 director 系统提示与浏览器 UI 同步 |
FRX_WORKSPACE_ROOT | 会话工作目录根。默认放在 firefox-reverse 仓库旁 …/firefox-reverse-ws(从 FRX_JSX_PROMPT_SRC 推断仓库位置;推断不出则 ~/firefox-reverse-ws),每个会话一个子目录 |
FRX_DATA_DIR | MCP 自身状态(convo / turnlog,非逆向产物),默认 ~/.frx-director-mcp/data |
FRX_AUTOLAUNCH + FRX_FIREFOX_BIN / FRX_PROFILE | 由本服务自动拉起带 Marionette 的浏览器 |
📂 逆向产物在哪里? 工作目录归属 firefox-reverse 项目、而非 MCP 工具自身。默认每个会话的目录是
<firefox-reverse 仓库旁>/firefox-reverse-ws/<会话id>/(从FRX_JSX_PROMPT_SRC推断仓库位置;推断不出则~/firefox-reverse-ws/<会话id>/)—— 抓取的脚本、还原代码、ledger.md/progress.md都落在这里,与你从哪个目录启动无关;agent_start/agent_read的返回也会带上该会话的具体路径。要改位置,设FRX_WORKSPACE_ROOT即可。
一键使用(两种模式)
挑一种模式,将对应整段原样复制作为首条消息发给你的强模型;它会自动完成环境自检、引导你补齐配置、向你询问目标,并按该模式驱动逆向。
模式一 · 领航委派(省 token,worker 干活)
你现在通过一个叫 frx-director 的 MCP,指挥 firefox-reverse 浏览器里的内置逆向 Agent。
你是专业的 Web 端爬虫 / 签名逆向工程师,只负责【方向决策】,不亲自调用浏览器工具——所有工具执行由浏览器里那个便宜的 worker 模型完成,你只读它的阶段结论、给方向。成本拆分:你(强模型)每轮只花少量 token 审阅结论 + 写一条方向;便宜的 worker 承担全部工具执行。
【第 0 步 · 环境自检】先调用 frx_status。
- ready=true → 进入下面流程。
- bridgeConnected=false 或 hasKey=false → 把返回的 note 用一句话告诉用户、引导其补齐(用 -marionette 启动浏览器,或在浏览器 Agent 设置里为一个便宜 worker 模型如 qwen-turbo / deepseek-v4-flash 配置 Key);待其完成后再次 frx_status 确认,再继续。
【第 1 步 · 明确目标】若用户尚未提供目标,向其索取以下 4 项:
① 站点 URL(能观察到目标请求的页面) ② 接口 URL(要复现的请求) ③ 目标参数(要还原的签名 / 加密参数名) ④ 输出目标(通常为:Node.js 黑盒复刻、脱离浏览器独立请求成功)。
【第 2 步 · 启动】agent_start({task:"将上述 4 项整合为清晰任务", targetUrl:"站点 URL"});返回 tid,后续均使用它。
在 task 中给出你的判型与方法建议:简单站点优先 hook 比对标准算法、不必硬扣混淆;JSVMP 不逆字节码、走黑盒补环境;不臆测函数名,先 signer_trace 抓取真实入参。
【第 3 步 · 等待与审阅】
agent_wait_for_stop({tid}) 等待 worker 抵达阶段门(可能 10–30 分钟;phase:"running" 仅表示仍在执行、并非失败,可继续等待或先 agent_read 查看)。
agent_read({tid}) 读取阶段结论 + progress.md / ledger.md + driftHint / runlogTail。
★采信结论前务必查看 driftHint:勿将「模型漂移为纯文本 / idle 超时」误判为「路线确属不通」(worker 的首要失败模式)。
【第 4 步 · 方向修正】agent_send({tid, guidance:"..."}) 写一条具体、有序、可防止走弯路的指令,例如:
「仅执行第 1+2+3 步」「每步先验证再进入下一步」「先完成两个简单目标、勿过早深入最难的 JSVMP」「输出不匹配通常是输入未喂对,勿转向字节级逆向」「仅回报这 3 项」。
同时识别其自相矛盾(日志显示成功却写为失败)、拦截其臆断(如「换一个 bundle 就要换密钥」)。
【第 5 步 · 循环】重复第 3–4 步,直至产出可用结果(Node 独立请求目标接口、返回有效业务数据)。
当路线已锁定、仅剩机械收尾时,可 agent_set_mode({tid, mode:"auto"}) 让 worker 无人值守完成;若卡住再切回 assist。
若发现其正驶向错误路线,agent_stop({tid}) 中止后再以 agent_send 修正(进展已持久化,中止不丢失)。
现在开始:先调用 frx_status。
模式二 · 经验库直驱(强模型亲自调工具,可带你自己的逆向经验库)
适合用懂逆向的强模型(如 Claude)+ 你自己的方法论 / skill。把你的经验库(一套逆向方法论、站点经验、判型规则…)放在这段之前或作为 system prompt 一并给模型;它将用
agent_call_tool亲自驱动浏览器。
你现在通过一个叫 frx-director 的 MCP,亲自直驱 firefox-reverse 浏览器的逆向引擎工具(直驱模式,不经 worker)。
你是资深 Web 逆向工程师,按【你自己的经验库 / 方法论】判型与决策,并亲手调用浏览器引擎工具完成逆向。
【第 0 步 · 环境自检】先调用 frx_status。bridgeConnected=false → 引导用户用 -marionette 启动浏览器后重试。
注意:直驱模式只用浏览器引擎工具、不需要 worker 模型的 Key(hasKey=false 也能直驱)。
【第 1 步 · 看清能力】调用 agent_tools,记下 44 个工具的 name 与参数;重点是 16 个引擎级工具
(signer_trace / jsvmp_trace / closure_read / webapi_trace / whitebox_diff / wasm_probe / crypto_scan 等,页面检测不到)。
【第 2 步 · 明确目标】若用户未给,索取:① 站点 URL ② 接口 URL ③ 目标参数(签名/加密参数名)④ 输出目标(通常 Node 黑盒复刻、脱离浏览器请求成功)。
【第 3 步 · 亲自直驱】用 agent_call_tool({name, args}) 按你的方法论逐步推进,例如:
- page_navigate 到站点 → net_capture 抓目标请求 → 看签名参数长相判型;
- 标准算法优先 hook 比对(signer_trace / page_eval 装 hook 记入参出参 → 本地标准库比对),不硬扣混淆;
- JSVMP 不逆字节码、走黑盒补环境;闭包真值用 closure_read;WASM 用 wasm_probe;
- run_node 在工作目录里跑复刻、字节级比对自证;fs_write 落产物。
每次直调读返回信封(ok/data/error),据此决定下一步——这就是你的工具循环。
【约束】① 同一时刻只跑直驱:别再 agent_start 起 worker(会与直调抢同一标签页被拒)。
② 最终产物要能脱离浏览器独立运行(Node 补环境/纯算);浏览器只作分析与验证。
现在开始:先调用 frx_status,再 agent_tools。
工具参考
通用
| 工具 | 说明 |
|---|---|
frx_status | 首先调用 —— 自检:Marionette 是否连通、当前 worker provider / model、Key 是否已配置;未就绪时返回引导说明 |
agent_tools | 列出浏览器侧 44 个工具清单(名称 / 说明 / 是否需确认 / 参数名),含 16 个引擎级逆向工具(signer_trace / jsvmp_trace / closure_read / webapi_trace / whitebox_diff / wasm_probe…,页面检测不到)。两种模式都用:委派时照它写 guidance,直驱时照它填 agent_call_tool 的参数 |
模式一 · 领航委派(强模型下方向,worker 执行)
| 工具 | 说明 |
|---|---|
agent_start | 创建会话:绑定工作目录、选择 AI 辅助模式、导航至目标、下达首轮任务(仅校验 hasKey,不接触 Key) |
agent_wait_for_stop | 阻塞至 worker 抵达阶段门(settled);超时仍运行则返回 phase:"running"(继续等待,非失败) |
agent_read | 读取阶段结论 + progress.md / ledger.md + driftHint / runlogTail |
agent_state | 轻量存活 / 进度快照 |
agent_send | 委派模式核心动作 —— 携带上轮结论、追加方向指令、发起下一轮 |
agent_set_mode | 在 assist(逐阶段)与 auto(无人值守)之间切换 |
agent_stop | 中止当前轮(进展已持久化至工作目录,不丢失) |
agent_runlog | 引擎级运行日志,用于区分「确属路线不通」与「模型漂移 / idle 超时」 |
模式二 · 经验库直驱(强模型带自建经验库,亲自调用)
| 工具 | 说明 |
|---|---|
agent_call_tool | 直驱核心动作 —— 强模型亲自直调一个浏览器引擎工具(跳过 worker)。先 agent_tools 查 name/参数,再 agent_call_tool({name, args})。返回工具信封(ok/data/error,永不抛、已校验未知工具与缺参)。⚠ 有 worker 会话运行时被拒绝(共享页面 / hook 状态);需 firefox-reverse v0.20.0+ |
安全与约束
- 不接触 API Key —— Key 仅在浏览器侧配置;
agent_start仅校验hasKey布尔值;运行日志归档对疑似 Key 做脱敏处理。 - 本地回环 —— Marionette 端口(2828)仅绑定
127.0.0.1,请勿对外暴露:能连接该端口者即拥有agentSession的全部能力(含page_eval/ 文件写入 /run_node)。 - 站点无关 —— 本服务仅负责「驱动 + 读取状态」,不含任何站点逻辑或算法。
- 桥接机制 —— 经 Marionette 在 chrome 上下文中
importESModule命中父进程单例(newSandbox:false)。若未来 Firefox 构建破坏此路径,可切换FRX_BRIDGE=file使用FileBridge备用通道。
开发
npm run dev # tsx 直接运行 src/index.ts
npm run typecheck # tsc --noEmit
npm test # vitest(mock 桥接 + mock Marionette 服务,无需真实浏览器)
技术栈:TypeScript(strict、NodeNext)+ 官方 @modelcontextprotocol/sdk,stdio 传输。源起于实战工具 frx_drive.py(经 Marionette 编程驱动 firefox-reverse 内置 Agent),将其子命令封装为标准 MCP 工具,并修复了 4 处经实测验证的缺陷:等待超时上调至 5400s 且「超时 ≠ 失败」、仅以 settled 判定阶段结束、agent_read 折入 drift / runlog 信号、fire‑and‑forget 后重新轮询确认启动。
License
本项目为 firefox-reverse 的配套工具,遵循同一项目的授权与使用声明 —— 仅供安全研究、接口对接与授权测试,请在合法授权范围内使用。
// compatibility
| Platforms | api, desktop, web |
|---|---|
| Operating systems | — |
| AI compatibility | claude |
| License | — |
| Pricing | open-source |
| Language | TypeScript |
// faq
What is frx-director-mcp?
强模型(Claude/GPT)经 MCP 指挥 firefox-reverse 浏览器内置逆向 Agent —— 便宜模型在「AI 辅助」模式下执行工具、强模型只做方向修正。高能力领航 + 低成本实操,自动化 Web 签名/加密逆向。. It is open-source on GitHub.
Is frx-director-mcp free to use?
frx-director-mcp is open-source, so it is free to use.
What category does frx-director-mcp belong to?
frx-director-mcp is listed under mcp-servers in the Claudeers registry of Claude-compatible tools.
// embed badge
[](https://claudeers.com/frx-director-mcp)
// retro hit counter
[](https://claudeers.com/frx-director-mcp)
// reviews
// guestbook
// related in MCP Servers
f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete…
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Gemini CLI & Hermes Agent. Only official website: ccswitch.io
An open-source AI agent that brings the power of Gemini directly into your terminal.