Playwright MCP Docker 部署:mcr 镜像、浏览器工具和权限配置
这次记录 Playwright MCP 的 Docker 部署方式。目标不是把浏览器自动化讲成概念,而是给 AI Agent 准备一个可控的浏览器工具运行时:镜像先拉下来,MCP JSON 能启动,截图和日志有目录,网络和账号边界能提前写清。
先做镜像预检:
dockerpull mcr.1ms.run/playwright/mcpmcr.1ms.run/playwright/mcp对应上游 MCR 镜像入口。这里先确认 Registry 入口和镜像拉取链路,再继续排 MCP 配置和浏览器权限。
1. 环境目标
本文目标:
- 用 Docker 运行 Playwright MCP Server。
- 通过 MCP 客户端配置
mcpServers.playwright。 - 把浏览器工具限制在可控容器生命周期里。
- 为截图、trace、下载文件预留输出目录。
- 上线前检查账号、网络、凭据和资源限制。
适用场景:
- AI Agent 做内部后台巡检。
- 回归测试里补一层浏览器路径检查。
- Bug 复现时截图和记录页面状态。
- 测试环境里跑低风险表单流程。
2. 最小 MCP JSON
先用最小参数验证:
{"mcpServers":{"playwright":{"command":"docker","args":["run","-i","--rm","--init","--name","playwright-mcp","mcr.1ms.run/playwright/mcp"]}}}参数说明:
| 参数 | 作用 |
|---|---|
run | 启动容器 |
-i | MCP stdio 通信需要保持输入流 |
--rm | 退出后清理容器 |
--init | 处理容器内子进程 |
--name | 便于排查容器状态 |
mcr.1ms.run/playwright/mcp | Playwright MCP 镜像入口 |
3. 增加输出目录
如果需要保存截图、trace 或下载文件,可以给容器挂一个输出目录:
mkdir-pmcp-output{"mcpServers":{"playwright":{"command":"docker","args":["run","-i","--rm","--init","--name","playwright-mcp","-v","./mcp-output:/tmp/mcp-output","mcr.1ms.run/playwright/mcp"]}}}输出目录要按项目隔离,不要把浏览器下载目录直接挂到用户主目录。
4. 增加资源边界
浏览器容器可能吃 CPU 和内存,建议在测试机上加资源边界:
{"mcpServers":{"playwright":{"command":"docker","args":["run","-i","--rm","--init","--name","playwright-mcp","--cpus","2","--memory","2g","mcr.1ms.run/playwright/mcp"]}}}资源值要按页面复杂度调整。后台页面截图、简单表单和完整 E2E 测试的资源消耗差异很大。
5. 验证顺序
建议按下面顺序排:
dockerpull mcr.1ms.run/playwright/mcpdockerimages|grepplaywrightdockerps-a|grepplaywright-mcp如果 MCP 客户端无法调用工具,先看三类问题:
| 现象 | 排查方向 |
|---|---|
| 客户端找不到 server | JSON 路径、字段名、客户端重载 |
| 容器启动后退出 | Docker args、镜像版本、容器日志 |
| 浏览器动作失败 | 测试账号、目标 URL、页面权限 |
| 截图没有产物 | 输出目录挂载和工具参数 |
| 页面能打开但不能操作 | 元素选择、登录态、权限和弹窗 |
6. 权限检查表
| 检查项 | 建议 |
|---|---|
| 账号 | 只给测试账号或低权限账号 |
| 域名 | 控制访问域名和内网段 |
| 输出 | 截图、trace、下载目录单独管理 |
| 凭据 | 不把 Cookie、Token 写进截图和日志 |
| 操作 | 删除、支付、批量修改等动作默认关闭 |
| 审计 | 记录任务、时间、页面路径和输出文件 |
总结
Playwright MCP 解决的是 Agent 操作浏览器的工具接口问题,Docker 解决的是运行时边界问题。部署时不要只看镜像是否能拉下来,还要把 MCP JSON、容器生命周期、输出目录、账号权限和网络范围一起检查。
毫秒镜像在这里的作用很具体:当镜像来自 MCR 时,用mcr.1ms.run/playwright/mcp先做拉取预检。镜像阶段通过后,后面的重点是浏览器工具边界。
