Playwright 浏览器自动化 MCP
通过结构化页面快照让 MCP 客户端执行浏览器自动化。
- Star 数
- ★ 38k
- 最近更新
- 1 天前
- License
- Apache-2.0
- 主语言
- TypeScript
- FA 评分
- 60/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 开发者让支持 MCP 的编码客户端打开本地或线上页面,并依据无障碍快照定位和操作控件。
- 不适合
- 需要完全依赖截图和视觉模型操作网页的团队
- 需要将 MCP 作为安全边界的部署
- 源码审查
- 60/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
Playwright MCP 是一个基于 Playwright 的 Model Context Protocol(MCP)服务器,让 LLM 通过结构化的无障碍快照与网页交互。默认安装方式是用 npx 启动 @playwright/mcp,客户端通过 MCP 调用浏览器工具。核心工具涵盖页面导航、快照、点击、表单填写、标签页管理,以及查看控制台和网络请求。浏览器可使用持久化配置、隔离会话或浏览器扩展连接现有会话;也可通过 HTTP/SSE 运行独立服务器,或在代码中创建连接。运行需要 Node.js 18 或更新版本,README 列出多种 MCP 客户端;服务器本身不构成安全边界。
客户端启动服务器后,Playwright MCP 使用 Playwright 操作浏览器,并将页面的无障碍结构作为快照返回,供后续工具调用定位目标。browser_navigate 打开 URL,browser_snapshot 获取页面快照,browser_click、browser_fill_form 和 browser_type 执行交互;browser_tabs 管理标签页。还可读取控制台消息和网络请求,并通过可选能力启用网络路由、存储管理或 DevTools 工具。操作结果以文本快照、消息或按配置保存的文件返回;截图工具也可返回页面图像。
- 开发者让支持 MCP 的编码客户端打开本地或线上页面,并依据无障碍快照定位和操作控件。
- 测试工程师在隔离浏览器会话中执行表单流程,并使用存储状态文件提供初始 cookies 与本地存储。
- 排查人员查看浏览器控制台消息或列出页面发出的网络请求,以调查交互问题。
- 自动化团队通过可选网络能力模拟 API 响应、切换离线状态并检查活动路由。
- 需要复用已登录浏览器会话的用户,通过 Playwright 扩展连接现有 Edge 或 Chrome 实例。
如何安装或部署这个 Agent?
需要 Node.js 18 或更新版本,以及一个 MCP 客户端。标准配置通过 npx 启动服务器,无需在配置中填写凭据:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}Codex CLI 也可用以下命令添加:
codex mcp add playwright npx "@playwright/mcp@latest"首次启动时,客户端运行该配置并连接 Playwright MCP;浏览器会按默认配置启动。
如何使用这个 Agent?
在 MCP 客户端中启动名为 playwright 的服务器。先用 browser_navigate 打开目标 URL,再用 browser_snapshot 读取页面结构;从快照中选取目标引用后,调用 browser_click、browser_fill_form 或 browser_type 执行操作。需要独立 HTTP 服务时,可运行:
npx @playwright/mcp@latest --port 8931客户端可配置连接其 MCP 端点:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}需要临时隔离会话时,可在启动参数中添加 --isolated;需要启用额外工具能力时,可使用 --caps 配置相应能力。
这个 Agent 有哪些优点和局限?
- 使用 Playwright 无障碍树生成结构化快照,核心交互不依赖视觉模型。
- 提供可直接调用的导航、表单、标签页、控制台和网络请求工具。
- 支持持久化浏览器配置、隔离会话、存储状态文件及连接现有浏览器扩展。
- 除 MCP 客户端启动外,还记录了 HTTP/SSE 独立部署和程序化连接方式。
- 需要 Node.js 18 或更新版本及兼容的 MCP 客户端。
- README 明确指出服务器不是安全边界;文件和网络访问限制也被说明为便利性防护。
- 持久化配置同一时间只能由一个浏览器实例使用;并行客户端需要隔离模式或不同用户数据目录。
- Docker 实现目前只支持无头 Chromium。
这个 Agent 与同类方案有什么区别?
README 将 MCP 方案与 Playwright CLI + SKILLS 对比:CLI 更节省 token,适合高吞吐编码工作流;MCP 更适合需要持久浏览器状态、页面结构检查和迭代推理的自动化场景。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Playwright 浏览器自动化 MCP 当前 | 60 · 存在缺口 | MCP 服务器免费 | ★ 38k | 1 天前 | TypeScript | Codex · Claude Code |
| CamoFox Browser Server | 72 · 存在缺口 | 自托管服务免费 | ★ 425 | 28 天前 | JavaScript | Claude Code |
| Weaver 智能体平台 | 45 · 缺口较多 | 自托管服务免费 + 模型费 | ★ 184 | 6 个月前 | Python | OpenAI API · Claude API |
| Agent Browser:面向 AI 代理的浏览器自动化 CLI | 54 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 44k | 1 天前 | Rust | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
默认限制文件访问于工作区、阻止 file://、监听 localhost,并提供可选隔离、权限和来源限制,体现一定最小权限;但可显式开放文件、绑定所有接口、共享浏览器上下文,且来源限制明确不覆盖重定向。文档说明持久配置文件、存储状态、秘密文件及现有浏览器登录态,但没有说明秘密数据的存储保护或清理策略。浏览自动化可执行有副作用的操作,材料未显示逐次确认或回滚机制。依赖版本固定到 Playwright alpha,但没有依赖安全审查证据。出处由仓库、包元数据和许可证支持。
README 描述与包元数据、能力测试所示的 MCP 浏览器工具总体一致,并明确 Node.js 要求和超时选项。依赖中 Playwright 使用 alpha 版本,且运行需要 Node、浏览器及客户端环境;未给出离线或依赖故障恢复说明。所提供材料没有错误分类或面向用户的失败诊断证据,因此该项为零。CI 工作流展示了多平台和 Docker 测试配置,但本评估不据此声称测试已执行。
README 区分 MCP 与 CLI 的适用场景,并列出多种 MCP 客户端;配置支持浏览器、设备、快照、能力和传输相关选项。文件访问、来源策略及能力开关给出了明确边界,但存在显式放宽访问或 sandbox 的选项。触发范围聚焦于通过 MCP 对网页进行浏览器自动化;尚未充分说明不适用任务或不同风险等级下的选择建议。
README 按安装、配置、用户档案和初始状态组织内容,并提供许多客户端配置示例;配置表和用户档案段落也说明了部分限制。部分示例使用 @latest,降低了版本可复现性;提供的材料没有独立变更日志或兼容性政策。Apache-2.0 的许可证文件完整。仓库与包元数据明确指向 Microsoft,安全报告渠道和 CI/发布工作流说明了维护与更新责任。
结构化无障碍快照和 MCP 工具提供无需视觉模型的浏览器交互路径,能力测试示例与工具列表支持其具体效用。文档也指出 CLI 在编码代理场景中可能更省上下文,揭示了本方案的成本权衡。输出包含快照、代码和可选图像等形式,但材料未证明它们在不同任务中的质量或实际成本,因此不给满分。
主要功能、安装要求、配置选项和安全边界可在 README 中追溯;包元数据、许可证、测试定义与 CI 配置为若干声明提供交叉佐证。README 中的轻量、确定性和效率等描述仍属于项目声明,静态材料不能确认运行效果;CI 配置也不证明这些任务已成功执行。此结论区分了文档事实与未验证的性能推断。
- 若连接已有浏览器或使用持久配置文件,浏览器会保留登录态和站点数据;请审慎选择用户数据目录,并考虑使用隔离模式。
- 来源允许列表不是安全边界且不覆盖重定向;绑定 0.0.0.0、开放文件访问或共享浏览器上下文会扩大访问范围。
- 默认安装示例使用 @latest,而依赖包含 Playwright alpha 版本;需要稳定复现时应核对并固定具体发布版本。
常见问题
运行是否需要 API 密钥或付费模型?
它如何确定要操作的页面元素?
隔离会话会保留登录状态吗?
--storage-state 加载初始状态。持久化配置则会保存浏览器数据。