Skip to main content
Glama
etairl

parallel-browser-mcp

parallel-browser-mcp

parallel-browser-mcp 是一个用于并行浏览器自动化的 MCP 服务器。它通过 MCP 公开了一个数字会话模型,以便一个客户端可以同时创建和控制跨多个浏览器提供商的多个浏览器会话。

支持的提供商:

  • playwright(用于本地 Chromium)

  • browserbase(通过 @browserbasehq/sdk

  • anchor(通过 anchorbrowser

  • cloudflare(通过 Cloudflare Browser Run)

每个浏览器会话都会获得一个数字 ID,如 123,并且每个 browser_* 工具都接受一个 sessionId

功能

  • 内存中多个并发浏览器会话

  • 跨 Browserbase、Anchor Browser、Cloudflare Browser Run 和本地 Playwright 的提供商抽象

  • MCP 会话工具:

    • start_session

    • close_session

    • close_all_sessions

    • get_sessions

  • 浏览器工具:

    • 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

快速入门

corepack pnpm install
corepack pnpm build

通过 stdio 在本地运行:

node dist/index.js

作为 npm 包 CLI 运行:

npx parallel-browser-mcp@latest

配置

特定于提供商的设置是在 MCP 服务器配置级别配置的,而不是在工具调用级别。

服务器按以下顺序读取配置:

  1. BROWSER_MCP_CONFIG

  2. BROWSER_MCP_CONFIG_PATH

  3. 直接环境变量默认值

  4. 内置默认值

推荐的配置格式:

{
  "defaultProvider": "playwright",
  "providers": {
    "browserbase": {
      "projectId": "proj_123",
      "keepAlive": true
    },
    "anchor": {
      "recording": false
    },
    "playwright": {
      "launchOptions": {
        "headless": true
      }
    }
  }
}

各提供商所需的凭据:

  • playwright:无

  • browserbaseBROWSERBASE_API_KEY,以及配置中的 projectIdBROWSERBASE_PROJECT_ID

  • anchorANCHOR_API_KEY

  • cloudflareCLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID

可选的环境变量默认值:

  • BROWSERBASE_PROJECT_ID

  • BROWSERBASE_KEEP_ALIVE

  • BROWSERBASE_CONTEXT_ID

  • BROWSERBASE_PERSIST

  • PLAYWRIGHT_STORAGE_STATE_PATH

  • PLAYWRIGHT_EXECUTABLE_PATH

  • PLAYWRIGHT_CHANNEL

安装

在任何支持 stdio 的 MCP 客户端中使用以下标准配置:

{
  "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"
      }
    }
  }
}

使用 Claude Code CLI 添加服务器:

claude mcp add parallel-browser-mcp npx parallel-browser-mcp@latest

如果您需要提供商配置,请使用上述标准配置在您的 Claude MCP 配置中添加环境变量。

按照 Claude Desktop MCP 安装流程,并在本地 MCP 配置文件中使用上述标准配置。

使用 Codex CLI:

codex mcp add parallel-browser-mcp npx "parallel-browser-mcp@latest"

或将其添加到 ~/.codex/config.toml

[mcp_servers.parallel-browser-mcp]
command = "npx"
args = ["parallel-browser-mcp@latest"]

使用 Copilot CLI 交互式流程:

/mcp add

或将其添加到 ~/.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"
      }
    }
  }
}

转到 Cursor Settings -> MCP -> Add new MCP Server,然后使用:

  • command: npx

  • args: parallel-browser-mcp@latest

或者将上述标准配置粘贴到 MCP 配置编辑器中。

将服务器添加到 .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"
      }
    }
  }
}

在 VS Code 中使用 MCP 安装流程并配合上述标准配置,或者使用 VS Code CLI 安装:

code --add-mcp '{"name":"parallel-browser-mcp","command":"npx","args":["parallel-browser-mcp@latest"]}'

示例流程

  1. 使用 { "provider": "playwright" } 调用 start_session

  2. 读取返回的会话 id

  3. 使用 { "sessionId": 1, "url": "https://example.com" } 调用 browser_navigate

  4. 使用相同的 sessionId 调用任何其他 browser_* 工具

  5. 完成后调用 close_session

开发

corepack pnpm install
corepack pnpm typecheck
corepack pnpm test
corepack pnpm test:coverage
corepack pnpm build
corepack pnpm smoke:local

发布

此仓库已设置为作为 npm 包发布:

  • CLI 入口点是 parallel-browser-mcp

  • 生产构建排除了测试和冒烟测试脚本

  • 已发布的包仅包含 distREADME.md.env.example

发布前:

corepack pnpm typecheck
corepack pnpm test
corepack pnpm build
npm pack --dry-run

GitHub Actions 发布:

  • .github/workflows/publish.yml 在 GitHub 发布或手动触发时发布到 npm

  • 在使用发布工作流之前,请设置 NPM_TOKEN 仓库密钥

示例

  • examples/local 包含一个独立的 npm 包,它使用 @langchain/mcp-adapters 连接到 parallel-browser-mcp,并针对本地 Playwright 提供商运行 LangChain 代理。

  • examples/browserbase 包含一个独立的 npm 包,它使用 Browserbase 配置将 LangChain 连接到已发布的 MCP 服务器,并提示代理使用 browser_screenshot

  • examples/anchor 包含一个独立的 npm 包,它使用 Anchor 配置将 LangChain 连接到已发布的 MCP 服务器,并提示代理使用 browser_snapshot

  • examples/cloudflare 包含一个独立的 npm 包,它使用 Cloudflare Browser Run 配置将 LangChain 连接到已发布的 MCP 服务器,并提示代理使用 browser_snapshot

  • 根目录下的 .npmignore 从 npm 发布中排除了整个 examples 目录。

测试

该仓库包括:

  • 针对配置加载、提供商、注册表行为、会话工具和代表性浏览器工具的单元覆盖

  • src/smoke/localSmoke.ts 中的本地 Playwright 冒烟测试脚本

注意事项

  • start_session 被设计得尽可能简单。特定于提供商的行为应放在 MCP 配置中,而不是工具输入中。

  • 服务器将日志记录到 stderr,以便 stdout 保持干净,供 MCP JSON-RPC 流量使用。

  • Browserbase 和 Anchor Browser 在连接后被标准化为 Playwright 页面操作,因此浏览器工具保持与提供商无关。

A
license - permissive license
-
quality - not tested
C
maintenance

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/etairl/parallel-browser-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server