浏览器池服务

一个动态浏览器池MCP服务器,支持多个并发浏览器会话,适用于需要隔离浏览器实例的场景。

  • by OMGEverdo
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 OMGEverdo/browser-pool-mcp

使用说明

浏览器池mcp

一个动态浏览器池MCP服务器 @剧作家/mcp 使能够 多个并发浏览器会话 Claude Code和其他MCP客户。

问题解决了

标准的Playwright MCP服务器一次只允许一个浏览器实例。如果你试图同时使用多个Claude Code会话中的浏览器工具,你会得到:

Browser is already in use for C:\Users\...\mcp-chrome-xxx, use --isolated to run multiple instances

浏览器池mcp 通过以下方式解决此问题:

  • 在动态端口上按需生成Playwright MCP实例(9000+)
  • 自动检测来自其他会话的端口冲突
  • 将每个Claude会话分配给自己的独立浏览器
  • 30分钟后自动清理空闲实例

建筑

Claude Code Session 1 ──stdio──> browser-pool-mcp ──SSE──> Playwright MCP (port 9000)
Claude Code Session 2 ──stdio──> browser-pool-mcp ──SSE──> Playwright MCP (port 9001)
Claude Code Session 3 ──stdio──> browser-pool-mcp ──SSE──> Playwright MCP (port 9002)

每个Claude Code会话都有自己的浏览器池mcp进程,该进程在可用端口上生成并连接到一个隔离的Playwright实例。

安装

先决条件

  • Node.js 18+
  • npm

设置

  1. 克隆或下载此存储库:
git clone https://github.com/everdijsje/browser-pool-mcp.git
cd browser-pool-mcp
npm install
  1. 添加到您的Claude Code MCP配置中(~/.claude.json):
{
  "mcpServers": {
    "browser": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/browser-pool-mcp/index.js"]
    }
  }
}
  1. 重新启动Claude代码

用法

在Claude Code中正常使用浏览器工具:

Navigate to https://example.com
Take a screenshot
Click on the "Learn more" link

附加工具

  • pool_status -检查正在运行的浏览器实例的状态
  • pool_test -测试异步响应的调试工具

配置

环境变量:

变量 默认值 描述
BROWSER_POOL_DEBUG 0 设置为 1 启用调试日志记录 debug.log

常数在 index.js:

常量 默认值 描述
BASE_PORT 9000 Playwright实例的起始端口
MAX_INSTANCES 10 最大并发浏览器实例数
INSTANCE_TIMEOUT_MS 1800000 终止实例前的空闲超时(30分钟)

运作原理

  1. 当您调用任何浏览器工具(例如。, browser_navigate),浏览器池mcp:

    • 检查此会话是否已分配Playwright实例
    • 如果没有,则查找可用端口(检查冲突)
    • 生成物 npx @playwright/mcp@latest --port PORT --isolated
    • 通过SSE上的MCP SDK客户端连接
    • 将工具调用代理给Playwright
  2. 每个会话在其生命周期内分配一个浏览器实例

  3. 实例在30分钟不活动后被清理

  4. 当达到最大实例数时,回收最旧的空闲实例

支持的浏览器工具

所有标准Playwright MCP工具均已代理:

  • browser_navigate -导航到URL
  • browser_snapshot -获取页面可访问性快照
  • browser_click -点击元素
  • browser_type -在元素中键入文本
  • browser_screenshot -截图
  • browser_tabs -管理浏览器选项卡
  • browser_press_key -按键盘键
  • browser_hover -将鼠标悬停在元素上
  • browser_select_option -选择下拉选项
  • browser_evaluate -运行JavaScript
  • browser_wait_for -等待条件
  • browser_resize -调整浏览器窗口大小
  • browser_handle_dialog -处理警报/确认
  • browser_file_upload -上传文件
  • browser_console_messages -获取控制台日志
  • browser_network_requests -获取网络活动
  • browser_navigate_back -回去吧
  • browser_close -关闭浏览器

依赖项

  • @modelcontextprotocol/sdk -用于服务器和客户端通信的MCP SDK
  • zod -架构验证
  • @playwright/mcp -作为子进程进行序列化(通过npx安装)

许可证

麻省理工学院

作者

由Claude Code为 埃弗迪斯