MCP server for parallel browser automation across multiple providers.
io.github.etairl/parallel-browser-mcp — MCP Server for Parallel Browser Automation
io.github.etairl/parallel-browser-mcp is an MCP server for parallel browser automation across multiple providers. It exposes a numeric session model over MCP so one client can create and control multiple browser sessions at the same time.
🛠️ Key Features
Parallel browser automation via MCP
Numeric session model for managing multiple sessions
Supports multiple browser providers
🚀 Use Cases
Run concurrent browser sessions in a single MCP client workflow
Automate Chromium locally through a provider
Integrate with hosted browser infrastructure through supported providers
⚡ Developer Benefits
Single MCP client controls multiple sessions concurrently
Session management is represented as a numeric model
Provider-based execution (local and external)
⚠️ Limitations
Provider support is limited to what is listed in the server description: playwright for local Chromium and browserbase via @browserbasehq/
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 Chromium
browserbase via @browserbasehq/sdk
anchor via anchorbrowser
cloudflare via 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_session
close_session
close_all_sessions
get_sessions
Browser tools:
browser_navigate
browser_go_back
browser_click
browser_fill
browser_fill_form
browser_screenshot
browser_snapshot
browser_hover
browser_drag
browser_select_option
browser_generate_locator
browser_get_page_structure
browser_evaluate
browser_keyboard_press
browser_keyboard_type
browser_mouse_move
browser_mouse_click_xy
browser_mouse_drag
browser_upload_file
browser_wait_for_selector
browser_wait_for_timeout
Quick Start
bash
corepack pnpm install
corepack pnpm build
Run locally over stdio:
bash
node dist/index.js
Run it as an npm package CLI:
bash
npx parallel-browser-mcp@latest
Configuration
Provider-specific settings are configured at the MCP server configuration level, not per tool call.
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:
cloakbrowser is an optional peer — install it only when you need stealth:
bash
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: none
browserbase: BROWSERBASE_API_KEY, plus a projectId in config or BROWSERBASE_PROJECT_ID
.github/workflows/publish.yml publishes to npm on GitHub release publication or manual dispatch
set the NPM_TOKEN repository secret before using the publish workflow
Examples
examples/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.
The root .npmignore excludes the full examples directory 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_session is 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.
Install
Configuration
Environment variables
BROWSER_MCP_CONFIG
Inline JSON configuration for providers and defaults. See README for shape.
BROWSER_MCP_CONFIG_PATH
Path to a JSON file with provider configuration.
BROWSERBASE_API_KEYsecret
Browserbase API key (required when using the browserbase provider).
BROWSERBASE_PROJECT_ID
Browserbase project ID (required when using the browserbase provider, unless set in config).
ANCHOR_API_KEYsecret
Anchor Browser API key (required when using the anchor provider).
CLOUDFLARE_API_TOKENsecret
Cloudflare API token (required when using the cloudflare provider).
CLOUDFLARE_ACCOUNT_ID
Cloudflare account ID (required when using the cloudflare provider).
PLAYWRIGHT_USE_CLOAKBROWSER
Set to 'true' to launch the local Playwright provider via CloakBrowser (https://cloakbrowser.dev/) stealth Chromium. Requires installing the optional 'cloakbrowser' npm package.