Playwright MCP 报错排查:连接失败、浏览器打不开、点了没反应怎么修

Playwright MCP 通过结构化页面快照让 AI 操作浏览器;装好只能证明“能启动”,真正排障还要看连接、浏览器、网络和配置。

下面四类故障都能复现、也都能当场验证:连接失败、浏览器起不来、网络与代理不通、配置对不上。每类先给“看到什么现象”,再给“改哪一行、怎么确认修好了”。

先确认安装环境与 MCP 是否启动

Playwright MCP 是 Model Context Protocol(模型上下文协议)服务器,让 Claude Code、Cursor 等 MCP 客户端通过结构化无障碍快照控制浏览器 —— 这个词拆开就好懂:读取页面的无障碍树(每个元素的角色、可读名称和层级),而不是截屏看像素。它不依赖截图识别,但正式排查前至少准备下面三项:

  1. 安装 Node.js 18 或更高版本,运行 node -v,确认输出不低于 v18。
  2. 准备一个支持 MCP 的客户端,例如 VS Code、Cursor、Claude Desktop、Claude Code、Windsurf 或 Goose。
  3. 使用官方推荐的包入口,运行 npx @playwright/mcp@latest --help;命令能返回帮助信息,再继续检查客户端配置。

标准配置可以直接写入客户端的 settings.json:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Claude Code 也可以直接添加:

claude mcp add playwright npx @playwright/mcp@latest

Amp 提供的官方命令是:

amp mcp add playwright -- npx @playwright/mcp@latest

先选一种配置入口,不要同时保留多份同名服务器配置。成功标志不是配置文件出现,而是客户端能列出 playwright 服务器,并能调用 browser_snapshot 一类工具。

连接失败:先分清本地、SSE 与 Streamable HTTP

“1 MCP server failed to connect (see /mcp for info)”表示客户端没有建立 MCP 连接。此时先确认服务器确实监听,再核对客户端使用的协议和地址,不能只看浏览器窗口是否弹出。

场景 客户端配置重点 常见错误 对应处理
本地 stdio command 为 npx,参数为 @playwright/mcp@latest 客户端不识别服务器,或启动后立即退出 用命令行运行同一条 npx 命令,检查 Node.js 与包启动错误
远程 SSE URL 指向 /sse;Claude Code 还需 "type": "sse"(客户端方言,规范无此字段) 服务器已监听,但客户端不连接 按客户端文档补字段,确认容器外能访问宿主地址
Streamable HTTP URL 指向 /mcp 客户端只支持 SSE 改用客户端支持的 /sse,或换支持 Streamable HTTP 的客户端
WSL 访问宿主服务 宿主地址不能直接写 localhost browser_navigate 返回 Error: "undefined" 把宿主地址改成 WSL 可访问的宿主机地址,再测试导航

远程 SSE 的关键是一条容易搞混的边界:"type": "sse" 不是 MCP 规范字段——官方维护者在 Issue #700 里的原话是 “No such thing as type as per MCP spec”。但同一条 issue 下的社区实测又显示,Claude Code 不加这个字段就识别不到服务器。两句话都成立,因为前者讲规范、后者讲某个客户端的方言。速查结论见上表;下面只给 Claude Code 的添加命令:

claude mcp add --transport sse playwright http://host.docker.internal:8931/sse -s project

如果客户端支持 Streamable HTTP,则改用 /mcp 端点。这里的关键是:客户端必须知道传输类型和准确 URL。官方仓库的远程启动方式为:

npx @playwright/mcp@latest --port 8931 --host 0.0.0.0 --browser chromium

看到 Listening on http://localhost:8931 只证明进程开始监听,不代表容器、WSL 或另一台机器能访问它。

浏览器打不开:先处理 WSL 与认证回调

Issue #46 记录的典型现象是:调用 browser_navigate 时出现 Error: "undefined"。这个报错本身没有指出根因,但从该 Issue 的排查过程看,需要依次验证 MCP 进程、目标应用和 WSL 网络,而不是反复重试导航。

先在 WSL 中直接启动无头模式:

npx @playwright/mcp@latest --headless

如果 Playwright MCP 本身无法运行,Issue #46 给出的重装命令是:

npm install -g @playwright/mcp

接着用浏览器访问实际目标地址。若网页能打开,但 MCP 客户端仍在等待登录,检查 localhost 是否指向错误环境:Windows 服务从 WSL 访问时,WSL 自己的 localhost 不是 Windows 宿主。此时应使用 WSL 能访问的宿主 IP;容器场景可测试 host.docker.internal。

认证浏览器弹出后没有窗口,常见组合报错是:

Authenticating with playwright…
A browser window will open for authentication
Return here after authenticating in your browser.
No browser opened...

这种情况先确认服务器不是以不可见方式运行,再检查当前系统是否支持 headed 浏览器。远程或容器环境还要确认图形浏览器能启动,不能把“认证需要浏览器窗口”误判成网页加载失败。

工具调用了但页面没变化:不要立刻重复点击

操作后页面没变化,不一定是工具没执行。官方远程 MCP 排障文档提醒:对点击、提交表单、上传文件等非幂等操作(重复执行会产生不同后果的操作 —— 订单会被提交两次、文件会传两份),重复执行可能造成二次提交。正确顺序是重新观察,再决定是否重试:

  1. 调用 browser_snapshot 或 browser_find,确认页面当前状态。
  2. 导航或换页后重新取得快照,因为旧引用可能在页面重渲染后失效。
  3. 对预期出现的文本使用 browser_wait_for,再检查状态是否变化。
  4. 若页面出现对话框,调用 browser_handle_dialog,明确设置接受或拒绝。
  5. 会话已经失效时,新建会话并从已知应用状态重启,不要在失效会话中反复点击。

官方仓库还特别提醒:操作返回“打开对话框”不一定是失败。此时继续重复原点击,反而会跳过对话框处理。成功标志是快照显示预期页面或元素,且网络、控制台没有新增异常。

按报错选择最短处理路径

遇到 Playwright MCP 报错时,可以按原始现象直接定位:

原始现象 先检查 立即执行的解法
1 MCP server failed to connect (see /mcp for info) 客户端配置、监听地址、传输类型 核对 /sse 或 /mcp;Claude Code 需补 "type": "sse",其他客户端按各自文档
Error: "undefined" WSL 网络、目标服务监听地址 替换错误的 localhost,再调用 browser_navigate
No browser opened... headed 浏览器、认证环境 在可显示窗口的会话运行并完成认证
页面没有变化 旧快照引用、对话框、非幂等操作 先 browser_snapshot,处理对话框后再决定是否重试

如果标准本地配置仍然无法连接,先在终端运行:

npx @playwright/mcp@latest

终端出现服务器启动信息后,再启动 MCP 客户端。这样能把“包或运行环境失败”与“客户端配置失败”分开。安装本身使用 npx 时不需要预装包;只有手动全局安装才需要执行 npm install -g @playwright/mcp。

官方入口与继续排查的路径

基础安装命令、Node.js 版本要求和各客户端配置,以官方仓库 README 为准:
https://github.com/microsoft/playwright-mcp

Playwright MCP 官方首页提供了 MCP、CLI、API 和浏览器自动化功能的总入口:
https://playwright.dev

远程 MCP 的观察—行动—验证流程、浏览器会话参数和对话框处理方法,参见微软官方排障文档:
https://learn.microsoft.com/zh-cn/azure/app-testing/playwright-workspaces/troubleshoot-remote-mcp-server#1

远程 SSE 配置、Claude Code 识别问题及认证窗口异常,可对照官方仓库 Issue #700:
https://github.com/microsoft/playwright-mcp/issues/700#1

WSL 中 browser_navigate 返回 Error: "undefined" 的排查记录见 Issue #46:
https://github.com/microsoft/playwright-mcp/issues/46#1

最后用三个可观察结果验收:客户端能识别 playwright 服务器、终端能启动 MCP 进程、页面操作后重新抓取的快照与预期状态一致。三项同时成立,才算真正修复,而不是仅仅让配置看起来正确。

参考来源

评论区

0 条评论

登录后可评论。

Skill 捕获手 13 阅读