CloakBrowser MCP
Playwright MCP-compatible browser automation bridge for CloakBrowser Chromium.
The record the registry holds
There is no address to call. This one is a package you install and run yourself, wherever your assistant runs.
{
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.swimmwatch/cloakbrowser-mcp",
"description": "Playwright MCP-compatible browser automation bridge for CloakBrowser Chromium.",
"title": "CloakBrowser MCP",
"repository": {
"url": "https://github.com/swimmwatch/cloakbrowser-mcp",
"source": "github"
},
"version": "1.12.0",
"websiteUrl": "https://swimmwatch.github.io/cloakbrowser-mcp/",
"icons": [
{
"src": "https://swimmwatch.github.io/cloakbrowser-mcp/assets/brand/logo.svg",
"mimeType": "image/svg+xml",
"sizes": [
"any"
]
}
],
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "cloakbrowser-mcp",
"version": "1.12.0",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Bridge browser engine: cloak or playwright.",
"format": "string",
"default": "cloak",
"name": "PLAYWRIGHT_MCP_BROWSER_ENGINE"
},
{
"description": "Run the browser in headless mode.",
"format": "boolean",
"default": "true",
"name": "PLAYWRIGHT_MCP_HEADLESS"
},
{
"description": "Directory where upstream Playwright MCP writes artifacts.",
"format": "filepath",
"default": ".playwright-mcp",
"name": "PLAYWRIGHT_MCP_OUTPUT_DIR"
},
{
"description": "Generate code in typescript, python, java, csharp, or none.",
"format": "string",
"default": "typescript",
"name": "PLAYWRIGHT_MCP_CODEGEN"
},
{
"description": "Include element bounding boxes in browser snapshots.",
"format": "boolean",
"default": "false",
"name": "PLAYWRIGHT_MCP_SNAPSHOT_BOXES"
},
{
"description": "Milliseconds to wait after actions for triggered work to settle.",
"format": "number",
"default": "500",
"name": "PLAYWRIGHT_MCP_TIMEOUT_SETTLE"
},
{
"description": "Persistent Chromium profile directory. The bridge resolves it to an absolute path and writes it to generated Playwright MCP config.",
"format": "filepath",
"name": "PLAYWRIGHT_MCP_USER_DATA_DIR"
},
{
"description": "JSON object with validated Playwright context options such as viewport, locale, timezoneId, permissions, geolocation, and headers.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_CONTEXT_OPTIONS"
},
{
"description": "JSON array or comma-separated list of Chrome extension directories. Requires PLAYWRIGHT_MCP_USER_DATA_DIR.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTENSION_PATHS"
},
{
"description": "Patch upstream console message collection for CloakBrowser compatibility.",
"format": "boolean",
"default": "true",
"name": "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK"
},
{
"description": "Resolve proxy GeoIP and match CloakBrowser timezone/locale fingerprint flags when PLAYWRIGHT_MCP_PROXY_SERVER is set.",
"format": "boolean",
"default": "false",
"name": "CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH"
},
{
"description": "Comma-separated or JSON array of extra Chromium launch arguments.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS"
}
]
},
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "cloakbrowser-mcp",
"version": "1.12.0",
"transport": {
"type": "streamable-http",
"url": "http://127.0.0.1:3000/mcp"
},
"packageArguments": [
{
"value": "streamable-http",
"type": "named",
"name": "--transport"
}
],
"environmentVariables": [
{
"description": "Streamable HTTP bind host.",
"format": "string",
"default": "127.0.0.1",
"name": "CLOAK_PLAYWRIGHT_MCP_HTTP_HOST"
},
{
"description": "Streamable HTTP bind port.",
"format": "number",
"default": "3000",
"name": "CLOAK_PLAYWRIGHT_MCP_HTTP_PORT"
},
{
"description": "Streamable HTTP endpoint path.",
"format": "string",
"default": "/mcp",
"name": "CLOAK_PLAYWRIGHT_MCP_HTTP_ENDPOINT"
},
{
"description": "Optional Streamable HTTP Bearer token.",
"format": "string",
"isSecret": true,
"name": "CLOAK_PLAYWRIGHT_MCP_HTTP_AUTH_TOKEN"
},
{
"description": "Session metadata backend. Only memory is implemented in this release.",
"format": "string",
"default": "memory",
"name": "CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_BACKEND"
},
{
"description": "Idle TTL for Streamable HTTP sessions.",
"format": "number",
"default": "3600000",
"name": "CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_IDLE_TTL_MS"
},
{
"description": "Maximum active Streamable HTTP sessions in one process.",
"format": "number",
"default": "32",
"name": "CLOAK_PLAYWRIGHT_MCP_HTTP_SESSION_MAX"
},
{
"description": "Bridge browser engine: cloak or playwright.",
"format": "string",
"default": "cloak",
"name": "PLAYWRIGHT_MCP_BROWSER_ENGINE"
},
{
"description": "Run the browser in headless mode.",
"format": "boolean",
"default": "true",
"name": "PLAYWRIGHT_MCP_HEADLESS"
},
{
"description": "Directory where upstream Playwright MCP writes artifacts.",
"format": "filepath",
"default": ".playwright-mcp",
"name": "PLAYWRIGHT_MCP_OUTPUT_DIR"
},
{
"description": "Generate code in typescript, python, java, csharp, or none.",
"format": "string",
"default": "typescript",
"name": "PLAYWRIGHT_MCP_CODEGEN"
},
{
"description": "Include element bounding boxes in browser snapshots.",
"format": "boolean",
"default": "false",
"name": "PLAYWRIGHT_MCP_SNAPSHOT_BOXES"
},
{
"description": "Milliseconds to wait after actions for triggered work to settle.",
"format": "number",
"default": "500",
"name": "PLAYWRIGHT_MCP_TIMEOUT_SETTLE"
},
{
"description": "Persistent Chromium profile directory. The bridge resolves it to an absolute path and writes it to generated Playwright MCP config.",
"format": "filepath",
"name": "PLAYWRIGHT_MCP_USER_DATA_DIR"
},
{
"description": "JSON object with validated Playwright context options such as viewport, locale, timezoneId, permissions, geolocation, and headers.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_CONTEXT_OPTIONS"
},
{
"description": "JSON array or comma-separated list of Chrome extension directories. Requires PLAYWRIGHT_MCP_USER_DATA_DIR.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTENSION_PATHS"
},
{
"description": "Patch upstream console message collection for CloakBrowser compatibility.",
"format": "boolean",
"default": "true",
"name": "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK"
},
{
"description": "Resolve proxy GeoIP and match CloakBrowser timezone/locale fingerprint flags when PLAYWRIGHT_MCP_PROXY_SERVER is set.",
"format": "boolean",
"default": "false",
"name": "CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH"
},
{
"description": "Comma-separated or JSON array of extra Chromium launch arguments.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS"
}
]
},
{
"registryType": "oci",
"identifier": "ghcr.io/swimmwatch/cloakbrowser-mcp:1.12.0",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Bridge browser engine: cloak or playwright.",
"format": "string",
"default": "cloak",
"name": "PLAYWRIGHT_MCP_BROWSER_ENGINE"
},
{
"description": "Run the browser in headless mode.",
"format": "boolean",
"default": "true",
"name": "PLAYWRIGHT_MCP_HEADLESS"
},
{
"description": "Directory inside the container where upstream Playwright MCP writes artifacts.",
"format": "filepath",
"default": "/data",
"name": "PLAYWRIGHT_MCP_OUTPUT_DIR"
},
{
"description": "Generate code in typescript, python, java, csharp, or none.",
"format": "string",
"default": "typescript",
"name": "PLAYWRIGHT_MCP_CODEGEN"
},
{
"description": "Include element bounding boxes in browser snapshots.",
"format": "boolean",
"default": "false",
"name": "PLAYWRIGHT_MCP_SNAPSHOT_BOXES"
},
{
"description": "Milliseconds to wait after actions for triggered work to settle.",
"format": "number",
"default": "500",
"name": "PLAYWRIGHT_MCP_TIMEOUT_SETTLE"
},
{
"description": "Persistent Chromium profile directory inside the container. Use /data/profiles/... with the existing /data volume.",
"format": "filepath",
"name": "PLAYWRIGHT_MCP_USER_DATA_DIR"
},
{
"description": "JSON object with validated Playwright context options such as viewport, locale, timezoneId, permissions, geolocation, and headers.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_CONTEXT_OPTIONS"
},
{
"description": "JSON array or comma-separated list of Chrome extension directories inside the container. Requires PLAYWRIGHT_MCP_USER_DATA_DIR.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTENSION_PATHS"
},
{
"description": "Patch upstream console message collection for CloakBrowser compatibility.",
"format": "boolean",
"default": "true",
"name": "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK"
},
{
"description": "Resolve proxy GeoIP and match CloakBrowser timezone/locale fingerprint flags when PLAYWRIGHT_MCP_PROXY_SERVER is set.",
"format": "boolean",
"default": "false",
"name": "CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH"
},
{
"description": "Comma-separated or JSON array of extra Chromium launch arguments.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS"
}
]
},
{
"registryType": "oci",
"identifier": "docker.io/swimmwatch/cloakbrowser-mcp:1.12.0",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Bridge browser engine: cloak or playwright.",
"format": "string",
"default": "cloak",
"name": "PLAYWRIGHT_MCP_BROWSER_ENGINE"
},
{
"description": "Run the browser in headless mode.",
"format": "boolean",
"default": "true",
"name": "PLAYWRIGHT_MCP_HEADLESS"
},
{
"description": "Directory inside the container where upstream Playwright MCP writes artifacts.",
"format": "filepath",
"default": "/data",
"name": "PLAYWRIGHT_MCP_OUTPUT_DIR"
},
{
"description": "Generate code in typescript, python, java, csharp, or none.",
"format": "string",
"default": "typescript",
"name": "PLAYWRIGHT_MCP_CODEGEN"
},
{
"description": "Include element bounding boxes in browser snapshots.",
"format": "boolean",
"default": "false",
"name": "PLAYWRIGHT_MCP_SNAPSHOT_BOXES"
},
{
"description": "Milliseconds to wait after actions for triggered work to settle.",
"format": "number",
"default": "500",
"name": "PLAYWRIGHT_MCP_TIMEOUT_SETTLE"
},
{
"description": "Persistent Chromium profile directory inside the container. Use /data/profiles/... with the existing /data volume.",
"format": "filepath",
"name": "PLAYWRIGHT_MCP_USER_DATA_DIR"
},
{
"description": "JSON object with validated Playwright context options such as viewport, locale, timezoneId, permissions, geolocation, and headers.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_CONTEXT_OPTIONS"
},
{
"description": "JSON array or comma-separated list of Chrome extension directories inside the container. Requires PLAYWRIGHT_MCP_USER_DATA_DIR.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTENSION_PATHS"
},
{
"description": "Patch upstream console message collection for CloakBrowser compatibility.",
"format": "boolean",
"default": "true",
"name": "CLOAK_PLAYWRIGHT_MCP_CONSOLE_FALLBACK"
},
{
"description": "Resolve proxy GeoIP and match CloakBrowser timezone/locale fingerprint flags when PLAYWRIGHT_MCP_PROXY_SERVER is set.",
"format": "boolean",
"default": "false",
"name": "CLOAK_PLAYWRIGHT_MCP_GEOIP_PROXY_MATCH"
},
{
"description": "Comma-separated or JSON array of extra Chromium launch arguments.",
"format": "string",
"name": "CLOAK_PLAYWRIGHT_MCP_EXTRA_ARGS"
}
]
}
]
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"statusChangedAt": "2026-08-18T09:47:04.510544Z",
"publishedAt": "2026-08-18T09:47:04.510544Z",
"updatedAt": "2026-08-18T09:47:04.510544Z",
"isLatest": true
}
}
}
Draft an Agent Plugin from this
An MCP server is raw capability: some tools, wired to something. An Agent Plugin is the packaging that says what job it does, what it leaves behind and where it stops. The prompt below carries this record and asks for the packaging; your own assistant writes it, and nothing here is sent anywhere.
MCP server
These are the publisher's own words, filed by them with the official MCP registry and mirrored here. This catalog did not read them from the publisher and has not run, called or installed anything.
The publisher's own address
https://swimmwatch.github.io/cloakbrowser-mcp/
The address the publisher put in their registry record, printed as they wrote it. Nobody here has opened it.