MCP.so
登录
返回博客

Playwright MCP Claude Code 配置教程:一步步上手

2026年10月15日MCP.so TeamMCP.so Team

一条命令在 Claude Code 中配置 Playwright MCP,然后调整 headless、browser、isolated 和 caps 等参数,试用示例提示词,并解决最常见的报错。

一行命令安装

要在 Claude Code 中使用 Playwright MCP,运行 claude mcp add playwright npx @playwright/mcp@latest,启动 claude,然后在 /mcp 中确认 playwright 显示为已连接。从此以后,Claude 就能通过微软官方的 Playwright MCP 服务器打开真实浏览器,点击、输入、读取页面并截图。

这条命令直接来自 Playwright MCP README。本文剩下的部分讲的是跑通之后马上会遇到的选择:装在哪个作用域、有头还是无头、持久化还是隔离的浏览器配置文件、额外能力,以及浏览器启动不了时怎么办。

Playwright MCP 到底做了什么

Playwright MCP 把浏览器自动化封装成 MCP 工具,比如 browser_navigate、browser_click、browser_type、browser_fill_form、browser_snapshot 和 browser_take_screenshot。它不把截图发给模型,而是返回无障碍快照(accessibility snapshot):一棵结构化的页面元素树,带有 Claude 可以点击或填写的引用。因此它速度快,比基于视觉的方案更省,而且对操作哪个元素是确定的。

在 Claude Code 中的典型用法:

  • 检查刚写好的功能在浏览器里是否真的能用。
  • 按工单描述一步步复现 UI 缺陷。
  • 先探索网站,再为它编写 Playwright 测试。
  • 填写表单,或从依赖 JavaScript 的页面中提取数据。

前置条件

  • Node.js 18 或更高版本(README 中写明的要求)。用 node --version 检查。
  • 已安装并登录 Claude Code。
  • 一个 Playwright 能驱动的浏览器。可以用 --browser 选择 chrome、firefox、webkit 或 msedge。

第 1 步:添加服务器

最快:local 作用域

claude mcp add playwright npx @playwright/mcp@latest

这会把服务器保存到默认的 local 作用域,只对你在当前项目中可用。

所有项目可用:user 作用域

claude mcp add --scope user playwright -- npx @playwright/mcp@latest

给 Playwright MCP 本身传参数时,一定要把启动命令放在 -- 之后,这样 Claude Code 就不会把 --headless 之类的参数当成自己的选项。

与团队共享:project 作用域

claude mcp add --scope project playwright -- npx @playwright/mcp@latest

这会在项目根目录写入一个可以提交的 .mcp.json:

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

队友第一次在仓库中运行 claude 时会被要求批准该服务器。作用域和批准机制的整体说明,见我们的 Claude Code MCP 指南。

第 2 步:验证连接

claude mcp list

你应该看到 playwright 显示 ✔ Connected。在会话中,/mcp 会显示同样的状态以及工具列表。如果显示 ✘ Failed to connect,直接跳到下面的故障排查表。

第 3 步:运行第一个提示词

第一次使用时要明确点名工具,否则 Claude 可能会改用 shell 写一个 Playwright 脚本去跑:

Use the playwright MCP to open https://mcp.so, search for "github",
and tell me the first three results.

浏览器窗口会弹出来(服务器默认是有头模式),你可以看着 Claude 操作页面。除非你已允许,Claude Code 在使用每个新工具前都会请求权限。

常用参数

所有参数都写在启动命令的包名之后,或写进 .mcp.json 的 args 数组。每个参数也都有对应的 PLAYWRIGHT_MCP_* 环境变量。

参数作用适用场景
--headless无窗口运行浏览器(默认有头)SSH 会话、CI,或不想弹窗时
--browser选择 chrome、firefox、webkit 或 msedge跨浏览器检查,或没装 Chrome 时
--isolated配置文件只保存在内存中,不写入磁盘干净的测试会话、并行运行多个客户端
--storage-state从文件加载 Cookie 和本地存储到隔离会话不用持久化配置文件也能以登录状态开始
--user-data-dir使用指定的配置文件目录把登录状态保存在一个已知位置
--caps启用额外工具组:vision、pdf、devtools坐标点击、保存 PDF、追踪和录屏
--device模拟设备,比如 "iPhone 15"检查移动端布局
--viewport-size设置视口,比如 1280x720截图尺寸保持一致
--output-dir自动命名文件(如截图)的保存位置别让产物堆在仓库根目录
--allowed-origins用分号分隔的、允许浏览器请求的源列表减少误访问(不是安全边界)
--extension通过 Playwright 扩展连接你正在运行的 Chrome 或 Edge复用你真实的已登录标签页

无头、隔离的 Firefox 配置如下:

claude mcp add playwright -- npx @playwright/mcp@latest \
  --headless --browser firefox --isolated

在 .mcp.json 中写法相同,这里还启用了 PDF 和 vision 工具:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--headless",
        "--isolated",
        "--caps=vision,pdf"
      ]
    }
  }
}

能力详解

  • vision 增加基于坐标的鼠标工具,适合 canvas 应用,或在无障碍树中显示不佳的元素。
  • pdf 增加 browser_pdf_save。
  • devtools 增加追踪、录屏和元素高亮。

README 还列出了网络模拟、Cookie 与存储、配置以及测试断言等可选工具组。只启用你需要的:每多一个工具,Claude 就要多考虑一份定义。

配置文件与登录

Playwright MCP 默认使用持久化配置文件,所以登录状态会跨会话保留。配置文件按项目分别存储:

  • macOS:~/Library/Caches/ms-playwright/mcp- 后接浏览器渠道和工作区哈希
  • Linux:~/.cache/ms-playwright/mcp- 后接浏览器渠道和工作区哈希
  • Windows:%USERPROFILE%\AppData\Local\ms-playwright\mcp- 后接浏览器渠道和工作区哈希

删除该文件夹即可退出所有登录。一个持久化配置文件同一时间只能被一个浏览器使用,所以如果你在同一个项目的两个终端里运行 Claude Code,第二个要加 --isolated 或使用不同的 --user-data-dir。

如果任务需要用你真实的账号,--extension 模式会连接你自己 Chrome 或 Edge 中的标签页,而不是另开浏览器。请慎重使用:Claude 在浏览器里能做的任何事,都是以你的身份做的。在让 Agent 操作已登录的生产账号之前,先读一读 MCP 安全最佳实践。

好用的示例提示词

故障排查

现象可能原因解决方法
添加后立刻 ✘ Failed to connectNode.js 低于 18,或 npx 不在 PATH 中升级 Node,并在终端运行 npx @playwright/mcp@latest --help
浏览器启动失败,提示未安装所选浏览器缺失安装它,例如 npx playwright install chrome,或用 --browser 换一个
首次启动超时首次 npx 下载较慢用 MCP_TIMEOUT=60000 claude 启动,或先运行一次 npx @playwright/mcp@latest --help 预热缓存
报错说配置文件已被占用两个客户端共用一个持久化配置文件加上 --isolated 或单独的 --user-data-dir
在远程机器或 CI 上没反应有头浏览器没有显示器加上 --headless
Claude 写脚本而不是用浏览器它没有选择 MCP 工具在提示词中写明「use the playwright MCP」
大页面出现输出过大警告页面快照太大调大 MAX_MCP_OUTPUT_TOKENS,或让 Claude 只关注某个区域

想确切看到服务器暴露了哪些工具、返回了什么,可以把它连到 MCP Inspector。

改用 Docker 运行

README 还提供了容器镜像,目前只支持无头 Chromium:

{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--init",
        "--pull=always",
        "mcr.microsoft.com/playwright/mcp"
      ]
    }
  }
}

如果你已经通过网关统一管理服务器,参见 Docker MCP Gateway 配置。

Playwright MCP 与 Playwright CLI

Playwright 团队坦言,编码 Agent 有时用 Playwright CLI 加 skills 效果更好,因为简短的 CLI 调用避免了把大量工具定义和无障碍树塞进上下文。当 Claude 需要保持浏览器打开、一步步推理页面结构时,比如探索式测试或自愈测试,MCP 仍然更合适。在 Claude Code 中,工具搜索本来就会把用不到的工具定义挡在上下文之外,所以交互式浏览器任务默认用 MCP 没问题;长时间、高频率的批量运行可以考虑 CLI。

如果你只需要一个更简单的无头抓取工具,Puppeteer MCP 服务器也是一个选择,但 Playwright MCP 是微软官方的跨浏览器方案。

下一步

Playwright MCP 跑通后,可以搭配能形成闭环的服务器:用问题跟踪工具读取缺陷报告,或用 GitHub MCP 服务器提交带修复和新测试的 PR。更多服务器可以浏览 MCP 服务器目录,或阅读完整的 Claude Code MCP 指南来管理你添加的一切。

常见问题

如何在 Claude Code 中安装 Playwright MCP?

在终端运行 'claude mcp add playwright npx @playwright/mcp@latest',启动 Claude Code,并在 /mcp 中确认 playwright 服务器显示为已连接。需要 Node.js 18 或更高版本。

如何在 Claude Code 中以无头模式运行 Playwright MCP?

在包名后加上 --headless 参数,例如 'claude mcp add playwright -- npx @playwright/mcp@latest --headless'。浏览器默认是有头模式。

Playwright MCP 会在会话之间保留登录状态吗?

会。它默认使用按项目存储的持久化浏览器配置文件,所以重启后登录状态仍在。想每次都用全新的内存配置文件,用 --isolated;想加载已保存的 Cookie,用 --storage-state。

为什么 Claude 写了 Playwright 脚本,而不是直接用浏览器?

Claude 有时会选择 shell 而不是 MCP 工具。在提示词里写明「use the playwright MCP」,并在 /mcp 中确认服务器已连接。