Featured

Deploy OpenClaw in 60 seconds β€” 20% off logoDeploy OpenClaw in 60 seconds β€” 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger β†’
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger β†’
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free β†’
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now β†’
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data β€” no proxies, no parsers, no maintenance.

Start building free β†’
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it β€” secured from day one.

Get it set up for you β†’
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free β†’
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here β†’
cloakbrowser-mcp logo

cloakbrowser-mcp

swimmwatch/cloakbrowser-mcp
14 starsv1.2.1STDIORegistry activeMITUpdated 2026-06-20Community

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

claude mcp add cloakbrowser -- npx -y cloakbrowser-mcp

Summary

swimmwatch/cloakbrowser-mcp MCP server](https://glama.ai/mcp/servers/swimmwatch/cloakbrowser-mcp/badges/score.svg)](https://glama.ai/mcp/servers/swimmwatch/cloakbrowser-mcp) πŸ“‡ 🏠 🍎 πŸͺŸ 🐧 - Playwright MCP-compatible browser automation using CloakBrowser...

Connect from your MCP client

One-click install

Add this server to your editor with a single click. Fill in any required credentials afterward.

Claude Code

Run this once and Claude Code registers the server for you:

claude mcp add cloakbrowser -- npx -y cloakbrowser-mcp

Claude Desktop

Add this to claude_desktop_config.json under Settings β†’ Developer β†’ Edit Config:

{
  "mcpServers": {
    "cloakbrowser": {
      "command": "npx",
      "args": [
        "-y",
        "cloakbrowser-mcp"
      ],
      "env": {
        "PLAYWRIGHT_MCP_BROWSER_ENGINE": "<PLAYWRIGHT_MCP_BROWSER_ENGINE>",
        "PLAYWRIGHT_MCP_HEADLESS": "<PLAYWRIGHT_MCP_HEADLESS>",
        "PLAYWRIGHT_MCP_OUTPUT_DIR": "<PLAYWRIGHT_MCP_OUTPUT_DIR>",
        "PLAYWRIGHT_MCP_OUTPUT_MODE": "<PLAYWRIGHT_MCP_OUTPUT_MODE>",
        "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK": "<CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK>",
        "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS": "<CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS>"
      }
    }
  }
}

Cursor

Add this to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "cloakbrowser": {
      "command": "npx",
      "args": [
        "-y",
        "cloakbrowser-mcp"
      ],
      "env": {
        "PLAYWRIGHT_MCP_BROWSER_ENGINE": "<PLAYWRIGHT_MCP_BROWSER_ENGINE>",
        "PLAYWRIGHT_MCP_HEADLESS": "<PLAYWRIGHT_MCP_HEADLESS>",
        "PLAYWRIGHT_MCP_OUTPUT_DIR": "<PLAYWRIGHT_MCP_OUTPUT_DIR>",
        "PLAYWRIGHT_MCP_OUTPUT_MODE": "<PLAYWRIGHT_MCP_OUTPUT_MODE>",
        "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK": "<CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK>",
        "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS": "<CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS>"
      }
    }
  }
}

Cline and other MCP clients

Most MCP clients accept the standard mcpServers JSON block:

{
  "mcpServers": {
    "cloakbrowser": {
      "command": "npx",
      "args": [
        "-y",
        "cloakbrowser-mcp"
      ],
      "env": {
        "PLAYWRIGHT_MCP_BROWSER_ENGINE": "<PLAYWRIGHT_MCP_BROWSER_ENGINE>",
        "PLAYWRIGHT_MCP_HEADLESS": "<PLAYWRIGHT_MCP_HEADLESS>",
        "PLAYWRIGHT_MCP_OUTPUT_DIR": "<PLAYWRIGHT_MCP_OUTPUT_DIR>",
        "PLAYWRIGHT_MCP_OUTPUT_MODE": "<PLAYWRIGHT_MCP_OUTPUT_MODE>",
        "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK": "<CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK>",
        "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS": "<CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS>"
      }
    }
  }
}

Codex CLI

Register the server with OpenAI's Codex CLI β€” run this once, or add the equivalent block to ~/.codex/config.toml:

codex mcp add cloakbrowser --env PLAYWRIGHT_MCP_BROWSER_ENGINE=<PLAYWRIGHT_MCP_BROWSER_ENGINE> --env PLAYWRIGHT_MCP_HEADLESS=<PLAYWRIGHT_MCP_HEADLESS> --env PLAYWRIGHT_MCP_OUTPUT_DIR=<PLAYWRIGHT_MCP_OUTPUT_DIR> --env PLAYWRIGHT_MCP_OUTPUT_MODE=<PLAYWRIGHT_MCP_OUTPUT_MODE> --env CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK=<CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK> --env CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS=<CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS> -- npx -y cloakbrowser-mcp

# or add to ~/.codex/config.toml:
[mcp_servers.cloakbrowser]
command = "npx"
args = ["-y", "cloakbrowser-mcp"]
[mcp_servers.cloakbrowser.env]
PLAYWRIGHT_MCP_BROWSER_ENGINE = "<PLAYWRIGHT_MCP_BROWSER_ENGINE>"
PLAYWRIGHT_MCP_HEADLESS = "<PLAYWRIGHT_MCP_HEADLESS>"
PLAYWRIGHT_MCP_OUTPUT_DIR = "<PLAYWRIGHT_MCP_OUTPUT_DIR>"
PLAYWRIGHT_MCP_OUTPUT_MODE = "<PLAYWRIGHT_MCP_OUTPUT_MODE>"
CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK = "<CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK>"
CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS = "<CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS>"

OpenClaw

OpenClaw reads MCP servers from the mcp.servers section of ~/.openclaw/openclaw.json (managed via `openclaw mcp add` or the mcporter skill):

{
  "mcp": {
    "servers": {
      "cloakbrowser": {
        "command": "npx",
        "args": [
          "-y",
          "cloakbrowser-mcp"
        ],
        "env": {
          "PLAYWRIGHT_MCP_BROWSER_ENGINE": "<PLAYWRIGHT_MCP_BROWSER_ENGINE>",
          "PLAYWRIGHT_MCP_HEADLESS": "<PLAYWRIGHT_MCP_HEADLESS>",
          "PLAYWRIGHT_MCP_OUTPUT_DIR": "<PLAYWRIGHT_MCP_OUTPUT_DIR>",
          "PLAYWRIGHT_MCP_OUTPUT_MODE": "<PLAYWRIGHT_MCP_OUTPUT_MODE>",
          "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK": "<CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK>",
          "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS": "<CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS>"
        }
      }
    }
  }
}

Replace the <PLACEHOLDER> values with your own credentials β€” see the configuration table below.

Configuration

cloakbrowser-mcp reads the following environment variables:

VariableRequired
PLAYWRIGHT_MCP_BROWSER_ENGINEOptional
PLAYWRIGHT_MCP_HEADLESSOptional
PLAYWRIGHT_MCP_OUTPUT_DIROptional
PLAYWRIGHT_MCP_OUTPUT_MODEOptional
CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACKOptional
CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGSOptional

README.md

cloakbrowser-mcp

<p align="center"> <img src="docs/assets/brand/logo-wordmark.svg" alt="CloakBrowser MCP" width="640" /> </p>

![CI](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/ci.yml) ![codecov](https://codecov.io/gh/swimmwatch/cloakbrowser-mcp) ![Actionlint](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/actionlint.yml) ![CodeQL](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/codeql.yml) ![Dependency Review](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/dependency-review.yml) ![OpenSSF Scorecard](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/scorecard.yml) ![Zizmor](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/zizmor.yml) ![Release](https://github.com/swimmwatch/cloakbrowser-mcp/actions/workflows/release.yml) ![GitHub Release](https://github.com/swimmwatch/cloakbrowser-mcp/releases) ![MCP Registry](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.swimmwatch%2Fcloakbrowser-mcp) ![cloakbrowser-mcp MCP server](https://glama.ai/mcp/servers/swimmwatch/cloakbrowser-mcp) ![Awesome MCP Servers](https://github.com/punkpeye/awesome-mcp-servers) ![npm](https://www.npmjs.com/package/cloakbrowser-mcp) ![npm downloads](https://www.npmjs.com/package/cloakbrowser-mcp) ![Docker Hub pulls](https://hub.docker.com/r/swimmwatch/cloakbrowser-mcp) ![Docker image](https://hub.docker.com/r/swimmwatch/cloakbrowser-mcp/tags) ![Node.js 22.13+ or 24+](https://nodejs.org/) ![TypeScript strict](tsconfig.json) ![Cross-platform](docs/version-compatibility.md) ![Available on CodeGuilds](https://codeguilds.dev/packages/cloakbrowser-mcp) ![MCP Server](https://modelcontextprotocol.io/) ![MCP transports](docs/configuration.md) ![Docker](docs/docker.md) ![License: MIT](LICENSE) ![MCP Toplist](https://mcptoplist.com/server/io.github.swimmwatch%2Fcloakbrowser-mcp)

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.

30-second demo

![30-second demo showing CloakBrowser MCP startup, humanized research prompt typing, web automation, and testing workflows](docs/assets/videos/30-second-demo.mp4)

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:

  • 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 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.

Install With npm

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.

Install With Docker

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.

Add To MCP Clients

Codex CLI

codex mcp add cloakbrowser -- npx -y cloakbrowser-mcp@latest

Claude Code

claude mcp add --transport stdio cloakbrowser -- npx -y cloakbrowser-mcp@latest

GitHub 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/mcp

Prompt 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, with dedicated recipes for Claude Desktop and Codex CLI.

Configuration

Use upstream PLAYWRIGHT_MCP_ variables for browser, artifacts, timeouts, network, and tool capability settings. Cloak-specific bridge toggles use CLOAK_PLAYWRIGHT_MCP_. Select a Pro Preview browser build before startup with --release-channel preview or CLOAK_PLAYWRIGHT_MCP_RELEASE_CHANNEL=preview; the default is stable.

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.

Version Compatibility

<!-- compatibility-table:start -->

| cloakbrowser-mcp | @playwright/mcp | CloakBrowser | Node.js | Platform | | ---------------- | --------------- | ------------ | ---------------------- | ----------------------------------------------------------------------------------------- | | 1.10.0 | ^0.0.78 | ^0.5.3 | ^22.13.0 || >=24.0.0 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 | | 1.9.0 | ^0.0.78 | ^0.5.1 | ^22.13.0 || >=24.0.0 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 | | 1.8.0 | ^0.0.78 | ^0.4.10 | ^22.13.0 || >=24.0.0 | npm on Linux x64/arm64, macOS arm64/x64, Windows x64; Docker linux/amd64, linux/arm64 | | 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 |

<!-- compatibility-table:end -->

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_info returns CloakBrowser package, platform, cache, and resolved binary data.
  • cloakbrowser_bridge_info returns 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.json

Documentation starts at docs/getting-started.md. Contributor material is grouped under docs/contributor-guide.md.

See related servers & alternatives β†’

Related MCP servers

Browse all β†’

Related guides

Hand-picked reading to help you choose and use Browser & Scraping servers.