mcpField
Z

Zendriver MCP

本地服务
bituq.github.io浏览器自动化414 周前更新

关于 Zendriver MCP

Zendriver MCP 为编码 Agent 提供可通过 MCP 操作的 Chrome 浏览器自动化,适用于真实网页和登录会话。它提供精简 DOM 与无障碍树、开发者工具分析、设备模拟及 Cookie 导入导出等功能。

主要功能

  1. 01Chrome 导航、交互与表单操作
  2. 02精简 DOM 和稳定 UID 无障碍树
  3. 03性能跟踪、堆快照与 Lighthouse 审计
  4. 04设备、网络和媒体模拟
  5. 05Cookie 会话导入与导出
  6. 06请求拦截、代理与屏幕录制

适用场景

  1. 01自动操作网页并提交表单
  2. 02在后续会话中复用登录状态
  3. 03检查页面性能并生成审计结果
  4. 04模拟移动设备或慢速网络测试

MCP 相关

Zendriver MCP 是通过 stdio 提供浏览器自动化工具的 MCP 服务,供 MCP 客户端控制 Chrome。它提供导航、页面交互、Cookie、无障碍、开发者工具和网络控制等工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"bituq-zendriver": {
"command": "uvx",
"args": [
"zendriver-mcp"
]
}
}
}
启动命令uvx zendriver-mcp

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

安装包
pypizendriver-mcp0.3.4

工具

还没有获取到工具列表

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

详细介绍

zendriver-mcp

通过 MCP 为 LLM Agent 提供难以检测的浏览器自动化。

zendriver-mcp 是一款 MCP 服务,为你的编码 Agent(Claude、Cursor、Gemini、Copilot)提供一个真正可用的 Chrome 浏览器,让它能访问真实网页——包括 Cloudflare 防护的网站、有登录墙的页面,以及会检测并拦截 WebDriver 的页面。

它基于 Zendriver 构建,直接使用 Chrome DevTools Protocol,而不是通过 WebDriver。这意味着没有 navigator.webdriver 标志,没有无头浏览器特征,而且指纹看起来就像普通的 Chrome 安装。

在此基础上,zendriver-mcp 集成了 Agent 完成工作所需的一切:节省 Token 的 DOM 遍历器、带稳定 uid 的无障碍树、性能跟踪、Lighthouse 审计、堆快照、拟人化输入、设备模拟、Cookie 往返传递等——22 个模块,共 96 个工具。

亮点

  • 从设计上就难以检测。 Zendriver 保持干净的指纹;我们提供 Cloudflare Turnstile 求解器、身份覆盖项(UA、语言区域、时区、地理位置),以及贝塞尔曲线鼠标移动和基于高斯分布的打字间隔。
  • 节省 Token 的 DOM。 两种查看页面的方式——上游 DOM 遍历器,相比原始 HTML 可减少 96% 的 Token;以及基于稳定 uid 的 CDP 无障碍树,即使重新渲染也能保持稳定。
  • 全面对齐 DevTools。 可在 Chrome DevTools 中加载的性能跟踪、标准 .heapsnapshot 格式的堆快照,以及通过复用同一浏览器的 Lighthouse CLI 执行的 Lighthouse 审计。
  • 会话往返传递。 将所有 Cookie(包括仅 HTTP Cookie)导出为 JSON,并在下次会话中重新导入。登录一次,随处复用。
  • 模拟。 iPhone 15 Pro、Pixel 8、iPad Pro 和桌面设备预设;CPU 限速;Slow 3G / Fast 3G / 4G / 离线网络配置;强制设置 prefers-color-scheme。
  • 屏幕录制。 以可配置的 FPS 将画面帧写入磁盘,格式为 JPEG 或 PNG。

工具目录

模块工具
browser启动、停止、状态
navigation导航、后退、前进、重新加载、页面信息
tabs新建 / 列出 / 切换 / 关闭
elements点击、输入、清除、聚焦、选择、上传
query查找元素、文本、属性、按钮、输入框
contentHTML、文本、交互树、滚动
storageCookie(document.cookie)、localStorage
logging网络 + 控制台日志、等待请求
forms填写表单、提交、按键、鼠标点击
utils截图、执行 JS、等待、安全审计
stealth绕过 Cloudflare、覆盖 UA / 语言区域 / 时区 / 地理位置
humanlikehuman_click、human_type、estimated_typing_duration
emulation视口、设备预设、CPU + 网络限速、媒体
devtools开始 / 停止跟踪、获取堆快照
lighthouse运行审计、检查 CLI 是否可用
screencast开始 / 停止(写入画面帧目录)
accessibility带稳定 uid 的 AX 快照、click_by_uid、describe_uid
cookies导出 / 导入 / 列出 / 清除(CDP 级别,所有来源)
network_control拦截 URL、额外请求头、绕过 Service Worker
permissions授予 / 重置、列出名称
proxy配置 / 清除(使用代理参数重启浏览器)
interceptionmock_response、fail_requests、list、stop
screencast+ export_screencast_mp4、check_ffmpeg_available

完整签名见 src/tools/*.py 中的文档字符串,并会在 MCP 握手时自动列出。

安装

已发布到 PyPI:https://pypi.org/project/zendriver-mcp/.

需要 Python 3.10+ 和 Chrome / Chromium 安装程序。

# Zero-setup, re-resolves on every run - great for Claude Desktop configs
uvx zendriver-mcp

# Or install once, invoke many
uv tool install zendriver-mcp
pipx install zendriver-mcp
pip install zendriver-mcp

与 Claude Desktop / Claude Code 搭配使用

{
  "mcpServers": {
    "zendriver": {
      "command": "uvx",
      "args": ["zendriver-mcp"]
    }
  }
}

无需克隆、无需 --directory、无需绝对路径。如果你更喜欢永久安装,也可以先运行 uv tool install zendriver-mcp,然后将 "command": "uvx" 替换为 "command": "zendriver-mcp"。

开发版检出

正在开发 zendriver-mcp 本身?克隆仓库并运行 uv sync,然后将 MCP 客户端指向该检出目录:

{
  "mcpServers": {
    "zendriver": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/zendriver-mcp", "run", "zendriver-mcp"]
    }
  }
}

CLI 的可选标志:

  • --browser-path /path/to/chrome - 指定特定的 Chrome 二进制文件
  • --transport stdio - 目前仅支持 stdio;等上游 mcp 发布稳定支持后,将加入 SSE/HTTP

30 秒快速浏览

# Ask the browser to start, log in once, save the session.
await start_browser()
await navigate("https://example.com/login")
await fill_form({"#email": "[email protected]", "#pw": "..."})
await export_cookies("~/sessions/example.json")

# Next run: skip the login entirely.
await start_browser()
await import_cookies("~/sessions/example.json")
await navigate("https://example.com/dashboard")

# Get an accessibility snapshot, click by stable uid.
snap = await get_accessibility_snapshot()
await click_by_uid("ax_1b2c3d4e")

# Record a performance trace while you click around.
await start_trace()
await human_click(selector="#buy-now")
await stop_trace("/tmp/buy-flow.json")   # loads in Chrome DevTools

# Run Lighthouse against the current browser.
await run_lighthouse("https://example.com", form_factor="mobile")

Token 优化的 DOM 遍历器

交互树会输出精简行,例如 {"id": 1, "t": "btn", "l": "Search", "r": "hdr"}:

  • 精简键:t(类型)、l(标签)、r(区域)
  • 智能标签:从 aria-label、aria-labelledby、关联的 <label>、placeholder、文本、title、alt 推断
  • 噪声过滤:跳过 SVG 内部元素和嵌套的交互式子元素
  • 区域标记:hdr、nav、main、side、ftr、dlg
  • 类型压缩:button -> btn、checkbox -> chk 等

在 perplexity.ai 上报告的缩减效果:相比原始 HTML,Token 数量减少约 96%(约 11k -> 约 400)。

对于跨越多个操作的流程,优先使用 get_accessibility_snapshot + click_by_uid ——只要底层后端节点仍然存在,uid 就会保持有效,即使发生重新渲染也一样。

开发

uv sync
uv run ruff check .
uv run ruff format --check .
uv run mypy src
uv run pytest

CI 会在每次推送和 PR 上运行同样的四项检查。

路线图

原路线图中的所有内容都已在 0.2 / 0.3 版本中交付:

  • 隐身:Cloudflare 求解器、UA / 语言区域 / 时区 / 地理位置
  • 类人输入:贝塞尔鼠标路径、高斯按键计时
  • DevTools 功能对等:跟踪记录、堆快照、Lighthouse
  • 通过 ffmpeg 录制屏幕并导出 mp4
  • 带稳定 uid 的无障碍树
  • Cookie 导入/导出、拦截、额外请求头、权限
  • 请求拦截 + 响应模拟(Fetch.enable)
  • 代理配置(使用 --proxy-server 重启)
  • 在富输出工具中采用 ToolResponse 封装
  • PyPI 发布工作流(可信发布)

文档站点:https://bituq.github.io/zendriver-mcp/

接下来的工作将由实际使用情况决定。计划中的想法:

  • 通过 Fetch 拦截进行逐请求代理路由
  • 在 mock_response 中支持二进制正文
  • 带模式的 Fetch.enable(比我们“全部匹配后再过滤”更快)

许可证

MIT。参见 LICENSE。

致谢

  • Zendriver 承担了底层的大部分工作。
  • Token 优化的 DOM 遍历器和最初的 49 工具基础来自 ShubhamChoulkar/Zendriver-MCP。 本项目最初是一个分支,之后逐渐形成了自己的特色和功能集。

评论

支持 Markdown

第一次接触 MCP?

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

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