A Playwright browser automation bridge that swaps the standard Chromium binary for CloakBrowser, exposing the same MCP tool set you'd get from Microsoft's @playwright/mcp but with fingerprint resistance baked in. All the upstream Playwright tools for navigation, screenshots, form fills, and DOM queries work unchanged. The package stays intentionally thin: it just points launchOptions.executablePath at CloakBrowser and passes through the tool schemas. Runs over stdio or Streamable HTTP, works from npm or Docker, and includes a compatibility matrix that tracks pinned versions of Playwright MCP, CloakBrowser, and the base Docker image. Reach for this when you need browser automation that looks less like a bot to fingerprinting scripts.
cloakbrowser-mcp is a drop-in Playwright MCP-compatible browser automation server with unchanged upstream tools, CloakBrowser Chromium, and production-ready npm, Docker, and Streamable HTTP packaging. It runs upstream @playwright/mcp as the canonical tool surface and points that runtime at CloakBrowser.
Run npx -y cloakbrowser-mcp@latest, connect Claude Desktop or Codex CLI, ask for web research, daily automation, or testing in plain English, and inspect the real browser result.
Documentation: swimmwatch.github.io/cloakbrowser-mcp · Comparison · Recipes
Use it when you need:
Cross-platform checks cover npm on Linux x64/arm64, macOS arm64/x64, and Windows x64 across Node.js 22 and 24-26. Docker images are built and smoke-tested for linux/amd64 and linux/arm64.
See @playwright/mcp vs cloakbrowser-mcp when deciding whether plain upstream Playwright MCP or CloakBrowser MCP fits a deployment better. The Recipes pages show task-focused setup paths for persistent login profiles, Chrome extensions, reverse proxies, regional QA, client connections, and CI smoke tests.
npx -y cloakbrowser-mcp@latest
Requires Node.js 22.13+ in the 22.x line, or Node.js 24+. Run diagnostics before wiring a client:
npx -y cloakbrowser-mcp@latest doctor
For Streamable HTTP instead of stdio:
npx -y cloakbrowser-mcp@latest --transport streamable-http --http-port 3000
See the generated CLI Reference for all flags.
docker run --rm --init -i \
-v "$PWD/artifacts:/data" \
swimmwatch/cloakbrowser-mcp:latest
For 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
The Docker image writes artifacts to /data and is published for linux/amd64 and linux/arm64. It defaults to CLOAK_PLAYWRIGHT_MCP_NO_SANDBOX=true for compatibility with containerized runtimes where Chromium sandboxing is often unavailable. If your host and container runtime support Chromium sandboxing, set CLOAK_PLAYWRIGHT_MCP_NO_SANDBOX=false; for untrusted pages, keep container network access and mounted host directories tightly scoped. The same tags are also available from ghcr.io/swimmwatch/cloakbrowser-mcp. See Docker for persistent profiles, extension mounts, HTTPS, and smoke-test examples, or use the reverse proxy recipe for a focused Streamable HTTP deployment.
codex mcp add cloakbrowser -- npx -y cloakbrowser-mcp@latest
claude mcp add --transport stdio cloakbrowser -- npx -y cloakbrowser-mcp@latest
{
"servers": {
"cloakbrowser": {
"type": "stdio",
"command": "npx",
"args": ["-y", "cloakbrowser-mcp@latest"]
}
}
}
mcpServers ClientsAdd this server entry to the client's MCP JSON config:
{
"mcpServers": {
"cloakbrowser": {
"command": "npx",
"args": ["-y", "cloakbrowser-mcp@latest"]
}
}
}
{
"mcpServers": {
"cloakbrowser": {
"command": "docker",
"args": [
"run",
"--rm",
"--init",
"-i",
"-v",
"/tmp/cloakbrowser-artifacts:/data",
"swimmwatch/cloakbrowser-mcp:latest"
]
}
}
}
npx -y cloakbrowser-mcp@latest --transport streamable-http --http-port 3000
codex mcp add cloakbrowser --url http://127.0.0.1:3000/mcp
claude mcp add --transport http cloakbrowser http://127.0.0.1:3000/mcp
Paste this into Codex, Claude Code, Copilot, Cursor, Cline, Windsurf, or a similar coding assistant that can edit MCP config:
Install the CloakBrowser MCP server for this workspace. Name it "cloakbrowser".
Prefer stdio with command "npx" and args ["-y", "cloakbrowser-mcp@latest"].
If this client uses VS Code mcp.json, add it under "servers" with type "stdio".
If this client uses Claude/Cursor/Cline/Windsurf/Warp-style config, add it under
"mcpServers" with the same command and args. Do not add secrets.
More examples are in Getting Started, with dedicated recipes for Claude Desktop and Codex CLI.
Use upstream PLAYWRIGHT_MCP_* variables for browser, artifacts, timeouts, network, and tool capability settings. Cloak-specific bridge toggles use CLOAK_PLAYWRIGHT_MCP_*.
The common variable table now lives in Configuration. That page also covers persistent profiles, validated context options, Chrome extensions, Streamable HTTP metadata, and HTTPS/auth options. See GeoIP Proxy Matching for regional proxy behavior, Humanized Input Behavior for interaction realism, and Recipes for task-focused configurations.
| cloakbrowser-mcp | @playwright/mcp | CloakBrowser | Node.js | Platform |
|---|---|---|---|---|
1.8.0 | ^0.0.78 | ^0.4.10 | `^22.13.0 | |
1.7.0 | ^0.0.77 | ^0.4.8 | >=22.12 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 |
1.6.1 | ^0.0.77 | ^0.4.7 | >=22.12 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 |
1.6.0 | ^0.0.77 | ^0.4.7 | >=22.12 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 |
1.5.0 | ^0.0.76 | ^0.4.3 | >=22.12 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 |
1.4.0 | ^0.0.76 | ^0.3.32 | >=22.12 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 |
1.3.0 | ^0.0.75 | ^0.3.31 | >=20 | Docker linux/amd64, Node.js local |
1.2.7 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.2.6 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.2.5 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.2.3 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.2.2 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.2.1 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.2.0 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.1.0 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.0.2 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.0.1 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
1.0.0 | ^0.0.75 | ^0.3.30 | >=20 | Docker linux/amd64, Node.js local |
See Version Compatibility for the maintained compatibility table.
The upstream Playwright MCP tool list is authoritative. This project does not reimplement or re-document upstream browser schemas in source code.
Local tools:
cloakbrowser_binary_info returns CloakBrowser package, platform, cache, and resolved binary data.cloakbrowser_bridge_info returns bridge metadata, upstream package/version, and local tool names.npm install
npm run build
npm test
npm run docker:build
npm run docker:smoke
npm run server:validate
npm run bridge:compare -- cloakbrowser-mcp:dev --report bridge-parity-report.json
Documentation starts at docs/getting-started.md. Contributor material is grouped under docs/contributor-guide.md.
PLAYWRIGHT_MCP_BROWSER_ENGINEdefault: cloakBridge browser engine: cloak or playwright.
PLAYWRIGHT_MCP_HEADLESSdefault: trueRun the browser in headless mode.
PLAYWRIGHT_MCP_OUTPUT_DIRdefault: .playwright-mcpDirectory where upstream Playwright MCP writes artifacts.
PLAYWRIGHT_MCP_OUTPUT_MODEdefault: stdoutReturn snapshots, console logs, and network logs through stdout or files.
CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACKdefault: truePatch upstream console message collection for CloakBrowser compatibility.
CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGSComma-separated or JSON array of extra Chromium launch arguments.
CLOAK_PLAYWRIGHT_MCP_HTTP_HOSTdefault: 127.0.0.1Streamable HTTP bind host.
CLOAK_PLAYWRIGHT_MCP_HTTP_PORTdefault: 3000Streamable HTTP bind port.
CLOAK_PLAYWRIGHT_MCP_HTTP_ENDPOINTdefault: /mcpStreamable HTTP endpoint path.
CLOAK_PLAYWRIGHT_MCP_HTTP_AUTH_TOKENsecretOptional Streamable HTTP Bearer token.
CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_BACKENDdefault: memorySession metadata backend. Only memory is implemented in this release.
CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_IDLE_TTL_MSdefault: 3600000Idle TTL for Streamable HTTP sessions.
CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_MAXdefault: 32Maximum active Streamable HTTP sessions in one process.
therealtimex/browser-use
jae-jae/fetcher-mcp
merajmehrabi/puppeteer-mcp-server
com.thenextgennexus/playwright-mcp-server
saik0s/mcp-browser-use