loading…
Search for a command to run...
loading…
A dynamic browser pool MCP server that enables multiple concurrent, isolated Playwright sessions for Claude Code and other MCP clients. It manages on-demand ins
A dynamic browser pool MCP server that enables multiple concurrent, isolated Playwright sessions for Claude Code and other MCP clients. It manages on-demand instances on dynamic ports to resolve session conflicts and includes automatic cleanup of idle browsers.
A dynamic browser pool MCP server that wraps @playwright/mcp to enable multiple concurrent browser sessions for Claude Code and other MCP clients.
The standard Playwright MCP server only allows one browser instance at a time. If you try to use browser tools from multiple Claude Code sessions simultaneously, you get:
Browser is already in use for C:\Users\...\mcp-chrome-xxx, use --isolated to run multiple instances
browser-pool-mcp solves this by:
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)
Each Claude Code session gets its own browser-pool-mcp process, which spawns and connects to an isolated Playwright instance on an available port.
git clone https://github.com/everdijsje/browser-pool-mcp.git
cd browser-pool-mcp
npm install
~/.claude.json):{
"mcpServers": {
"browser": {
"type": "stdio",
"command": "node",
"args": ["/path/to/browser-pool-mcp/index.js"]
}
}
}
Use browser tools as normal in Claude Code:
Navigate to https://example.com
Take a screenshot
Click on the "Learn more" link
pool_status - Check the status of running browser instancespool_test - Debug tool to test async responsesEnvironment variables:
| Variable | Default | Description |
|---|---|---|
BROWSER_POOL_DEBUG |
0 |
Set to 1 to enable debug logging to debug.log |
Constants in index.js:
| Constant | Default | Description |
|---|---|---|
BASE_PORT |
9000 |
Starting port for Playwright instances |
MAX_INSTANCES |
10 |
Maximum concurrent browser instances |
INSTANCE_TIMEOUT_MS |
1800000 |
Idle timeout before killing instance (30 min) |
When you call any browser tool (e.g., browser_navigate), browser-pool-mcp:
npx @playwright/mcp@latest --port PORT --isolatedEach session is assigned one browser instance for its lifetime
Instances are cleaned up after 30 minutes of inactivity
When max instances are reached, the oldest idle instance is recycled
All standard Playwright MCP tools are proxied:
browser_navigate - Navigate to URLbrowser_snapshot - Get page accessibility snapshotbrowser_click - Click elementbrowser_type - Type text into elementbrowser_screenshot - Take screenshotbrowser_tabs - Manage browser tabsbrowser_press_key - Press keyboard keybrowser_hover - Hover over elementbrowser_select_option - Select dropdown optionbrowser_evaluate - Run JavaScriptbrowser_wait_for - Wait for conditionbrowser_resize - Resize browser windowbrowser_handle_dialog - Handle alerts/confirmsbrowser_file_upload - Upload filesbrowser_console_messages - Get console logsbrowser_network_requests - Get network activitybrowser_navigate_back - Go backbrowser_close - Close browser@modelcontextprotocol/sdk - MCP SDK for server and client communicationzod - Schema validation@playwright/mcp - Spawned as child processes (installed via npx)MIT
Built by Claude Code for Everdijs
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"browser-pool-mcp": {
"command": "npx",
"args": []
}
}
}