下面是我整理的 playwright-mcp,browser-use,和 chrome-mcp (lxe/chrome-mcp) 这三个工具的详细比较。表格里是几个关键维度,然后再分析它们的共同点与差异。
工具简介
先快速回顾每个工具是做什么的:
| 工具 | 简要描述 |
|---|---|
| playwright-mcp (Microsoft) | 一个 MCP (Model Context Protocol) 服务器,用 Playwright 提供浏览器自动化能力。LLM 客户端可以通过这个服务器操作浏览器,不依赖截图,而是结构化可访问性(accessibility tree)快照。([GitHub][1]) |
| browser-use | 一个浏览器自动化 + AI 代理工具,用自然语言指令控制浏览器导航 / 点击 /表单填写等,并能暴露 MCP 接口以供客户端(如 Claude Desktop 等)用。是用 Python 写的为主。([GitHub][2]) |
| chrome-mcp (lxe/chrome-mcp) | 一个 MCP 服务器,通过 Chrome DevTools Protocol(CDP)对本地 Chrome 实例提供细粒度控制。LLM 客户端可以操作 Chrome 浏览器,不依赖截图,让自动化操作更低层。([GitHub][3]) |
比较维度定义
为了比较清楚,我选择如下维度:
- 控制方式(底层机制 / 是否用 CDP / Playwright / 等等)
- 截图 vs 结构化快照 vs 可访问性树
- 会话状态 / 是否复用用户浏览器状态 / profile
- 平台 / 运行环境 /语言栈依赖
- MCP 特性暴露/工具集能力(navigate, click, typing, 表单填充,滚动,标签管理 etc)
- 安全性 / 隐私 /用户数据是否保留 /暴露 surface
- 开发者熟悉度 /社区活跃度 /成熟度
比较表格
下面是一张对比表格,列出三个工具在每个维度上的状态:
| 维度 | playwright-mcp | browser-use | lxe/chrome-mcp |
|---|---|---|---|
| 控制方式 / 自动化引擎 | 基于 Playwright。Playwright 提供跨浏览器(Chromium, Firefox, WebKit 等)的自动化能力。([GitHub][1]) | 用自己的自动化 + 驱动 Playwright(或类似机制) + Python 实现。([GitHub][2]) | 基于 Chrome DevTools Protocol(CDP),直接控制本地 Chrome 实例。([GitHub][3]) |
| 快照 / 状态获取方式 | 使用 Playwright 的可访问性树 (accessibility tree) 快照,而非截图或视觉模型。([GitHub][1]) | 支持浏览器状态快照 / 页面状态获取 /也可能支持截图/视觉理解(视具体功能)以辅助 element 定位。([MCP Market][4]) | 提供页面内容 /元素状态等通过 CDP 获取(文本/DOM/元素/可能 console/log 等)。截图是否为核心不是主打。([GitHub][5]) |
| 会话状态 & 用户 profile | 支持不同模式,比如 persistent profile 或 isolated contexts; 可以指定 user-data-dir; 可以与现有浏览器状态连接(通过 extension)以复用登录等。([GitHub][1]) | 支持状态持久性(session persistence),可能保存 cookies/状态,在多个操作里复用。([MCP Market][4]) | 要求 Chrome 启动带 remote debugging,通常是你自己的浏览器实例;因为是控制本地 Chrome 实例,很容易复用已有 profile。([GitHub][3]) |
| 语言栈 /运行环境 /依赖 | Node.js(>=18),Playwright,TypeScript / JavaScript。([GitHub][1]) | Python(>=3.11 等),依赖浏览器驱动/Playwright,环境变量配置。([GitHub][2]) | Node.js 或 Bun 推荐;要求 Chrome 浏览器启动 remote debugging;TypeScript/JavaScript 栈。([GitHub][3]) |
| MCP 工具集 / 功能覆盖 | 提供一系列标准操作工具:navigate, click, evaluate JS, fill forms, handle dialog, drag/drop, snapshot, mouse operations, pdf 生成或 vision/pdf caps 等。([GitHub][1]) | 提供 navigation, click, type, scroll, get page state & interactive elements, agent 工具集;支持自然语言指令 +对 LLM 的支持;也支持 “visual understanding” / image / screenshot 辅助的 element 定位 at least 在某些用例中。([MCP Market][4]) | 提供通过 CDP 的细粒度操作:导航、点击、typing、元素操作、提取内容等。具体工具集取决于实现,但重点是控制 Chrome 实例、元素动作、页面状态获取等。([GitHub][5]) |
| 安全 / 隐私 /暴露面 | 若使用 persistent profile 或连接已有浏览器状态可能暴露现有 cookies/登录状态;但也支持隔离模式。启动可控参数(例如 user-data-dir, headless 等)。([GitHub][1]) | 类似:保存状态有利,但也要保护敏感数据;环境变量配置 API key;隐私取决于本地/云端执行。([GitHub][2]) | 因为是本地实例 +已有浏览器配置/profile,风险可能更高(若未隔离的话)但也意味着对用户配置更透明;安全控制(remote debugging)需要小心。([GitHub][3]) |
| 成熟度 /社区/Star 数量/活跃度 | Star 数量很多(≈ 20k)([GitHub][1]);看起来由微软维护,有较多贡献者、release 频繁。 | Star 更高(≈ 70k)([GitHub][2]);社区/用例也比较多,文档完善。 | Star 较小(≈ 42)([GitHub][3]);功能较专一/小众;可能文档与生态比前两者弱一些。 |
共同点
- 三者都是 MCP 服务器 或支持 MCP(Model Context Protocol),即能让 LLM 客户端通过标准协议访问浏览器自动化工具。([GitHub][1])
- 都能做基本的浏览器自动化操作,比如导航 (navigate),点击元素 (click),填写表单(type/fill),获取页面状态/内容。
- 所有的都尽量避免依赖视觉截图+对截图的视觉模型处理作为主要手段,以增强确定性 &减少误差(至少 play-wright-mcp 明确是以结构化可访问性树快照为主; browser-use 与 chrome-mcp 虽然有截图/视觉补充功能,但不是核心)。
- 都支持某种形式的状态持久性 — 能复用 session / profile 或者允许保存状态 /浏览器上下文。
- 都关注隐私/本地环境的控制能力:用户可以在本地机器上启动/配置/控制这些工具,使用自己的浏览器或配置等。
差异
下面是它们之间主要的不同点,以及各自强项和局限:
| 差异项 | play-wright-mcp 的强项 /局限 | browser-use 的强项 /局限 | chrome-mcp 的强项 /局限 |
|---|---|---|---|
| 跨浏览器 vs 专一浏览器 | 强项:支持多个浏览器引擎(Chromium, Firefox, WebKit)→ 跨浏览器测试/多样性好。局限:要下载这些浏览器 binaries,资源/配置复杂度可能高。 | 强项:可能在各种浏览器里也能工作(视实施细节而定)。局限:browser-use 的主力可能偏 Chromium/Playwright。 | 强项:专门针对 Chrome + CDP,利用 Chrome 的调试与控制能力;更直接/低延迟。局限:非 Chrome/Chromium 支持可能弱或无;如果 Chrome remote debugging 不方便启动或配置,门槛有。 |
| 结构化 vs 视觉 +截图 | 明确以可访问性树快照为主,减少视觉误差,对静态/结构化内容支持更好。 | 更灵活,有视觉辅助/截图/视觉检测等,对视觉元素识别、图像辅助定位可能更强,但视觉方法往往更不确定。 | 更底层,通过 CDP 获取 DOM/元素状态,可能少用视觉辅助;精确控制更强,但对于视觉布局变化或样式驱动的元素定位可能要组合 CSS 或 selector 等方式。 |
| 用户浏览器状态复用 /登录状态 | 支持 isolated 与 persistent profile;也有 extension 能连接已有浏览器标签/session 等。([GitHub][1]) | 支持状态持久性;但是否能直接复用用户已有 Chrome 浏览器 session 登录状态则依具体配置/权限。 | 自然复用已有 Chrome 实例/profile 更方便(因为控制的是本地已启动的 Chrome),因此登录状态、cookie、插件等更可能被保留。 |
| 依赖与环境配置成本 | 需要安装 Playwright、相应浏览器引擎、Node.js 等;如果启用可访问性 +其它 caps,配置参数较多。 | Python 环境 +依赖;可能对 setup 简单用户友好;文档可能更贴近终端用户或比如代理人(use agents) 的场景。 | 要启动 Chrome remote debug 模式;需要 Node.js/Bun;对用户系统权限/Chrome 配置有要求;对非技术用户门槛较高。 |
| 稳定性 /生态 /社区 | 来自微软,Star 数量大,维护较好;在大型项目/企业环境中可能信赖性更高。 | 社区非常活跃,star 数量多,用例丰富;文档/示例较多。 | 较新或较轻量,star 较少;功能,文档可能在某些边缘情况下不如前两个丰富;生态/插件/工具链整合可能较少。 |
| 扩展性 /特殊功能支持 | 支持额外 capabilities(例如 vision, pdf 等)作为可选 caps;可以配置 blocked / allowed origins, service workers 等参数。([GitHub][1]) | 有自然语言 Agent 驱动、视觉理解/截图辅助、多个 LLM 提供者支持;工具集可能更灵活地针对 agent 用例优化。([MCP Market][4]) | 强调 “fine-grained control” via CDP;如果需求是深度控制 Chrome 浏览器功能(比如 DOM 操作,调试,console log 等),chrome-mcp 更直接;但可能视觉/跨浏览器功能弱一些。 |
应用建议(哪个场景选哪个)
基于上述比较,如果要在具体场景中选择,我认为:
-
如果你想要 跨浏览器测试 / 多种浏览器引擎,并且希望自动化脚本能在不同环境上一致工作,playwright-mcp 是强劲选择。
-
如果你的任务偏向于 自然语言指令 + agent 驱动 + 简单浏览器自动化(比如让一个 AI 助手去浏览网页、填表、提取内容等),并偏好 Python 生态或快速上手,那么 browser-use 很合适。
-
如果你希望 最大限度利用已有的 Chrome 浏览器状态、插件、登录会话等,或者需要非常底层 /细粒度控制 Chrome(如控制 DevTools Protocol /控制 console /network etc),chrome-mcp 是更佳选项。