@agent360/browser-mcp
v1.16.1
Published
Browser MCP — control your real Chrome from Claude Code. 29 tools, CAPTCHA solving, file upload, multi-session, human-in-the-loop.
Maintainers
Readme
Browser MCP by Agent360
Control your real Chrome from Claude Code — with your logins, cookies, and 2FA.

The only browser MCP with multi-session support (10 concurrent AI sessions), human-in-the-loop (2FA, CAPTCHA, credentials), and built-in provider integrations (Stripe, HubSpot, Slack, and 6 more). 29 tools total.
Install
npx @agent360/browser-mcp installThis copies the Chrome extension to ~/.browser-mcp/extension/ and configures Claude Code automatically.
Then load the extension in Chrome:
- Open
chrome://extensions - Enable Developer mode (top right)
- Click Load unpacked → select
~/.browser-mcp/extension/ - Restart Claude Code
That's it. 29 browser tools are now available in Claude Code.
Why This Over Playwright MCP / BrowserMCP?
| | Browser MCP | Playwright MCP | BrowserMCP.io |
|---|---|---|---|
| Browser | Your real Chrome | Headless (new session) | Your real Chrome |
| Logins/cookies | Already authenticated | Must log in every time | Already authenticated |
| Multi-session | 10 concurrent sessions with color-coded tab groups | Single session | Single session |
| Human-in-the-loop | browser_ask_user — 2FA, CAPTCHA, credential input | None | None |
| Provider integrations | 9 built-in (Stripe, HubSpot, Slack...) | None | None |
| CORS bypass | browser_fetch from extension background | N/A | Limited |
| Network monitoring | browser_wait_for_network via CDP | Built-in | None |
| CSP-strict sites | Chrome Debugger API throughout | Works (headless) | Limited |
| Custom dropdowns | Angular Material, React Select support | Works (headless) | Limited |
| Install | npx @agent360/browser-mcp install | npx @anthropic-ai/mcp-playwright | Manual clone |
29 Tools
Navigation & Content
| Tool | Description |
|------|-------------|
| browser_navigate | Navigate to URL (reuses tab, or new_tab=true) |
| browser_get_page_content | Get page text or HTML |
| browser_screenshot | Screenshot via Chrome Debugger (works even when tab isn't focused) |
| browser_execute_script | Run JavaScript in page context |
Interaction
| Tool | Description |
|------|-------------|
| browser_click | Click via CSS or text selector (text=Submit, button:text(Next)) |
| browser_fill | Fill input fields (works on CSP-strict sites) |
| browser_press_key | Keyboard events (Enter, Tab, Escape, modifiers) |
| browser_scroll | Scroll to element or by pixels |
| browser_wait | Wait for element to appear |
| browser_hover | Hover for tooltips/dropdowns |
| browser_select_option | Native <select> + custom dropdowns (Angular Material, React Select) |
| browser_handle_dialog | Accept/dismiss alert/confirm/prompt dialogs |
Tabs & Frames
| Tool | Description |
|------|-------------|
| browser_list_tabs | List session's tabs only |
| browser_switch_tab | Switch to tab by ID |
| browser_close_tab | Close tab (session-owned only) |
| browser_get_new_tab | Get most recently opened tab (OAuth popups) |
| browser_list_frames | List iframes on page |
| browser_select_frame | Execute JS in specific iframe |
Data & Network
| Tool | Description |
|------|-------------|
| browser_get_cookies | Get cookies for domain |
| browser_get_local_storage | Read localStorage |
| browser_fetch | HTTP request from extension (bypasses CORS) |
| browser_wait_for_network | Wait for specific API call to complete |
| browser_extract_token | Navigate to provider dashboard + extract API token |
CAPTCHA Solving
| Tool | Description |
|------|-------------|
| browser_solve_captcha | Detect and solve CAPTCHAs. Auto-detects reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha. Actions: detect, click_checkbox (auto-click, ~80% pass with Google login), click_grid (AI vision guided), ask_human (fallback) |
Human-in-the-Loop
| Tool | Description |
|------|-------------|
| browser_ask_user | Show overlay dialog for 2FA, CAPTCHA, credentials, or any user input |
Data
| Tool | Description |
|------|-------------|
| browser_get_cookies | Get cookies for a domain |
| browser_set_cookies | Set cookies for a domain |
| browser_get_local_storage | Read localStorage from page |
| browser_set_local_storage | Write localStorage values |
| browser_console_logs | Capture console.log/warn/error messages from page |
| browser_upload_file | Upload files to <input type="file"> via Chrome Debugger API (no dialog) |
Multi-Session Support
Each Claude Code conversation gets its own MCP server on a unique port (9876-9885). The Chrome extension connects to all active servers simultaneously.
Claude Session 1 ←(stdio)→ MCP :9876 ←(WS)→
Claude Session 2 ←(stdio)→ MCP :9877 ←(WS)→ Chrome Extension → Browser
Claude Session 3 ←(stdio)→ MCP :9878 ←(WS)→- Session isolation — each session gets a color-coded Chrome Tab Group
- Tab ownership — sessions can only see and control their own tabs
- Auto-cleanup — processes exit when Claude Code closes the conversation
Built-in Provider Integrations
browser_extract_token navigates to the provider's API settings page and guides token extraction:
| Provider | Token Format | Dashboard |
|----------|-------------|-----------|
| Stripe | sk_test_... / sk_live_... | stripe.com/apikeys |
| HubSpot | pat-... | app.hubspot.com |
| Slack | xoxb-... | api.slack.com/apps |
| Shopify | Admin API token | admin.shopify.com |
| Pipedrive | UUID | app.pipedrive.com |
| Calendly | JWT | calendly.com |
| Mailchimp | ...-us1 | admin.mailchimp.com |
| Google | OAuth Client | console.cloud.google.com |
| LinkedIn | Client ID/Secret | linkedin.com/developers |
Architecture
extension/
manifest.json # Manifest V3
background.js # Service worker — Chrome API dispatcher, session tab groups
offscreen.js # Persistent WebSocket bridge (multi-port scanning)
popup.html/js # Status UI — sessions, tabs, action log
mcp-server/
index.js # MCP server (stdio) + WebSocket client
tools.js # 29 tool definitions
bin/cli.js # Install CLIHow It Works
- Claude Code starts → spawns MCP server via stdio
- MCP server binds to first available port (9876-9885)
- Extension's offscreen document scans ports every 2s
- WebSocket connection established
- Commands flow: Claude Code → MCP → Extension → Chrome APIs
- Process auto-exits when Claude Code closes (stdin detection)
Auto-Updates
The MCP server runs via npx @agent360/browser-mcp@latest — always the latest version from npm. No manual git pulls needed.
To update the extension: npx @agent360/browser-mcp install (re-copies files), then reload in chrome://extensions.
Troubleshooting
"Chrome extension not connected"
- Check extension is loaded in
chrome://extensions - Click the extension popup → "Reconnect"
- Wait 2-3 seconds for port scan
Screenshot fails
- Uses Chrome Debugger API (works even when tab isn't focused)
- Falls back to
captureVisibleTabif debugger unavailable
Click doesn't work on SPA
- Try text selector:
browser_click("text=Submit") - Uses real mouse events via Chrome Debugger API automatically
Stale processes
- Processes auto-exit when Claude Code closes (stdin detection)
- Idle timeout: 4 hours without commands → auto-exit
- Manual cleanup:
lsof -i :9876-9885 | grep LISTEN
License
MIT — Agent360
