Parallel Browser MCP MCP Server
io.github.etairl/parallel-browser-mcp
Control multiple browser sessions in parallel across Playwright, Browserbase, Anchor, and Cloudflare.
What is the Parallel Browser MCP MCP server?
Parallel Browser MCP is an MCP server for parallel browser automation that exposes a numeric session model allowing one client to create and control multiple concurrent browser sessions across different providers (Playwright, Browserbase, Anchor Browser, Cloudflare Browser Run). It abstracts provider differences behind a unified set of browser control tools.
This server lets you automate browser interactions at scale by managing multiple independent sessions simultaneously. Each session gets a numeric ID, and you can navigate, click, fill forms, take screenshots, evaluate JavaScript, and perform other browser actions on any session. It's useful for web scraping, testing, automation workflows, and any task requiring parallel browser control across different infrastructure providers.
How to install Parallel Browser MCP
Copy-paste configuration for popular MCP clients.
BROWSER_MCP_CONFIGInline JSON configuration for providers and defaults. See README for shape.
BROWSER_MCP_CONFIG_PATHPath to a JSON file with provider configuration.
BROWSERBASE_API_KEYsecretBrowserbase API key (required when using the browserbase provider).
BROWSERBASE_PROJECT_IDBrowserbase project ID (required when using the browserbase provider, unless set in config).
ANCHOR_API_KEYsecretAnchor Browser API key (required when using the anchor provider).
CLOUDFLARE_API_TOKENsecretCloudflare API token (required when using the cloudflare provider).
CLOUDFLARE_ACCOUNT_IDCloudflare account ID (required when using the cloudflare provider).
PLAYWRIGHT_USE_CLOAKBROWSERSet to 'true' to launch the local Playwright provider via CloakBrowser (https://cloakbrowser.dev/) stealth Chromium. Requires installing the optional 'cloakbrowser' npm package.
Tools & capabilities
Tools this server exposes to the agent.
start_session— Create a new browser session with a specified providerclose_session— Close a specific browser session by IDclose_all_sessions— Close all active browser sessionsget_sessions— List all active sessionsbrowser_navigate— Navigate to a URL in a sessionbrowser_go_back— Go back to the previous pagebrowser_click— Click an element by selectorbrowser_fill— Fill a form fieldbrowser_fill_form— Fill multiple form fields at oncebrowser_screenshot— Take a screenshot of the current pagebrowser_snapshot— Get a snapshot of the page structurebrowser_hover— Hover over an elementbrowser_drag— Drag an element to a new positionbrowser_select_option— Select an option from a dropdownbrowser_generate_locator— Generate a locator for an elementbrowser_get_page_structure— Get the structure of the current pagebrowser_evaluate— Execute JavaScript in the page contextbrowser_keyboard_press— Press a keyboard keybrowser_keyboard_type— Type text via keyboardbrowser_mouse_move— Move the mouse to a position
Use cases
- Automate web scraping across multiple sites in parallel using different browser providers
- Run end-to-end tests on multiple browser sessions simultaneously
- Fill out and submit forms on multiple websites concurrently
- Take screenshots and snapshots of web pages for monitoring or documentation
- Bypass bot detection using CloakBrowser stealth mode for sensitive automation tasks
Parallel Browser MCP MCP server FAQ
It's an MCP server that lets you control multiple browser sessions in parallel across different providers (Playwright, Browserbase, Anchor, Cloudflare). Each session gets a numeric ID, and you can perform browser actions like navigate, click, fill forms, and take screenshots on any session.
The server itself is free and open-source. However, some providers like Browserbase, Anchor Browser, and Cloudflare Browser Run require paid accounts or API keys. Local Playwright is free.
Go to Cursor Settings → MCP → Add new MCP Server, then set command to 'npx' and args to 'parallel-browser-mcp@latest'. Optionally add environment variables for API keys in the config.
Follow the Claude Desktop MCP install flow and paste the standard config (with your API keys) into the local MCP configuration file.
Playwright requires none. Browserbase needs BROWSERBASE_API_KEY and projectId. Anchor needs ANCHOR_API_KEY. Cloudflare needs CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID. Set these as environment variables.
Yes, the Playwright provider supports CloakBrowser for stealth Chromium. Enable it in config with 'useCloakBrowser: true' and install the optional cloakbrowser package.
README (reference)
Source of truth, from the repository.
parallel-browser-mcp
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:
playwrightfor local Chromiumbrowserbasevia@browserbasehq/sdkanchorviaanchorbrowsercloudflarevia Cloudflare Browser Run
Each browser session gets a numeric ID like 1, 2, 3, and every browser_* tool accepts a sessionId.
Features
- Multiple concurrent browser sessions in memory
- Provider abstraction shared across Browserbase, Anchor Browser, Cloudflare Browser Run, and local Playwright
- MCP session tools:
start_sessionclose_sessionclose_all_sessionsget_sessions
- Browser tools:
browser_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_timeout
Quick Start
corepack pnpm install
corepack pnpm build
Run locally over stdio:
node dist/index.js
Run it as an npm package CLI:
npx parallel-browser-mcp@latest
Configuration
Provider-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_PATH- direct env defaults
- built-in defaults
Recommended config shape:
{
"defaultProvider": "playwright",
"providers": {
"browserbase": {
"projectId": "proj_123",
"keepAlive": true
},
"anchor": {
"recording": false
},
"playwright": {
"launchOptions": {
"headless": true
},
"useCloakBrowser": false
}
}
}
Stealth Chromium via CloakBrowser
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=true
cloakbrowser is an optional peer — install it only when you need stealth:
npm install cloakbrowser
The 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 aprojectIdin config orBROWSERBASE_PROJECT_IDanchor:ANCHOR_API_KEYcloudflare:CLOUDFLARE_API_TOKEN,CLOUDFLARE_ACCOUNT_ID
Optional env defaults:
BROWSERBASE_PROJECT_IDBROWSERBASE_KEEP_ALIVEBROWSERBASE_CONTEXT_IDBROWSERBASE_PERSISTPLAYWRIGHT_STORAGE_STATE_PATHPLAYWRIGHT_EXECUTABLE_PATHPLAYWRIGHT_CHANNELPLAYWRIGHT_USE_CLOAKBROWSER(trueto launch stealth Chromium via CloakBrowser; requiresnpm install cloakbrowser)
Installation
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@latest
If 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 add
Or 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:
- command:
npx - args:
parallel-browser-mcp@latest
Or 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>
Example Flow
- Call
start_sessionwith{ "provider": "playwright" } - Read the returned session
id - Call
browser_navigatewith{ "sessionId": 1, "url": "https://example.com" } - Call any additional
browser_*tool with the samesessionId - Call
close_sessionwhen done
Development
corepack pnpm install
corepack pnpm typecheck
corepack pnpm test
corepack pnpm test:coverage
corepack pnpm build
corepack pnpm smoke:local
Publishing
This repo is set up to publish as an npm package:
- the CLI entrypoint is
parallel-browser-mcp - production builds exclude tests and smoke scripts
- the published package only includes
dist,README.md, and.env.example
Before publishing:
corepack pnpm typecheck
corepack pnpm test
corepack pnpm build
npm pack --dry-run
GitHub Actions publishing:
.github/workflows/publish.ymlpublishes to npm on GitHub release publication or manual dispatch- set the
NPM_TOKENrepository secret before using the publish workflow
Examples
examples/localcontains a standalone npm package that connects toparallel-browser-mcpwith@langchain/mcp-adaptersand runs a LangChain agent against the local Playwright provider.examples/browserbasecontains a standalone npm package that connects LangChain to the published MCP server with Browserbase config and prompts the agent to usebrowser_screenshot.examples/anchorcontains a standalone npm package that connects LangChain to the published MCP server with Anchor config and prompts the agent to usebrowser_snapshot.examples/cloudflarecontains a standalone npm package that connects LangChain to the published MCP server with Cloudflare Browser Run config and prompts the agent to usebrowser_snapshot.- The root
.npmignoreexcludes the fullexamplesdirectory from npm publishing.
Testing
The repo includes:
- unit coverage for config loading, providers, registry behavior, session tools, and representative browser tools
- a local Playwright smoke script in
src/smoke/localSmoke.ts
Notes
start_sessionis intentionally small. Provider-specific behavior belongs in MCP configuration, not tool inputs.- The server logs to stderr so stdout stays clean for MCP JSON-RPC traffic.
- Browserbase and Anchor Browser are normalized to Playwright page operations after connection, so the browser tools stay provider-agnostic.
Related MCP servers

io.github.eterdis/strategy-skills
11 open strategy frameworks as AI-guided prompts for any MCP client.

Exact-decimal double-entry for agents. Call MCP tools; do not do money math in tokens.
Embedded calculators, codegen & schematic review: CRC, timing, struct, IEEE-754, KiCad.
Diagnoses pg-boss and graphile-worker job queues: retry storms, stuck workers, missed schedules.

OpenBrand
Extract logos, colors, and brand assets from any website URL instantly.

Query FedRAMP compliance requirements, KSIs, NIST controls, and guidance via 21 MCP tools.

