SuperAPI AI 工具集

public-browser

Public Browser 是一个让 Claude Code、Cursor 等 MCP 客户端直接驱动 Chrome 的 MCP 服务器。它通过 Chrome DevTools Protocol(CDP)直接通信,不依赖 Playwright、扩展桥接或每步 shell 命令,安装一条命令、零配置。其核心特点是减少 token 消耗:在 30 项测试页面的盲测中,Public Browser 3.0 每次运行均通过 30/30,中位会话 token 为 3.0M,而 agent-browser 0.38.1 为 4.5M,token 和成本均减少约三分之一,工具调用减少四分之一,速度提升 48%。它支持多标签页、缓存无障碍树引用、服务端多步流程执行(run_plan)以及 Python 脚本 API,并提供 Node 库和 Python 客户端两种无 LLM 接入方式。项目采用 MIT 许可,无付费层级。

访问官网

工具介绍

Public Browser 是一个 MCP 服务器,用于让 Claude Code、Cursor 以及任何兼容 MCP 的客户端驱动 Chrome 浏览器。它直接通过 Chrome DevTools Protocol(CDP)与 Chrome 通信,不依赖 Playwright、扩展桥接,也不需要为每一步执行 shell 命令。安装只需一条命令,零配置。

主要能力

  • 更少的 token 消耗:每个工具调用都会让模型重新读取此前的对话,因此会话总 token 量才是实际成本。在基准测试页面上,Public Browser 3.0 五次运行的中位 token 为 3.0M,而 agent-browser 需要 4.5M。其优势来自更少、更密集的步骤:run_plan 可在一次调用中执行多个带变量和条件的动作;自 3.0 起,响应减少重复,差异只显示变化内容,父行已显示的文本不再重复,提示每会话只出现一次。
  • 显式失败而非静默失败:匹配多个元素的 CSS 选择器不会执行任何操作,而是返回候选元素及其引用。引用按标签页保存且从不复用,因此来自已离开页面的引用会报告 stale ref,而不是点击当前占用该编号的节点。拖拽无反应时返回 Drag not confirmed,点击打开新标签页时会指明新标签页。
  • 支持嵌套跨域 iframe 和 shadow DOM:点击可以到达位于另一个跨域 iframe 内部的跨域 iframe 中的元素;开放和封闭的 shadow root 也可读取。
  • 两种无 LLM 接入方式:Node 库(createSession())和 Python 客户端(pip install publicbrowser)运行与 MCP 服务器相同的工具处理器。

使用方式 在 Claude Code 中安装:一条命令即可全局安装到所有项目。安装后必须完全退出并重新打开 Claude Code,/mcp reconnect 不够,因为 Claude Code 只在会话开始时读取 mcpServers 配置并缓存。重启后首次工具调用会自动启动可见的 Chrome,无需 headless 或端口设置。若要启用并行 Python Script API 访问,可在参数中添加 --script。 在 Cursor 中安装:添加到 ~/.cursor/mcp.json。 在 Cline 中安装:添加到 cline_mcp_settings.json。 其他 MCP 客户端:任何支持 stdio MCP 服务器的客户端,使用 npx -y public-browser@latest 且不带参数。

Chrome 配置文件 默认情况下,Public Browser 使用全新的临时配置文件启动 Chrome,没有 cookie、登录信息或扩展。也可以使用自己的 Chrome 配置文件启动。Chrome 拒绝在其默认数据目录上进行远程控制,因此 Public Browser 会创建一个轻量包装目录,其中包含指向配置文件文件夹的符号链接,并在该目录上启动 Chrome。包装目录在 Public Browser 关闭 Chrome 时删除,崩溃遗留的包装目录会在下次启动时删除;配置文件文件夹本身永远不会被删除。书签、历史记录、扩展和 Chrome 自身的 Google 登录会保留,因此 Google 站点处于登录状态。其他站点在 macOS 上不会保留登录状态:当前 Chrome 不会通过符号链接加载配置文件的 cookie,站点会以登出状态开始,会话期间进行的登录也不会保存到配置文件。Linux 和 Windows 未测试。

无开放调试端口 真实配置文件通过 --remote-debugging-pipe 驱动:CDP 通过只有 Public Browser 持有的管道运行,没有 TCP 端口监听,其他程序无法接管浏览器。代价是 --attach 和 Script API 的逃生舱(page.cdp)在真实配置文件下不可用。如果 Chrome 拒绝管道,Public Browser 会用随机调试端口(从不是 9222)重启,并在 stderr 和下一次工具响应中说明。

如果 Chrome 已经打开 Public Browser 通过锁文件检查检测到这一点。如果 Chrome 已启用远程调试,则通过 CDP 附加。如果没有,则显示明确错误,要求先关闭 Chrome。一个配置文件一次只能在一个 Public Browser 中打开:第二个实例会停止并报错,指出持有该配置文件的 Chrome 的 PID。

Script API(Python) 第二种使用方式:从 Python 进行确定性浏览器自动化,无需 LLM 参与。脚本使用与 MCP 服务器相同的工具实现(Shared Core),因此对 click、navigate、fill_form 等的每一项改进都会自动惠及脚本。MCP 服务器处理 AI 驱动的工作流;Script API 用于你自己编写的可重复脚本。Chrome.connect() 会自动通过本地 public-browser 二进制文件或 npx 回退将 Public Browser 服务器作为子进程启动,无需手动启动 Chrome 或设置端口。脚本向端口 9223 上的 Public Browser 服务器发送 HTTP 请求。服务器执行与 MCP 服务器完全相同的工具处理器——一个代码库、一个测试套件(2,700+ 测试)、两条访问路径。Script API 只应答携带其密钥的请求(Authorization: Bearer <key>),因此网页和其他用户账户下运行的程序无法通过它驱动浏览器。

适用场景

  • 让 Claude Code、Cursor 等 AI 编码助手通过 MCP 驱动 Chrome 完成网页操作、表单填写、数据提取等任务。
  • 为决策模型(如 Jev)提供浏览器侧支持:Jev 接收程序状态和有界选项集,返回一个带校准概率的类型化选择,无法生成自由文本,因此不会虚构不存在的选择器。Public Browser 为其提供菜单式选项。
  • 使用 Python 编写确定性、可重复的浏览器自动化脚本,无需 LLM。
  • 需要处理嵌套跨域 iframe、shadow DOM 等复杂页面结构的场景。

限制

  • 真实配置文件模式下,--attach 和 Script API 逃生舱不可用。
  • 在 macOS 上,使用真实配置文件时其他站点的登录状态不会保留。
  • Linux 和 Windows 上的配置文件行为未测试。
  • 一个配置文件一次只能在一个 Public Browser 实例中打开。
  • 项目采用 MIT 许可,无付费层级。
  • 基准测试数据来自特定环境(Claude Code 2.1.281、Claude Opus 5、Chrome 153,2026-09-23/24),测试页面为自有页面。