loading…
Search for a command to run...
loading…
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
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.
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 build
Run locally over stdio:
node dist/index.js
Run it as an npm package CLI:
npx parallel-browser-mcp@latest
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_PATHRecommended config shape:
{
"defaultProvider": "playwright",
"providers": {
"browserbase": {
"projectId": "proj_123",
"keepAlive": true
},
"anchor": {
"recording": false
},
"playwright": {
"launchOptions": {
"headless": true
}
}
}
}
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_CHANNELUse 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"
}
}
}
}
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.
Follow the Claude Desktop MCP install flow and use the standard config above in the local MCP configuration file.
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"]
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"
}
}
}
}
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.
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"
}
}
}
}
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"]}'
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:local
This 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-run
GitHub 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.Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"parallel-browser-mcp": {
"command": "npx",
"args": []
}
}
}