An MCP server for parallel browser automation by AI agents with multiple cloud providers
SaferSkills independently audited Parallel Browser Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
parallel-browser-mcp is an MCP server for parallel browser automation. It exposes a numeric session model over MCP so one client can create and control multiple browser sessions at the same time across multiple browser providers.
Supported providers:
playwright for local Chromiumbrowserbase via @browserbasehq/sdkanchor via anchorbrowsercloudflare via Cloudflare Browser RunEach browser session gets a numeric ID like 1, 2, 3, and every browser_* tool accepts a sessionId.
start_sessionclose_sessionclose_all_sessionsget_sessionsbrowser_navigatebrowser_go_backbrowser_clickbrowser_fillbrowser_fill_formbrowser_screenshotbrowser_snapshotbrowser_hoverbrowser_dragbrowser_select_optionbrowser_generate_locatorbrowser_get_page_structurebrowser_evaluatebrowser_keyboard_pressbrowser_keyboard_typebrowser_mouse_movebrowser_mouse_click_xybrowser_mouse_dragbrowser_upload_filebrowser_wait_for_selectorbrowser_wait_for_timeoutcorepack pnpm install
corepack pnpm buildRun locally over stdio:
node dist/index.jsRun it as an npm package CLI:
npx parallel-browser-mcp@latestProvider-specific settings are configured at the MCP server configuration level, not per tool call.
The server reads config in this order:
BROWSER_MCP_CONFIGBROWSER_MCP_CONFIG_PATHRecommended config shape:
{
"defaultProvider": "playwright",
"providers": {
"browserbase": {
"projectId": "proj_123",
"keepAlive": true
},
"anchor": {
"recording": false
},
"playwright": {
"launchOptions": {
"headless": true
},
"useCloakBrowser": false
}
}
}The playwright provider can optionally launch CloakBrowser instead of vanilla Chromium for sessions that need to bypass bot detection. Enable it per-config or via env:
{
"providers": {
"playwright": { "useCloakBrowser": true }
}
}PLAYWRIGHT_USE_CLOAKBROWSER=truecloakbrowser is an optional peer — install it only when you need stealth:
npm install cloakbrowserThe CloakBrowser binary (~200MB stealth Chromium) is downloaded automatically on the first session launch. Existing launchOptions / contextOptions continue to apply, and the rest of the provider behaves identically to standard Playwright.
Required credentials by provider:
playwright: nonebrowserbase: BROWSERBASE_API_KEY, plus a projectId in config or BROWSERBASE_PROJECT_IDanchor: ANCHOR_API_KEYcloudflare: CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_IDOptional env defaults:
BROWSERBASE_PROJECT_IDBROWSERBASE_KEEP_ALIVEBROWSERBASE_CONTEXT_IDBROWSERBASE_PERSISTPLAYWRIGHT_STORAGE_STATE_PATHPLAYWRIGHT_EXECUTABLE_PATHPLAYWRIGHT_CHANNELPLAYWRIGHT_USE_CLOAKBROWSER (true to launch stealth Chromium via CloakBrowser; requires npm install cloakbrowser)Use the standard config below in any MCP client that supports stdio:
{
"mcpServers": {
"parallel-browser-mcp": {
"command": "npx",
"args": ["parallel-browser-mcp@latest"],
"env": {
"BROWSER_MCP_CONFIG": "{\"defaultProvider\":\"playwright\",\"providers\":{\"playwright\":{\"launchOptions\":{\"headless\":true}}}}",
"BROWSERBASE_API_KEY": "your_browserbase_key",
"ANCHOR_API_KEY": "your_anchor_key"
}
}
}
}<details> <summary>Claude Code</summary>
Use the Claude Code CLI to add the server:
claude mcp add parallel-browser-mcp npx parallel-browser-mcp@latestIf you need provider configuration, add the environment variables in your Claude MCP config using the standard config above. </details>
<details> <summary>Claude Desktop</summary>
Follow the Claude Desktop MCP install flow and use the standard config above in the local MCP configuration file. </details>
<details> <summary>Codex</summary>
Use the Codex CLI:
codex mcp add parallel-browser-mcp npx "parallel-browser-mcp@latest"Or add this to ~/.codex/config.toml:
[mcp_servers.parallel-browser-mcp]
command = "npx"
args = ["parallel-browser-mcp@latest"]</details>
<details> <summary>Copilot</summary>
Use the Copilot CLI interactive flow:
/mcp addOr add this to ~/.copilot/mcp-config.json:
{
"mcpServers": {
"parallel-browser-mcp": {
"type": "local",
"command": "npx",
"tools": ["*"],
"args": ["parallel-browser-mcp@latest"],
"env": {
"BROWSER_MCP_CONFIG": "{\"defaultProvider\":\"playwright\",\"providers\":{\"playwright\":{\"launchOptions\":{\"headless\":true}}}}",
"BROWSERBASE_API_KEY": "your_browserbase_key",
"ANCHOR_API_KEY": "your_anchor_key"
}
}
}
}</details>
<details> <summary>Cursor</summary>
Go to Cursor Settings -> MCP -> Add new MCP Server, then use:
npxparallel-browser-mcp@latestOr paste the standard config above into the MCP config editor. </details>
<details> <summary>Gemini</summary>
Add the server to .gemini/settings.json:
{
"mcpServers": {
"parallel-browser-mcp": {
"command": "npx",
"args": ["parallel-browser-mcp@latest"],
"env": {
"BROWSER_MCP_CONFIG": "{\"defaultProvider\":\"playwright\",\"providers\":{\"playwright\":{\"launchOptions\":{\"headless\":true}}}}",
"BROWSERBASE_API_KEY": "your_browserbase_key",
"ANCHOR_API_KEY": "your_anchor_key"
}
}
}
}</details>
<details> <summary>VS Code</summary>
Use the MCP install flow in VS Code with the standard config above, or install with the VS Code CLI:
code --add-mcp '{"name":"parallel-browser-mcp","command":"npx","args":["parallel-browser-mcp@latest"]}'</details>
start_session with { "provider": "playwright" }idbrowser_navigate with { "sessionId": 1, "url": "https://example.com" }browser_* tool with the same sessionIdclose_session when donecorepack pnpm install
corepack pnpm typecheck
corepack pnpm test
corepack pnpm test:coverage
corepack pnpm build
corepack pnpm smoke:localThis repo is set up to publish as an npm package:
parallel-browser-mcpdist, README.md, and .env.exampleBefore publishing:
corepack pnpm typecheck
corepack pnpm test
corepack pnpm build
npm pack --dry-runGitHub Actions publishing:
.github/workflows/publish.yml publishes to npm on GitHub release publication or manual dispatchNPM_TOKEN repository secret before using the publish workflowexamples/local contains a standalone npm package that connects to parallel-browser-mcp with @langchain/mcp-adapters and runs a LangChain agent against the local Playwright provider.examples/browserbase contains a standalone npm package that connects LangChain to the published MCP server with Browserbase config and prompts the agent to use browser_screenshot.examples/anchor contains a standalone npm package that connects LangChain to the published MCP server with Anchor config and prompts the agent to use browser_snapshot.examples/cloudflare contains a standalone npm package that connects LangChain to the published MCP server with Cloudflare Browser Run config and prompts the agent to use browser_snapshot..npmignore excludes the full examples directory from npm publishing.The repo includes:
src/smoke/localSmoke.tsstart_session is intentionally small. Provider-specific behavior belongs in MCP configuration, not tool inputs.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.