Playwright MCP 是一个模型上下文协议(MCP)服务器,使用 Playwright 提供浏览器自动化能力。它让 LLM 通过结构化的无障碍快照与网页交互,绕过对截图或视觉调优模型的依赖。
用途与定位:该项目在 Playwright 之上提供 MCP 接口。资料指出,若使用编码智能体(coding agent),可能更适合使用 CLI+SKILLS 方案:CLI 调用更节省 token,避免将庞大的工具 schema 和冗长的无障碍树加载进模型上下文,更适合需要在大代码库、测试与推理之间平衡上下文窗口的高吞吐编码智能体。而 MCP 仍适用于需要持久状态、丰富内省和对页面结构进行迭代推理的专用智能体循环,例如探索式自动化、自愈测试或长时间运行的自主工作流,这类场景中维持连续浏览器上下文的价值超过 token 成本。
主要能力:资料描述其特点为快速轻量,使用 Playwright 的无障碍树而非像素输入;对 LLM 友好,无需视觉模型,纯结构化数据操作;工具应用确定性强,避免截图方案的常见歧义。文档列出的工具包括 browser_click(在网页上执行点击,支持双击、指定鼠标按键和修饰键)、browser_close(关闭页面)、browser_console_messages(获取控制台消息,可按级别过滤、返回全量会话消息或保存到文件)、browser_drag(在两个元素之间执行拖放)、browser_drop(将文件或 MIME 类型数据拖放到元素上)等。
环境要求:Node.js 18 或更新版本;VS Code、Cursor、Windsurf、Claude Desktop、Goose、Grok、Junie 或其他任意 MCP 客户端。
使用方式:首先在客户端中安装 Playwright MCP 服务器。多数工具适用标准配置(命令为 npx @playwright/mcp@latest)。资料给出多种客户端的接入方式,包括 Amp、Antigravity、Claude Code、Cline、Codex、Copilot、Cursor、Factory、Goose、Grok、Junie、Kiro、opencode、Qodo Gen、VS Code(含 VS Code CLI 安装)、Warp、Windsurf 等,分别通过图形设置、配置文件或命令行完成添加。
浏览器状态与配置:可像普通浏览器一样使用持久化配置文件(默认),所有登录信息会保存在持久化配置文件中,也可在会话之间删除以清除离线状态;持久化配置文件位于特定位置,可用 --user-data-dir 参数覆盖。其中 {workspace-hash} 由 MCP 客户端的工作区根目录派生,因此不同项目会自动使用不同的配置文件。一个持久化配置文件同一时间只能被一个浏览器实例使用,共享同一工作区的并发 MCP 客户端会冲突;如需并行运行多个客户端,可用 --isolated 启动,或指向不同的 --user-data-dir。隔离模式下每次会话使用隔离配置文件,浏览器关闭后会话存储状态丢失。也可通过配置的 contextOptions 或 --storage-state 参数提供初始存储状态。浏览器扩展方面,Playwright MCP Chrome 扩展可连接已有浏览器标签页,复用已登录会话和浏览器状态。
初始状态提供方式:存储状态可用 --user-data-dir 从用户数据目录启动(在会话间持久化所有浏览器数据),或用 --storage-state 从文件加载 cookie 和本地存储到隔离浏览器上下文。页面状态可用 --init-page 指向一个会在 Playwright 页面对象上求值的 TypeScript 文件以运行任意初始化代码,或用 --init-script 指向一个 JavaScript 文件作为初始化脚本,在每个页面任何脚本之前求值,用于覆盖浏览器 API 或设置环境。
配置文件与独立部署:服务器可通过 JSON 配置文件配置,用 --config 命令行选项指定。在没有显示器的系统上或以 IDE 工作进程运行有头浏览器时,可在带 DISPLAY 的环境中运行 MCP 服务器并传入 --port 启用 HTTP 传输,然后在 MCP 客户端配置中将 url 设为该 HTTP 端点。资料还说明 Docker 实现目前仅支持无头 Chromium,可将容器作为长期服务运行,服务器监听宿主端口 8931,任何 MCP 客户端均可访问,也可自行构建 Docker 镜像。
限制与安全:Playwright MCP 不是安全边界,资料建议参考 MCP 安全最佳实践来保护部署。