浏览器自动化工具

Zen-MCP是一个用于Zen浏览器的MCP服务器,提供无驱动程序的浏览器自动化功能,支持通过WebSocket进行导航、交互和页面操作。

  • by sh6drack
  • JavaScript
  • 本地部署
  • 27 星标
  • 更新于
在 GitHub 查看 sh6drack/zen-mcp

使用说明

陈mcp

第一台MCP服务器 Zen浏览器.从Claude Code、Cursor或任何MCP客户端自动化Zen。

没有硒。没有剧作家。没有浏览器驱动程序。只有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.添加到克劳德代码

# 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 带选择器的页面结构(过滤器:全部/交互式/表单)
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

陈议员发言 WebDriver BiDi (W3C标准)直接通过WebSocket。表单填充使用本机值设置器 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上防止孤立会话

故障排除

问题 修复
“无法连接到Zen浏览器” 使用启动Zen --remote-debugging-port 9222
“最大活动会话数” 重新启动Zen: killall zen && zen
连接持续中断 使用 zen_reconnect 强制建立新的联系

配置

环境变量 默认值 描述
ZEN_DEBUG_PORT 9222 Zen的远程调试端口

需求

测试

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

许可证

麻省理工学院