mcpField
Z
zen-mcp

zen-mcp

本地服务
github.com/sh6drack浏览器自动化2724 周前更新

关于 zen-mcp

zen-mcp 是面向 Zen Browser 的 MCP 服务,通过 WebDriver BiDi 经 WebSocket 直接控制浏览器,无需 Selenium、Playwright 或浏览器驱动。适合希望在 Claude Code、Cursor 等 MCP 客户端中自动化操作 Zen 的用户。

主要功能

  1. 01通过 WebDriver BiDi 直接连接 Zen
  2. 02提供 20 个 zen_* 工具
  3. 03支持导航、点击、表单填写与键盘输入
  4. 04支持截图与页面内容读取
  5. 05内置自动重连与僵尸会话恢复

适用场景

  1. 01在 Claude Code 中打开网页并提取页面文本
  2. 02批量填写网页表单
  3. 03管理多个标签页并执行 JavaScript

MCP 相关

zen-mcp 是一个 MCP 服务,向 MCP 客户端暴露 zen_* 系列工具,用于控制 Zen Browser。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sh6drack-zen": {
"command": "npx",
"args": [
"-y",
"zen-mcp"
],
"env": {
"ZEN_DEBUG_PORT": "<ZEN_DEBUG_PORT>"
}
}
}
}
启动命令npx -y zen-mcp
需要配置的环境变量
ZEN_DEBUG_PORTZen Browser remote debugging port

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmzen-mcp1.2.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

zen-mcp

首个适用于 Zen Browser 的 MCP 服务。通过 Claude Code、Cursor 或任何 MCP 客户端自动化操作 Zen。

无需 Selenium。无需 Playwright。无需浏览器驱动。只需 WebSocket。

设置(2 分钟)

1. 使用远程调试启动 Zen
/Applications/Zen.app/Contents/MacOS/zen --remote-debugging-port 9222

专业提示:将 alias zen='open /Applications/Zen.app --args --remote-debugging-port 9222' 添加到 shell 配置中。之后只需运行 zen。

2. 添加到 Claude Code
# Option A: npm (recommended)
npm install -g zen-mcp

# Option B: Clone
git clone https://github.com/sh6drack/zen-mcp.git && cd zen-mcp && npm install

添加到 ~/.claude/mcp_servers.json:

{
  "mcpServers": {
    "zen-browser": {
      "command": "zen-mcp"
    }
  }
}

如果你选择克隆而非通过 npm 安装,请使用 "command": "node", "args": ["/absolute/path/to/zen-mcp/server.mjs"]

添加到 ~/.claude/settings.json:

{
  "permissions": {
    "allow": ["mcp__zen-browser__*"]
  }
}

就是这样。 启动新的 Claude Code 会话,即可使用 zen_* 工具。

20 个工具

浏览
工具功能
zen_navigate前往某个 URL
zen_list_pages列出所有打开的标签页
zen_select_page切换到某个标签页
zen_new_tab打开新标签页
zen_close_tab关闭标签页
查看
工具功能
zen_snapshot获取包含选择器的页面结构(筛选:all/interactive/form)
zen_screenshot截取屏幕截图
zen_get_page_text获取页面标题、URL 和文本
zen_get_form_fields列出所有表单字段及其标签和值
交互
工具功能
zen_click点击元素
zen_fill在输入框或文本区域中输入
zen_select_option选择下拉选项
zen_check切换复选框或单选框
zen_press_key键盘输入(Enter、Tab、Ctrl+A 等)
zen_fill_form一次填写多个字段
zen_scroll滚动页面或滚动到某个元素
实用工具
工具功能
zen_evaluate在页面中运行 JavaScript
zen_wait等待 N 毫秒
zen_wait_for等待文本或元素出现
zen_reconnect强制重新连接到 Zen

工作原理

Claude Code  ──stdio/MCP──>  zen-mcp  ──WebSocket/BiDi──>  Zen Browser

zen-mcp 通过 WebSocket 直接使用 WebDriver BiDi(W3C 标准)。填写表单时会使用原生值设置器并派发 input/change 事件,因此 React、Vue 和 Angular 应用都能正常运行。

运行良好的功能
  • 导航、点击、填写表单 — 非常稳定,可处理 React/Vue/Angular
  • 截图和读取页面 — 能可靠地提取内容
  • 标签页管理 — 打开、关闭和切换标签页
  • JavaScript 求值 — 在页面上下文中运行任意代码
  • 键盘输入 — 快捷键、Enter、Tab 和组合键
已知限制
  • Zen 继承了 Firefox 的 WebDriver BiDi 实现,该实现仍在完善中。Chrome 支持的一些高级 BiDi 命令目前可能尚不可用。
  • 只能通过重启 Zen 清除僵尸会话(BiDi 的 session.end 按连接范围生效)。zen-mcp 会检测到这一情况,并告知你如何处理。
  • 不支持文件上传或拖放(BiDi 规范限制)。
内置可靠性保障
  • WebSocket 断开时,使用指数退避自动重新连接
  • 上一个客户端崩溃时,恢复僵尸会话
  • 连接重试(最多 3 次,并采用退避策略)
  • 收到 SIGINT/SIGTERM 时正常关闭,防止会话遗留

故障排除

问题解决方法
"Cannot connect to Zen Browser"使用 --remote-debugging-port 9222 启动 Zen
"Maximum number of active sessions"重启 Zen:killall zen && zen
连接持续断开使用 zen_reconnect 强制建立新连接

配置

环境变量默认值说明
ZEN_DEBUG_PORT9222Zen 的远程调试端口

要求

测试

node test-e2e.mjs   # 21 tests, needs Zen running

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。