关于 Flintrail
Flintrail 是供 AI Agent 操作真实 Chrome 页面使用的 MCP 浏览器服务。它可批量执行页面操作、录制流程并通过变量在无需大模型的情况下重放,也能借助当前会话重放网站自身的 API 请求。
主要功能
- 01一次调用批量执行浏览器操作
- 02用元素指纹录制流程
- 03通过变量无大模型重放流程
- 04重放捕获的网站 API 请求
- 05支持 attach、launch 和 extension 模式
适用场景
- 01录制后自动执行重复的浏览器任务
- 02网站变化时只修复失败步骤
- 03使用不同输入值重复执行流程
- 04通过已登录会话重放网站请求
MCP 相关
Flintrail 通过 MCP 提供浏览器控制、录制、重放、网络检查和标签页管理工具。支持 stdio 与 HTTP 传输,客户端可连接本地服务或配置的 HTTP 端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
面向 AI Agent 的最快浏览器。
实时驱动真实的 Chrome。只需录制一次任务,即可在毫秒内重放,无需让大模型参与其中。
或者跳过整个页面,使用你的会话重放网站自身的 API 调用。
为什么选择它
如今的浏览器 MCP 服务让模型每次都要处理所有事情:读取页面、选择一个元素、点击、再次读取页面。每次点击都是一次工具调用,而每次工具调用都要经过一次大模型调用,耗时数秒。明天再执行同一任务,Agent 又得付出全部代价。
Flintrail 对待浏览器的方式,就像 JIT 编译器对待代码一样:
- 实时操作:Agent 驱动页面,但会将整套操作序列合并为一次调用,并获得带有可点击引用的精简快照。
- 录制:捕获相同的调用,并记录多线索元素指纹和
{{variables}}。 - 重放:流程以浏览器的速度运行,步骤之间无需经过大模型。网站发生变化时,运行会在确切的失败步骤停止,并将页面交还给 Agent,使其只需修复这一部分。
- API 重放:Flintrail 会捕获网站自身的 fetch/XHR 调用,并能在页面内使用相同的 Cookie 和会话重放这些调用。无需渲染,也无需点击。
基准测试
相同的 5 步任务(填写字段、勾选复选框、翻页、点击会调用 API 的客户端渲染按钮、等待结果),运行 10 次取中位数,使用无头 Chromium。数据仅统计工具端的运行耗时。在真实的 Agent 中,每次工具调用还要经过一次大模型调用,因此从 7 次调用减少到 2 次,还能额外节省数秒。
带斜线的柱条表示下限:与原始 Playwright 脚本执行相同的点击操作,不使用 MCP,也不使用 Agent。任何通过 UI 点击的工具都受此下限约束,因此每次调用的比率提升有限。Flintrail 在此下限之上每次调用约增加 50 毫秒,Playwright MCP 则约增加 260 毫秒。唯一低于此下限的方法是不再点击,这正是 API 重放的作用。
复现测试:npm run bench(不会全局安装任何内容;Playwright MCP 仅是 bench/ 的依赖)。
架构
安装
git clone https://github.com/Soflutionltd/flintrail.git
cd flintrail && npm install && npm run build
Claude Desktop、Claude Code、Cursor(stdio)
{
"mcpServers": {
"flintrail": {
"command": "node",
"args": ["/absolute/path/to/flintrail/dist/cli.js"]
}
}
}
Claude Code:claude mcp add flintrail -- node /absolute/path/to/flintrail/dist/cli.js
任意 Agent、任意机器(HTTP)
node dist/cli.js --http --host 127.0.0.1 --port 8931
# token is generated once in ~/.flintrail/token (or pass --token / FLINTRAIL_TOKEN)
客户端使用 Authorization: Bearer <token> 连接到 http://host:8931/mcp。如果服务要离开本机运行,请将其置于隧道或带 TLS 的反向代理之后。
浏览器模式
| 模式 | 适用场景 | 工作方式 |
|---|---|---|
attach(默认) | 你的桌面环境。保留已登录的会话。 | 通过 CDP 连接到专用的 Chrome for Testing。在 macOS 上,Flintrail 会找到它;如有需要,会使用本地调试端口重启浏览器(并恢复标签页),然后在后台打开自己的标签页。 |
launch | 服务、CI、Docker。 | FLINTRAIL_MODE=launch 会启动 Chromium,并在 ~/.flintrail/profile 中使用持久化配置文件;默认以无头模式运行。 |
extension | 任何人、任何 Chromium 浏览器,无需调试端口。 | 设置 FLINTRAIL_MODE=extension 并安装 Flintrail 扩展。见下文。 |
除非设置 FLINTRAIL_ALLOW_ANY_BROWSER=1,否则 Flintrail 会拒绝连接个人浏览器(Brave、Edge、Opera,或 macOS 上任何非 Chrome for Testing 浏览器)。你的日常浏览器仍由你掌控。
浏览器扩展
扩展是最简单的接入方式:无需命令行标志或调试端口,适用于 Chrome、Edge、Brave、Arc 或任何 Chromium 125+ 浏览器。

- 安装。 从最新版本下载
flintrail-extension-<version>.zip,解压后打开chrome://extensions,启用开发者模式,点击加载已解压的扩展程序并选择该文件夹。(Chrome Web Store 上架正在进行中。) - 以扩展模式运行 Flintrail,例如在 Claude Desktop 中:
{ "mcpServers": { "flintrail": { "command": "npx", "args": ["-y", "github:Soflutionltd/flintrail"], "env": { "FLINTRAIL_MODE": "extension" } } } } - 连接。 点击 Flintrail 图标,粘贴
~/.flintrail/token中的令牌,然后点击连接。之后扩展会自动重新连接。
工作原理:Flintrail 会在 127.0.0.1:8932 上启动一个中继服务。扩展使用令牌连接到该服务,并通过 chrome.debugger 逐个标签页执行 CDP 命令。Playwright 会看到一个普通的 CDP 浏览器,因此所有工具、录制和回放功能都无需修改即可使用。Agent 只能看到自己打开的标签页,或你通过与 Agent 共享共享的标签页。驱动标签页时,Chrome 会按设计显示“正在调试此浏览器”提示栏。
通过演示进行教学
你无需向 Agent 解释任务。在弹出窗口中输入流程名称,点击开始录制,然后在标签页中亲自执行任务,最后点击停止并保存。扩展会使用引擎所用的相同元素指纹记录点击、输入、选择、复选框操作和 Enter 键操作,并且绝不会记录密码字段。然后:
fl_flow_set_var("paybyphone-renew", 0, "plate") # turn the typed plate into {{plate}}
fl_run("paybyphone-renew", { "plate": "AB-123-CD" })
现在,无需你参与,也无需大模型,流程即可自行运行,每个步骤只需几毫秒。
扩展模式的限制:扩展无法使用浏览器级 CDP 功能(下载文件夹、权限、窗口大小),因此 download 会通过浏览器的常规下载流程保存文件。对于通过 chrome.debugger 驱动的后台标签页,Chrome 会在任何人能够响应之前关闭对话框;因此在此模式下,{do:"dialog"} 会改为在页面内响应下一个 alert / confirm / prompt。
工具
| 工具 | 功能 |
|---|---|
fl_open | 在后台标签页中打开 URL,并返回带有 [eN] 引用的精简快照。 |
fl_act | 在一次调用中执行多项操作:click、dblclick、hover、fill、type、select、check、press、upload、download、goto、back、wait、scroll、mouse、dialog、resize、eval、request。 |
fl_snapshot | 重新读取页面:交互元素、标题、文本摘录、同源框架。 |
fl_extract | 在页面中运行 JavaScript 并返回结果。 |
fl_network | 列出网站自身的 API 调用,包含时间、请求正文和 JSON 示例。 |
fl_screenshot | 获取标签页的 JPEG 截图,或某个元素(ref / selector)的截图;坐标以 CSS 像素为单位,可用于 mouse。 |
fl_console | 获取标签页的控制台错误和未捕获的异常(level: "all" 会添加警告和日志)。出现新的错误时,fl_act 会予以提示。 |
fl_record_start / fl_record_stop | 录制工作流;repairFrom 会保留已成功的步骤,并重新录制其余部分。 |
fl_run | 使用变量重放工作流,无需 LLM。 |
fl_run_many | 在并行标签页中为多组变量重放工作流。 |
fl_flows / fl_flow | 列出工作流,查看单个工作流。 |
fl_flow_set_var | 将录制的值转换为 {{variable}},适用于通过演示创建的工作流。 |
fl_extension | 查看扩展程序的连接状态。 |
fl_adopt | 接管你已自行打开的标签页,例如手动登录后立即接管。 |
fl_tabs / fl_close | 管理标签页。 |
示例
// one call, five actions
{ "tool": "fl_act", "tab": "t1", "actions": [
{ "do": "fill", "ref": "e1", "value": "AA-111-AA", "var": "plate" },
{ "do": "check", "ref": "e3" },
{ "do": "click", "role": "button", "name": "Continue" },
{ "do": "click", "selector": "[data-testid=confirm]" },
{ "do": "wait", "text": "active" }
]}
然后,fl_run("permit", { "plate": "ZZ-999-ZZ" }) 就能在不到一秒内重放。
// files, native dialogs, coordinates, mobile width
{ "tool": "fl_act", "tab": "t1", "actions": [
{ "do": "upload", "ref": "e4", "files": ["/Users/me/statement.csv"], "var": "statement" },
{ "do": "dialog", "accept": true },
{ "do": "click", "role": "button", "name": "Delete" },
{ "do": "mouse", "x": 640, "y": 380 },
{ "do": "resize", "width": 390, "height": 844 }
]}
upload 适用于文件输入框(包括隐藏的输入框),也适用于会打开文件选择器的按钮或投放区域。默认情况下会关闭对话框,并在结果中报告每个对话框以及新的控制台错误。
重放时如何重新查找元素
每个录制的步骤都会保存一个指纹,而不是脆弱的选择器:测试 ID、稳定 ID、name 属性、ARIA 角色和可访问名称、占位符、链接目标、可见文本以及简短的 CSS 路径。重放时,Flintrail 会按稳定性从高到低依次尝试,并选择首个唯一匹配的元素;它只等待该元素,而不会等待网络空闲。
安全
- 工作流中绝不会写入密码。录制时会跳过密码字段;请保持会话处于登录状态。
- 工作流以纯 JSON 格式保存在
~/.flintrail/flows中,便于查看和进行版本控制。 - HTTP 传输需要 bearer token(采用恒定时间比较),且默认绑定到
127.0.0.1。 eval和request在页面内以页面自身的权限运行,不会获得更多权限。
配置
| 变量 | 默认值 | |
|---|---|---|
FLINTRAIL_MODE | attach | attach、launch 或 extension |
FLINTRAIL_RELAY_PORT | 8932 | 扩展程序连接的本地端口 |
FLINTRAIL_CDP_URL | http://127.0.0.1:9222 | 要连接的浏览器 |
FLINTRAIL_PORT | 9222 | Flintrail 启动 Chrome for Testing 时使用的调试端口 |
FLINTRAIL_CHROME | auto | 浏览器可执行文件 |
FLINTRAIL_HEADLESS | 1 | 在启动模式下设为 0 可显示窗口 |
FLINTRAIL_HOME | ~/.flintrail | 工作流、配置文件、令牌 |
FLINTRAIL_DOWNLOADS | ~/Downloads/Flintrail | 下载文件的保存位置 |
FLINTRAIL_TOKEN | generated | HTTP bearer token 和扩展程序令牌 |
开发
npm install
npx playwright-core install chromium # once, for tests
npm test # build + 19 end-to-end tests over real MCP, extension included
npm run pack:extension # flintrail-extension-<version>.zip
npm run bench # benchmark vs Playwright MCP
路线图
- 在 Chrome Web Store 和 Edge Add-ons 上发布扩展程序。
- 当捕获到的调用可安全重放时,自动将录制的 UI 步骤提升为 API 步骤。
- 为常用网站提供共享工作流库。
- 在重放失败时显示视觉差异。
法语版
Flintrail 是一款供 AI Agent 使用的浏览导航 MCP 服务。它控制专用的真实 Chrome(绝不会使用您的个人浏览器),可在一次调用中串联多个操作,首次执行时记录任务,之后即可独立重放,无需 AI,只需几百毫秒;也可以直接使用您的会话重放网站的 API 调用。在我们的基准测试中,同一任务使用 Playwright MCP 需要 2.4 秒,而 Flintrail 的 API 模式仅需 0.11 秒。
Chrome 扩展让所有人都能使用这些功能:安装扩展、粘贴令牌,Agent 就能控制浏览器。更棒的是,您可以亲自执行一次任务来教会它(点击 Start recording 按钮),之后 Flintrail 就能独立重放。密码绝不会被记录。
许可证
MIT © 2026 Soflution Ltd
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。