
CloakBrowser MCP
β 21from swimmwatch
CloakBrowser MCP server for AI agents: Playwright-powered browsing, clean tool forwarding, Docker support, and multi-session HTTP transport.
cloakbrowser-mcp
<p align="center"> <img src="docs/assets/brand/logo-wordmark.svg" alt="CloakBrowser MCP" width="640" /> </p>cloakbrowser-mcp is a Model Context Protocol browser automation server that runs upstream @playwright/mcp with the CloakBrowser Chromium binary. It gives MCP clients Playwright-compatible browser tools while keeping the upstream tool contracts unchanged.
Documentation: swimmwatch.github.io/cloakbrowser-mcp
Use it when you need:
- Playwright MCP browser automation backed by CloakBrowser;
- unchanged upstream browser tools plus two local introspection tools;
- npm or Docker installation over stdio or Streamable HTTP;
- persistent browser profiles, validated context options, and Chrome extension loading;
- GeoIP-aware proxy matching for regional QA;
- humanized mouse, keyboard, and scroll behavior for interaction-sensitive flows.
Cross-platform checks cover npm on Linux x64/arm64, macOS arm64/x64, and Windows x64 across Node.js 22-26. Docker images are built and smoke-tested for linux/amd64 and linux/arm64.
Add To MCP Clients
Codex CLI
codex mcp add cloakbrowser -- npx -y cloakbrowser-mcp@latestClaude Code
claude mcp add --transport stdio cloakbrowser -- npx -y cloakbrowser-mcp@latestGitHub Copilot In VS Code
{
"servers": {
"cloakbrowser": {
"type": "stdio",
"command": "npx",
"args": ["-y", "cloakbrowser-mcp@latest"]
}
}
}Claude Desktop, Cursor, Cline, Windsurf, Warp, And Other mcpServers Clients
Add this server entry to the client's MCP JSON config:
{
"mcpServers": {
"cloakbrowser": {
"command": "npx",
"args": ["-y", "cloakbrowser-mcp@latest"]
}
}
}Docker-backed stdio
{
"mcpServers": {
"cloakbrowser": {
"command": "docker",
"args": [
"run",
"--rm",
"--init",
"-i",
"-v",
"/tmp/cloakbrowser-artifacts:/data",
"swimmwatch/cloakbrowser-mcp:latest"
]
}
}
}Already-running Streamable HTTP server
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/mcpPrompt For A Code Assistant
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.
Version Compatibility
<!-- compatibility-table:start -->| cloakbrowser-mcp | @playwright/mcp | CloakBrowser | Node.js | Platform |
|---|---|---|---|---|
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.
Tools
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_inforeturns CloakBrowser package, platform, cache, and resolved binary data.cloakbrowser_bridge_inforeturns bridge metadata, upstream package/version, and local tool names.
Development
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.jsonDocumentation starts at docs/getting-started.md. Contributor material is grouped under docs/contributor-guide.md.
npx -y cloakbrowser-mcp@latestInstall With npm
npx -y cloakbrowser-mcp@latestRequires Node.js 22.12 or newer. Run diagnostics before wiring a client:
npx -y cloakbrowser-mcp@latest doctorFor Streamable HTTP instead of stdio:
npx -y cloakbrowser-mcp@latest --transport streamable-http --http-port 3000See the generated CLI Reference for all flags.
Install With Docker
docker run --rm --init -i \
-v "$PWD/artifacts:/data" \
swimmwatch/cloakbrowser-mcp:latestFor 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 3000The Docker image writes artifacts to /data and is published for linux/amd64 and linux/arm64. The same tags are also available from ghcr.io/swimmwatch/cloakbrowser-mcp. See Docker for persistent profiles, extension mounts, HTTPS, and smoke-test examples.
Configuration
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 and Humanized Input Behavior for interaction realism.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.