跳转至

Docker

所发布的图片展示了可重复使用 MCP 的推荐运行时。

运行

docker run --rm --init -i \
  -v "$PWD/artifacts:/data" \
  swimmwatch/cloakbrowser-mcp:latest

artefacts 会被写入容器中的 /data。挂载该路径以保存截图、快照、下载文件和网络输出。

--init 之所以被推荐,是因为浏览器自动化可能会创建短暂存在的子进程。Docker 的 init 进程会干净利落地回收这些子进程。

相同的发布标签已发布到 Docker Hub,标签为 swimmwatch/cloakbrowser-mcp,并在 GHCR 上发布为 ghcr.io/swimmwatch/cloakbrowser-mcp

持久化配置文件

Docker 默认不会启用持久化浏览器配置文件。当你希望 cookie、本地存储、缓存或扩展状态在 容器重启后保留时,请使用现有的 /data 卷作为持久化根目录:

docker run --rm --init -i \
  -e PLAYWRIGHT_MCP_USER_DATA_DIR=/data/profiles/default \
  -v "$PWD/artifacts:/data" \
  swimmwatch/cloakbrowser-mcp:latest

Docker 内部的环境变量必须使用容器路径,例如 /data/profiles/default, 而不是主机路径。桥接器会在配置文件目录缺失时创建它,验证其可写,将容器路径写入 生成的 Playwright MCP 配置,并拒绝同一服务器进程内重复的活动配置文件目录。

Chrome 扩展

Chrome 扩展需要持久化配置文件,并且必须单独挂载。请在环境变量中使用容器路径, 而不是主机路径。扩展挂载可以是只读的:

docker run --rm --init -i \
  -e PLAYWRIGHT_MCP_USER_DATA_DIR=/data/profiles/default \
  -e CLOAK_PLAYWRIGHT_MCP_EXTENSION_PATHS=/extensions/my-extension \
  -v "$PWD/artifacts:/data" \
  -v "$PWD/extensions/my-extension:/extensions/my-extension:ro" \
  swimmwatch/cloakbrowser-mcp:latest

当路径包含逗号或传入多个扩展目录时,请为 CLOAK_PLAYWRIGHT_MCP_EXTENSION_PATHS 使用 JSON 数组。更改扩展文件或扩展 路径后,请重启容器。

可流式传输的 HTTP

若要在本地使用 Streamable HTTP,请将容器端口发布到回环地址:

docker run --rm --init -p 127.0.0.1:3000:3000 \
  -v "$PWD/artifacts:/data" \
  swimmwatch/cloakbrowser-mcp:latest \
  --transport streamable-http --http-host 0.0.0.0 --http-port 3000

curl http://127.0.0.1:3000/healthz
curl http://127.0.0.1:3000/readyz

若要从容器直接访问 HTTPS,请挂载您的证书文件并选择 HTTPS:

docker run --rm --init -p 127.0.0.1:3000:3000 \
  -v "$PWD/artifacts:/data" \
  -v "$PWD/certs:/certs:ro" \
  swimmwatch/cloakbrowser-mcp:latest \
  --transport streamable-http --http-host 0.0.0.0 --http-port 3000 \
  --http-protocol https --https-cert /certs/cert.pem --https-key /certs/key.pem

主机端的 127.0.0.1:3000 绑定会将端点保留在本地。 若在非回环接口上发布 Streamable HTTP,请使用 HTTPS 并启用身份验证,或将服务器部署在具有身份验证和网络控制功能的可信 TLS 终止反向代理之后。 Streamable HTTP 公开了固定的 GET /healthzGET /readyz 探测点,它们位于同一主机和端口上。 如果配置了 --http-auth-tokenCLOAK_PLAYWRIGHT_MCP_HTTP_AUTH_TOKEN 已配置,则这些探针需要与 MCP 请求相同的 Authorization: Bearer ... 标头。 有关所有 HTTP 传输标志和环境变量的详细信息,请参阅生成的 CLI 参考

GeoIP 代理匹配

Docker 使用与 npm 相同的代理和 GeoIP 环境变量。当区域 QA 需要 CloakBrowser 的时区、语言和 区域设置指纹以遵循配置的代理位置时,请启用 GeoIP 代理匹配:

docker run --rm --init -i \
  -e PLAYWRIGHT_MCP_PROXY_SERVER="http://user:pass@proxy.example:8080" \
  -e CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH=true \
  -v "$PWD/artifacts:/data" \
  swimmwatch/cloakbrowser-mcp:latest

对于需要身份验证的代理,请将凭据嵌入代理 URL 中,并对用户名或密码中的特殊字符进行百分比编码。

当容器运行 Streamable HTTP 时,客户端还可以通过 initialize 元数据,为每个 MCP 会话选择不同的 代理。请参阅 GeoIP 代理匹配,了解运行时代理元数据、 多区域用例及限制。

默认值

Variable Default
PLAYWRIGHT_MCP_BROWSER_ENGINE cloak
PLAYWRIGHT_MCP_HEADLESS true
PLAYWRIGHT_MCP_OUTPUT_DIR /data
PLAYWRIGHT_MCP_OUTPUT_MODE stdout
PLAYWRIGHT_MCP_USER_DATA_DIR unset
CLOAK_PLAYWRIGHT_MCP_TRANSPORT stdio
CLOAK_PLAYWRIGHT_MCP_HTTP_PROTOCOL http
CLOAK_PLAYWRIGHT_MCP_HTTP_HOST 127.0.0.1
CLOAK_PLAYWRIGHT_MCP_HTTP_PORT 3000
CLOAK_PLAYWRIGHT_MCP_HTTP_ENDPOINT /mcp
CLOAK_PLAYWRIGHT_MCP_HTTP_AUTH_TOKEN unset
CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_BACKEND memory
CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_IDLE_TTL_MS 3600000
CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_MAX 32
CLOAK_PLAYWRIGHT_MCP_LOG_LEVEL info
CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH false
CLOAK_PLAYWRIGHT_MCP_CONTEXT_OPTIONS unset
CLOAK_PLAYWRIGHT_MCP_EXTENSION_PATHS unset
CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK true
CLOAK_PLAYWRIGHT_MCP_STEALTH_ARGS true
CLOAK_PLAYWRIGHT_MCP_NO_SANDBOX true

MCP 客户端配置

{
  "mcpServers": {
    "cloakbrowser": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "--init",
        "-i",
        "-v",
        "/tmp/cloakbrowser-artifacts:/data",
        "swimmwatch/cloakbrowser-mcp:latest"
      ]
    }
  }
}

本地构建

npm run docker:build
npm run docker:smoke

该 Dockerfile 使用已锁定的官方 Playwright MCP 镜像作为运行时基础镜像,在构建过程中应用可用的 Debian 安全更新,从运行时镜像中移除未使用的全局 npm 有效载荷,并在 /opt/cloakbrowser-mcp下安装桥接服务。

该发布工作流会发布 SBOM 和溯源证明,包含源代码、修订版、版本、许可证、基础镜像名称以及基础镜像摘要的 OCI 标签,并在发布前使用 Trivy 对构建好的镜像进行扫描。

更多实用路径

要在 upstream Playwright MCP 和本包之间选择,请查看对比。快速任务请使用操作示例:持久配置文件、扩展、reverse proxy、区域 QA、Claude Desktop、Codex CLI 和 CI 冒烟测试。