Playwright MCP Docker 部署:mcr 镜像、浏览器工具和权限配置

这次记录 Playwright MCP 的 Docker 部署方式。目标不是把浏览器自动化讲成概念,而是给 AI Agent 准备一个可控的浏览器工具运行时:镜像先拉下来,MCP JSON 能启动,截图和日志有目录,网络和账号边界能提前写清。

先做镜像预检:

bash 复制代码
docker pull mcr.1ms.run/playwright/mcp

mcr.1ms.run/playwright/mcp 对应上游 MCR 镜像入口。这里先确认 Registry 入口和镜像拉取链路,再继续排 MCP 配置和浏览器权限。

1. 环境目标

本文目标:

  • 用 Docker 运行 Playwright MCP Server。
  • 通过 MCP 客户端配置 mcpServers.playwright
  • 把浏览器工具限制在可控容器生命周期里。
  • 为截图、trace、下载文件预留输出目录。
  • 上线前检查账号、网络、凭据和资源限制。

适用场景:

  • AI Agent 做内部后台巡检。
  • 回归测试里补一层浏览器路径检查。
  • Bug 复现时截图和记录页面状态。
  • 测试环境里跑低风险表单流程。

2. 最小 MCP JSON

先用最小参数验证:

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 或下载文件,可以给容器挂一个输出目录:

bash 复制代码
mkdir -p mcp-output
json 复制代码
{
  "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 和内存,建议在测试机上加资源边界:

json 复制代码
{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--init",
        "--name",
        "playwright-mcp",
        "--cpus",
        "2",
        "--memory",
        "2g",
        "mcr.1ms.run/playwright/mcp"
      ]
    }
  }
}

资源值要按页面复杂度调整。后台页面截图、简单表单和完整 E2E 测试的资源消耗差异很大。

5. 验证顺序

建议按下面顺序排:

bash 复制代码
docker pull mcr.1ms.run/playwright/mcp
docker images | grep playwright
docker ps -a | grep playwright-mcp

如果 MCP 客户端无法调用工具,先看三类问题:

现象 排查方向
客户端找不到 server JSON 路径、字段名、客户端重载
容器启动后退出 Docker args、镜像版本、容器日志
浏览器动作失败 测试账号、目标 URL、页面权限
截图没有产物 输出目录挂载和工具参数
页面能打开但不能操作 元素选择、登录态、权限和弹窗

6. 权限检查表

检查项 建议
账号 只给测试账号或低权限账号
域名 控制访问域名和内网段
输出 截图、trace、下载目录单独管理
凭据 不把 Cookie、Token 写进截图和日志
操作 删除、支付、批量修改等动作默认关闭
审计 记录任务、时间、页面路径和输出文件

总结

Playwright MCP 解决的是 Agent 操作浏览器的工具接口问题,Docker 解决的是运行时边界问题。部署时不要只看镜像是否能拉下来,还要把 MCP JSON、容器生命周期、输出目录、账号权限和网络范围一起检查。

毫秒镜像在这里的作用很具体:当镜像来自 MCR 时,用 mcr.1ms.run/playwright/mcp 先做拉取预检。镜像阶段通过后,后面的重点是浏览器工具边界。

相关推荐
ServBay1 天前
为什么说 MCP 是 2026 年开发者必须掌握的黄金协议?
后端·mcp
Momo__1 天前
MDN MCP Server——Mozilla 把 Web 文档接进 AI Agent,从此 LLM 不再瞎编 API
前端·ai编程·mcp
老梁agent2 天前
MCP 协议实战:用标准化方式让 Agent 调用工业工具
物联网·agent·mcp
武子康3 天前
调查研究-199 MCP Zero-Touch OAuth:为什么它是 MCP 进入企业生产的关键门槛?
人工智能·agent·mcp
user4465117917913 天前
从 XAgent ToolServer 看有状态 Sandbox Tool 的架构设计
mcp
唐老板3 天前
MCP协议实战:从零写个Agent工具
ai编程·mcp
老实人阿三4 天前
用 VS Code 和 Suno MCP 轻松生成背景音乐
mcp
花椒技术4 天前
Agent 不只会聊天:我们如何用 CLI 整理业务能力入口
agent·ai编程·mcp
乘云数字DATABUFF5 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Patrick_Wilson5 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js