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 先做拉取预检。镜像阶段通过后,后面的重点是浏览器工具边界。

相关推荐
dk_tjy1 分钟前
迪康加密系统技术解析:驱动层透明加密的机制、策略与工程权衡
运维·安全·网络安全·终端安全管理·数据防泄漏
小金的研发日志23 分钟前
ASP.NET 手搓 MCP 服务(四):刷新令牌的轮换与重放检测
mcp
Initialize-le25 分钟前
服务器时间不准?NTP 时钟同步五步排查
运维·服务器
AR-26710-26 分钟前
Linux Day24——TCP/IP分层与封装
linux·运维
m0_6174939428 分钟前
昇腾 NPU Docker 部署实战:解决 stub library 报错并实现模型正常加载
运维·docker·容器
小羊没烦恼!38 分钟前
.NET 11 Runtime Async 详解
java·运维·开发语言·javascript·python
xixiaoyunya1 小时前
Docker 常用命令与实战:从入门到部署一个简单应用
docker·容器·eureka
Dumbness1 小时前
写 MCP 服务器踩的坑:stdout 是协议通道,一行不带换行的日志就能让客户端超时
node.js·mcp
xianyuCcCcCCCcc2 小时前
Ceph 分布式存储:集群配置与存储池管理
运维·分布式·ceph
吴声子夜歌2 小时前
Docker入门与实战——Docker Swarm模式(跨主机容器集群管理)
docker