简要结论
- 当两个服务器自己启动 Chrome 时,都填好了每个字段、上传了文件,并能在同源 iframe 和跨站 iframe 中操作,各自 5 次中 5 次成功。
- 连接到一个真人已经打开的 Chrome 时,Playwright MCP 直接填好了打开着的表单。Chrome DevTools MCP 1.10.1 能在那里点击,但每次运行都必须先重新加载一次页面,才能填写字段。
- Chrome DevTools MCP 自己启动的 Chrome 报告 navigator.webdriver = true;Playwright MCP 启动的 Chrome 报告 false。在你自己启动的 Chrome 中,两者都报告 false。
- 如果你想要干净、可重复的运行和更短的工具列表,选 Playwright MCP。如果你要调试自己的 Web 应用(性能跟踪、Lighthouse、网络),或想和智能体共用你日常使用的 Chrome,选 Chrome DevTools MCP。
测试结果
每个单元格表示 5 次中通过的次数。测试日期 2026年9月30日,Google Chrome 154.0.8037.92,@playwright/mcp 0.0.83,chrome-devtools-mcp 1.10.1,第三列为 agent-browser 0.38.1。
模式 1:工具自己启动 Chrome
每个工具用一个全新的配置文件夹启动无头 Chrome,打开测试页面并在页面上登录,填写表单并点击提交,但不勾选真人步骤。
| 主题 | Playwright MCP | Chrome DevTools MCP | agent-browser |
|---|---|---|---|
| 可从快照访问两个 iframe | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 已填写文本、邮箱、下拉框、单选框、复选框和多行文本框 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 拒绝允许文件夹之外的上传(默认) | 5 次中 5 次 | 5 次中 5 次 | 未测量 |
| 上传文件完整到达(名称、大小、SHA-256) | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 在同源 iframe 中输入和点击 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 在跨站 iframe 中输入和点击 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 表单接受了除真人步骤外的所有内容 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 2 次 |
| 使用同一配置文件重启后保留登录 | 5 次中 0 次 | 5 次中 5 次 | 5 次中 5 次 |
| browser_close 并重启后保留登录 | 5 次中 5 次 | 未测量 | 未测量 |
| 隔离模式启动时没有旧登录 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| navigator.webdriver 报告为 false | 5 次中 5 次 | 5 次中 0 次 | 5 次中 0 次 |
模式 2:工具连接到真人正在使用的 Chrome
我们自己用独立的配置文件和本地调试端口启动 Chrome。一个代替真人的替身打开页面、登录并输入产品名称。然后工具连接上来,填写其余部分后停下;替身勾选真人步骤并提交;最后工具读取结果。
| 主题 | Playwright MCP | Chrome DevTools MCP | agent-browser |
|---|---|---|---|
| 找到真人的标签页及其登录状态 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 在页面原样状态下填写字段 | 5 次中 5 次 | 5 次中 0 次 | 5 次中 5 次 |
| 重新加载一次后填写字段 | 未测量 | 5 次中 5 次 | 未测量 |
| 上传文件完整到达(名称、大小、SHA-256) | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 在同源 iframe 中输入和点击 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
| 在跨站 iframe 中输入和点击 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 0 次 |
| 真人勾选真人步骤并提交 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 0 次 |
| 智能体读取到提交结果 | 5 次中 5 次 | 5 次中 5 次 | 5 次中 0 次 |
| 智能体的网络日志显示了表单 POST | 5 次中 5 次 | 5 次中 5 次 | 5 次中 0 次 |
| 服务器重启后重新连接到同一标签页 | 5 次中 5 次 | 5 次中 5 次 | 未测量 |
| navigator.webdriver 报告为 false | 5 次中 5 次 | 5 次中 5 次 | 5 次中 5 次 |
运行截图


测试方法
- 日期 2026年9月30日,macOS 上的 Google Chrome 154.0.8037.92。版本已固定:@playwright/mcp 0.0.83,chrome-devtools-mcp 1.10.1,agent-browser 0.38.1。
- 表单是 127.0.0.1 上的本地测试页面;跨站 iframe 来自另一个端口上的 localhost。没有涉及任何真实网站、账号、个人浏览器配置文件或付款。
- 一个小脚本通过 MCP 与每个服务器通信,方式与智能体的客户端完全相同:快照、填写表单、上传、点击、读取控制台和网络。元素引用取自每个工具自己的快照。没有语言模型参与决策,因此每次运行都遵循相同的步骤。
- 每个场景对每个工具运行 5 次。表格统计通过的运行次数。
- 模式 2 中的真人是一个向标签页发送普通 DevTools Protocol 命令的脚本。它只是替身,并非真人。为了排除它是 Chrome DevTools MCP 填写失败的原因,我们还直接用测试 URL 启动 Chrome,完全不使用脚本:结果相同。
- agent-browser 通过其主要界面命令行驱动,而不是通过它的 MCP 模式。
本测试未覆盖的内容
- 真实的 CAPTCHA、机器人检测以及第三方网站上的真实登录。
- Firefox 和 WebKit、两个项目的浏览器扩展,以及 Chrome 的自动连接对话框。
- 性能跟踪、Lighthouse 和内存工具。
- 由语言模型选择步骤:真实智能体需要多少 token 和轮次取决于模型。
- Windows 和 Linux。
值得注意的发现
两者都拒绝来自允许文件夹之外的上传
我们第一次上传的文件来自项目文件夹,两个服务器默认都拒绝了。Playwright MCP 允许工作区根目录,客户端未指定根目录时允许其工作目录;Chrome DevTools MCP 在客户端未指定根目录时允许系统临时文件夹。从允许的文件夹上传时,文件每次都完整到达:名称、大小和 SHA-256 均一致。两个项目都在文档中说明了放宽此限制的参数。
Chrome DevTools MCP 无法填写连接前已打开的页面
在模式 2 中,Chrome DevTools MCP 找到了标签页及其登录状态,能点击按钮,也能在两个 iframe 中输入,但填写页面本身的字段时每次都以 “did not become interactive” 失败。智能体重新加载一次后,填写正常,其余测试也通过了。重新加载会丢失页面尚未保存的内容;我们的测试页面会恢复草稿,而很多真实表单不会。Playwright MCP 不需要重新加载。
navigator.webdriver 取决于由谁启动 Chrome
当 Chrome DevTools MCP 启动 Chrome 时,页面看到 navigator.webdriver = true,其自身文档把这一点列为某些登录失败的原因。Playwright MCP 启动的 Chrome 报告 false。当工具连接到我们自己启动的 Chrome 时,每个工具都报告 false。我们没有测试任何真实的机器人检测。
Playwright MCP 只有在 browser_close 之后才保留配置文件
即使使用持久化配置文件夹,如果客户端只是断开连接,服务器重启后登录状态就消失了。当智能体先调用 browser_close 时,每次运行都保留了登录。Chrome DevTools MCP 无需调用 close,每次运行都保留了配置文件。
agent-browser 在连接模式下漏掉了跨站 iframe
作为第三列,agent-browser 在自己启动浏览器时填好了每个字段、文件和两个 iframe;它的提交点击每次都报告已完成,但页面只在部分运行中收到。连接到运行中的 Chrome 时,它的快照显示了同源 iframe,却没有跨站 iframe,等待后再拍第二次快照也一样,因此无法完成表单。
| 主题 | 官方原文 | 实际意味着什么 |
|---|---|---|
| Playwright MCP 文件访问 | By default access to file system is restricted to workspace root directories (or cwd if no roots are configured) only, and navigation to file:// URLs is blocked. | 从你的项目工作区上传文件,或用 --allow-unrestricted-file-access 启动服务器。 |
| Chrome DevTools MCP 文件访问 | By default, file-writing tools are restricted to the OS temp directory when no roots are configured. | 如果客户端没有提供 MCP 根目录,就把要上传的文件放在临时文件夹,或添加 --filesystem-root。 |
| Chrome DevTools MCP 登录 | Some accounts may prevent sign-in when the browser is controlled via WebDriver (the default launch mechanism for the Chrome DevTools MCP server). | 对于需要登录的网站,连接到你自己启动的 Chrome,而不是让服务器启动一个。 |
| Playwright MCP 配置文件 | A persistent profile can only be used by one browser instance at a time | 同一工作区中的两个智能体需要 --isolated 或各自独立的配置文件夹。 |
| Playwright CLI | CLI invocations are more token-efficient: they avoid loading large tool schemas and verbose accessibility trees into the model context | 对于上下文紧张的编程智能体,Microsoft 自己推荐使用其 CLI 加技能,而不是 MCP 服务器。 |
| Chrome DevTools MCP 使用统计 | Google collects usage statistics (such as tool invocation success rates, latency, and environment information) to improve the reliability and performance of Chrome DevTools MCP. | 默认开启;如果不需要,添加 --no-usage-statistics。 |
有文档记载,未测试
以下差异来自各项目在查阅日期时的 README 和文档。我们没有测量它们。
| 主题 | Playwright MCP | Chrome DevTools MCP |
|---|---|---|
| 浏览器 | 通过 --browser 支持 Chrome、Firefox、WebKit 和 Edge。 | 官方支持 Google Chrome 和 Chrome for Testing;其他 Chromium 浏览器可能可用。 |
| 你正在运行的浏览器 | 用 --cdp-endpoint 连接调试端口,或使用带标签页选择和确认的 Playwright Extension。 | 用 --browser-url 连接调试端口,或在 Chrome 144+ 中使用 --autoConnect,每次会话弹出权限对话框。 |
| 配置文件 | 默认使用持久化配置文件;--isolated 将其保存在内存中;--storage-state 加载 Cookie 和存储。 | 默认使用持久化配置文件;--isolated 使用结束后即删除的临时配置文件。 |
| 调试 | 控制台和网络请求;跟踪、视频和存储工具按需开启。 | 带洞察的性能跟踪、Lighthouse 审计、内存快照、带源映射堆栈跟踪的控制台、网络请求。 |
| 发送给厂商的数据 | README 未描述任何使用统计。 | 使用统计默认开启(--no-usage-statistics);性能工具可能会在 CrUX API 中查询跟踪 URL(--no-performance-crux)。 |
| 不用 MCP | Microsoft 为编程智能体推荐 Playwright CLI 加技能。 | 附带一个无需 MCP 即可使用的 CLI。 |
| 许可证 | Apache-2.0 | Apache-2.0 |
工具列表有多重
在打开任何页面之前,Playwright MCP 公布了 25 个工具、20.3 KB 的工具描述,Chrome DevTools MCP 公布了 30 个工具、25.7 KB(默认设置,通过 tools/list 测量)。智能体在整个会话中都要把这些文本带在上下文里。Chrome DevTools MCP 提供只有三个工具的 --slim;Playwright MCP 可通过 --caps 添加工具组。
该选哪一个
适合 Playwright MCP 的情况
- 智能体应为每个任务启动一个干净的浏览器,无头运行或在 CI 中运行;
- 你还需要 Firefox 或 WebKit;
- 智能体要接手真人已经开始填写的表单,因为它无需重新加载就能填写已打开的页面;
- 你希望智能体上下文中的工具列表更短。
适合 Chrome DevTools MCP 的情况
- 你在调试自己的 Web 应用,希望在一处使用性能跟踪、Lighthouse、网络和控制台;
- 你想通过自动连接与智能体共用日常使用的 Chrome;
- 你只用 Chrome,并且偏好由 Chrome DevTools 团队维护的工具;
- 你可以接受智能体在填写一个不是它打开的页面之前先重新加载。
agent-browser 呢?
agent-browser 是一个面向智能体的命令行浏览器工具,带有可选的 MCP 模式。它自己启动浏览器时填好了同一个表单,但连接到运行中的 Chrome 时漏掉了跨站 iframe。如果你的智能体用简短的 shell 命令比用 MCP 工具更顺手,值得一看。
自己动手测试
测试页面是一个没有依赖的 Node.js 文件,只在你自己的机器上监听。
- 下载该文件,用 Node.js 18 或更高版本运行。
- 先打开一次 http://127.0.0.1:4461/ 查看页面;跨站 iframe 的加载地址是 http://localhost:4462/。
- 把下面任一 MCP 配置添加到你的智能体中,让它填写表单、上传任意一个小 PNG、填写两个 iframe,并在真人步骤前停下。
- 自己勾选真人步骤并提交,然后问智能体页面现在显示什么。
该文件提供表单、iframe 和一个本地回显端点,不会向其他任何地方发送数据。
工具自己启动 Chrome
Playwright MCP
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@0.0.83"
]
}
}
}Chrome DevTools MCP
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@1.10.1",
"--no-usage-statistics"
]
}
}
}工具连接到你在端口 9222 上启动的 Chrome
Playwright MCP
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@0.0.83",
"--cdp-endpoint",
"http://127.0.0.1:9222"
]
}
}
}Chrome DevTools MCP
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@1.10.1",
"--browser-url=http://127.0.0.1:9222",
"--no-usage-statistics"
]
}
}
}LaunchRepo 的选择
- LaunchRepo 的 playbook 是针对连接到你自己 Chrome 的 Chrome DevTools MCP 编写和测试的,因为提交到目录需要你的真实登录,而且你应该看到每一步。
- 在你自己启动的 Chrome 中,本次测试的每个工具的 navigator.webdriver 都保持为 false,交接也正常:你在同一个标签页完成某一步,智能体读取结果。
- 如果智能体连接时目录表单已经打开,请在你输入任何内容之前让它先重新加载页面,这样你填写的内容就不会丢失。
来源
官方页面和代码仓库于 2026年9月30日 查阅。引文逐字照录;测试结果为我们自己的测量。
常见问题
- 对编程智能体来说,Playwright MCP 和 Chrome DevTools MCP 哪个更好?
- 没有哪个在所有方面都胜出。在我们的测试中,两者自己启动 Chrome 时都通过了所有表单检查。Playwright MCP 还能填写真人已打开的页面,公布的工具列表也更短;Chrome DevTools MCP 则提供性能跟踪、Lighthouse 以及更深入的网络和控制台工具,用于调试你自己的应用。
- Chrome DevTools MCP 能使用我已登录的 Chrome 吗?
- 能。使用 --autoConnect 时,在你允许远程调试并确认对话框后,它会连接到正在运行的 Chrome 144 或更高版本。也可以用远程调试端口和单独的配置文件夹启动 Chrome,再用 --browser-url 指向它;从 Chrome 136 起,默认配置文件会忽略该端口。
- 两者都能处理 iframe 吗?
- 能。在我们的运行中,两者在两种模式下都访问到了同源 iframe 和跨站 iframe,5 次中 5 次成功,并能在其中输入和点击。
- 为什么文件上传失败了?
- 两个服务器默认只从允许的文件夹读取文件:Playwright MCP 从工作区根目录或其工作目录读取,Chrome DevTools MCP 在客户端未指定根目录时从系统临时文件夹读取。把文件移到那里,或使用文档中说明的参数放宽限制。
- 这些工具能解 CAPTCHA 吗?
- 两者的文档都没有提到 CAPTCHA 功能,我们也没有测试真实的 CAPTCHA。请改为规划交接:智能体停下,你在同一个可见窗口中完成这一步,智能体再继续。在我们的连接测试中,这种交接对两个服务器都有效。
- navigator.webdriver 会暴露智能体吗?
- 在我们的测试中,只有当 Chrome DevTools MCP 自己启动 Chrome 时它才为 true。Playwright MCP 启动的 Chrome 以及我们自己启动的任何 Chrome 都报告 false。网站是否对此作出反应取决于该网站;我们没有测试真实的机器人检测。
让你的智能体完成目录发布
LaunchRepo 为你的编程智能体提供经过测试的发布平台和目录 playbook。它通过 Chrome DevTools MCP 在你自己的 Chrome 中工作,最终提交是由它自行完成还是先询问你,由你决定。
查看价格