Playwright MCP 是一个模型上下文协议(MCP)服务器,它借助 Playwright 提供浏览器自动化功能。该服务器使大语言模型(LLMs)能够通过结构化的无障碍快照与网页进行交互,无需使用截图或经过视觉调整的模型。
首先,将 Playwright MCP 服务器与你的客户端一起安装。
标准配置适用于大多数工具:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
不同客户端的安装方式如下:
使用 Claude Code CLI 添加 Playwright MCP 服务器:
claude mcp add playwright npx @playwright/mcp@latest
遵循 MCP 安装 指南,使用上述标准配置。
转到 Cursor 设置 -> MCP -> 添加新的 MCP 服务器。自定义名称,使用 命令 类型并输入命令 npx @playwright/mcp。你还可以通过点击 编辑 来验证配置或添加命令参数。
遵循 MCP 安装 指南,使用上述标准配置。
转到 高级设置 -> 扩展 -> 添加自定义扩展。自定义名称,选择类型 STDIO,并将 命令 设置为 npx @playwright/mcp。点击 "添加扩展"。
遵循 MCP 安装 指南,使用上述标准配置。你还可以使用 VS Code CLI 安装 Playwright MCP 服务器:
# 对于 VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
安装完成后,Playwright MCP 服务器将可在 VS Code 中与你的 GitHub Copilot 代理一起使用。
遵循 Windsurf MCP 文档。使用上述标准配置。
Playwright MCP 服务器支持以下参数。这些参数可以在上述 JSON 配置中的 "args" 列表中提供:
> npx @playwright/mcp@latest --help
--allowed-origins 允许浏览器请求的源列表,用分号分隔。默认允许所有源。
--blocked-origins 阻止浏览器请求的源列表,用分号分隔。阻止列表在允许列表之前评估。如果仅使用阻止列表,不匹配阻止列表的请求仍然允许。
--block-service-workers 阻止服务工作者
--browser 要使用的浏览器或 Chrome 通道,可能的值:chrome、firefox、webkit、msedge。
--caps 要启用的额外功能列表,用逗号分隔,可能的值:vision、pdf。
--cdp-endpoint 要连接的 CDP 端点。
--config 配置文件的路径。
--device 要模拟的设备,例如:"iPhone 15"
--executable-path 浏览器可执行文件的路径。
--headless 以无头模式运行浏览器,默认是有头模式
--host 服务器绑定的主机。默认是 localhost。使用 0.0.0.0 绑定所有接口。
--ignore-https-errors 忽略 HTTPS 错误
--isolated 将浏览器配置文件保存在内存中,不保存到磁盘。
--image-responses 是否向客户端发送图像响应。可以是 "allow" 或 "omit",默认为 "allow"。
--no-sandbox 禁用通常会沙盒化的所有进程类型的沙盒。
--output-dir 输出文件的目录路径。
--port SSE 传输监听的端口。
--proxy-bypass 要绕过代理的域名列表,用逗号分隔,例如 ".com,chromium.org,.domain.com"
--proxy-server 指定代理服务器,例如 "http://myproxy:3128" 或 "socks5://myproxy:8080"
--save-session 是否将 Playwright MCP 会话保存到输出目录。
--save-trace 是否将会话的 Playwright 跟踪保存到输出目录。
--storage-state 隔离会话的存储状态文件的路径。
--user-agent 指定用户代理字符串
--user-data-dir 用户数据目录的路径。如果未指定,将创建一个临时目录。
--viewport-size 指定浏览器视口大小(像素),例如 "1280, 720"
你可以像使用常规浏览器一样使用持久配置文件运行 Playwright MCP(默认方式),也可以在隔离上下文中进行测试会话。
所有登录信息将存储在持久配置文件中,如果你想清除离线状态,可以在会话之间删除该文件。持久配置文件位于以下位置,你可以使用 --user-data-dir 参数覆盖它。
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-profile
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-profile
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-profile
在隔离模式下,每个会话都在隔离配置文件中启动。每次你要求 MCP 关闭浏览器时,会话将关闭,并且该会话的所有存储状态将丢失。你可以通过配置的 contextOptions 或 --storage-state 参数为浏览器提供初始存储状态。了解更多关于存储状态的信息 点击这里。
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
Playwright MCP 服务器可以使用 JSON 配置文件进行配置。你可以使用 --config 命令行选项指定配置文件:
npx @playwright/mcp@latest --config path/to/config.json
// 将浏览器配置文件保存在内存中,不保存到磁盘。
isolated?: boolean;
// 用于浏览器配置文件持久化的用户数据目录路径
userDataDir?: string;
// 浏览器启动选项(参见 Playwright 文档)
// @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch
launchOptions?: {
channel?: string; // 浏览器通道(例如 'chrome')
headless?: boolean; // 以无头模式运行
executablePath?: string; // 浏览器可执行文件的路径
// ... 其他 Playwright 启动选项
};
// 浏览器上下文选项
// @see https://playwright.dev/docs/api/class-browser#browser-new-context
contextOptions?: {
viewport?: { width: number, height: number };
// ... 其他 Playwright 上下文选项
};
// 用于连接现有浏览器的 CDP 端点
cdpEndpoint?: string;
// 远程 Playwright 服务器端点
remoteEndpoint?: string;
},
// 服务器配置 server?: { port?: number; // 监听的端口 host?: string; // 绑定的主机(默认:localhost) },
// 额外功能列表 capabilities?: Array< 'tabs' | // 标签管理 'install' | // 浏览器安装 'pdf' | // PDF 生成 'vision' | // 基于坐标的交互
;
// 输出文件的目录 outputDir?: string;
// 网络配置
network?: {
// 允许浏览器请求的源列表。默认允许所有源。同时匹配 allowedOrigins 和 blockedOrigins 的源将被阻止。
allowedOrigins?: string[];
// 阻止浏览器请求的源列表。同时匹配 `allowedOrigins` 和 `blockedOrigins` 的源将被阻止。
blockedOrigins?: string[];
};
/**
然后在 MCP 客户端配置中,将 url 设置为 HTTP 端点:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
注意: 目前 Docker 实现仅支持无头 Chromium。
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
你可以自己构建 Docker 镜像。
docker build -t mcr.microsoft.com/playwright/mcp .
import { createConnection } from '@playwright/mcp'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => { // ...
// 创建一个具有 SSE 传输的无头 Playwright MCP 服务器 const connection = await createConnection({ browser: { launchOptions: { headless: true } } }); const transport = new SSEServerTransport('/messages', res); await connection.sever.connect(transport);
// ... });