frx-director-mcp
The frx-director-mcp server bridges powerful AI models (Claude/GPT) to the firefox-reverse browser's built-in reverse-engineering engine via MCP, offering two modes of operation:
Mode 1 – Delegate (cost-efficient): The strong model acts as director (sets goals, reviews conclusions) while a cheap worker model (DeepSeek, Qwen, GLM, etc.) executes all 44 browser engine tools. Token costs are split — the strong model only spends tokens on high-leverage decisions.
Mode 2 – Direct Drive: The strong model bypasses the worker and directly calls any of the 44 browser engine tools (e.g., signer_trace, jsvmp_trace, page_eval) using its own expertise, via agent_tools (discovery) and agent_call_tool (execution).
Core tools and capabilities:
frx_status– Preflight check: verify browser (Marionette) connectivity, worker model/provider config, and API key presence before starting.agent_start– Initiate a new reverse-engineering session, set target URL, working directory, and issue the first task to the worker.agent_wait_for_stop– Block-poll until the worker reaches a stage gate (supports 20–90 minute long-running turns).agent_read– Retrieve stage conclusions,progress.md/ledger.mdfiles, drift hints, and run log tails for director review.agent_state– Lightweight liveness snapshot (running/settled, step count, drift hint) without fullagent_readoverhead.agent_send– Core director action: append a guidance/correction message and trigger the next worker round.agent_set_mode– Toggle betweenassistmode (pauses at each stage gate for review) andautomode (unattended completion).agent_stop– Abort the current worker round immediately; progress is persisted to disk.agent_runlog– Access engine-level diagnostics (request/response timing, retries, idle watchdog, drift detection) to distinguish genuine dead-ends from model drift or timeouts.
Additional notes: The server operates entirely on local loopback, never handles API keys directly (configured in the browser), and is site-agnostic. It uses Marionette by default but can switch to a file-based bridge for alternate setups.
Provides tools for controlling a Firefox-based browser's built-in reverse-engineering Agent, enabling automated browser reverse engineering tasks such as packet capture, signature tracing, and script verification.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@frx-director-mcpstart reverse engineering the login flow on example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 仅在浏览器侧配置)。
目录
两种模式 · 工作流程 · 系统架构 · 快速开始 · 一键使用 · 工具参考 · 安全与约束 · 开发
Related MCP server: unlimited-mcp
两种模式
模式一 · 领航委派 | 模式二 · 经验库直驱 | |
谁执行工具 | 便宜的 worker 模型(浏览器内) | 强模型自己(经 MCP 直调) |
强模型角色 | 下方向 / 审阶段结论 | 亲自调用每个工具 |
经验 / 方法论来源 | 浏览器内置 skill(worker 用) | 强模型自带的经验库 / skill |
token 开销 | 低(每轮读结论 + 写一条方向) | 高(每个工具回合都花强模型 token) |
适合 | 长任务、省钱、worker 够用 | 强模型本身懂逆向、要更快更准、要带自己的经验库 |
关键工具 |
|
|
模式一(默认,省钱主路) 是结构性的成本拆分:强模型只在最高杠杆点介入,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 配置(<安装路径> 替换为实际路径):
{ "mcpServers": { "frx-director": {
"command": "node",
"args": ["<安装路径>/frx-director-mcp/dist/index.js"]
} } }{ "mcpServers": { "frx-director": {
"command": "node",
"args": ["<安装路径>/frx-director-mcp/dist/index.js"]
} } }claude mcp add frx-director -- node <安装路径>/frx-director-mcp/dist/index.js可选环境变量(均有默认值;方式一会由 AI 自动填写,完整说明见 .env.example):
变量 | 说明 |
| Marionette 端口,默认 |
| 指向 firefox-reverse 的 |
| 会话工作目录根。默认放在 firefox-reverse 仓库旁 |
| MCP 自身状态(convo / turnlog,非逆向产物),默认 |
| 由本服务自动拉起带 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。工具参考
通用
工具 | 说明 |
| 首先调用 —— 自检:Marionette 是否连通、当前 worker provider / model、Key 是否已配置;未就绪时返回引导说明 |
| 列出浏览器侧 44 个工具清单(名称 / 说明 / 是否需确认 / 参数名),含 16 个引擎级逆向工具( |
模式一 · 领航委派(强模型下方向,worker 执行)
工具 | 说明 |
| 创建会话:绑定工作目录、选择 AI 辅助模式、导航至目标、下达首轮任务(仅校验 |
| 阻塞至 worker 抵达阶段门( |
| 读取阶段结论 + |
| 轻量存活 / 进度快照 |
| 委派模式核心动作 —— 携带上轮结论、追加方向指令、发起下一轮 |
| 在 |
| 中止当前轮(进展已持久化至工作目录,不丢失) |
| 引擎级运行日志,用于区分「确属路线不通」与「模型漂移 / idle 超时」 |
模式二 · 经验库直驱(强模型带自建经验库,亲自调用)
工具 | 说明 |
| 直驱核心动作 —— 强模型亲自直调一个浏览器引擎工具(跳过 worker)。先 |
安全与约束
不接触 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 的配套工具,遵循同一项目的授权与使用声明 —— 仅供安全研究、接口对接与授权测试,请在合法授权范围内使用。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WhiteNightShadow/frx-director-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server