browser-control 0.2.1

CLI that manages browsers and exposes them over CDP/BiDi for agent-driven development. Includes an optional MCP server.
Documentation
# Child MCP Compatibility

Browser automation MCP servers fall into two categories: those that accept a remote CDP endpoint (and can be wrapped by the coordinator), and those that launch their own browser (and run as independent MCP entries alongside the coordinator).

## Works with `wrap` (connects to coordinator's CDP proxy)

These servers accept an external CDP endpoint. Use the `wrap` subcommand to inject the coordinator's proxy port.

### @playwright/mcp (Microsoft)

The most feature-complete browser automation MCP. Uses Playwright's accessibility-first approach.

| | |
|---|---|
| **Package** | [`@playwright/mcp`]https://www.npmjs.com/package/@playwright/mcp |
| **Protocol** | CDP (Chromium), native adapters (Firefox, WebKit) |
| **CDP flag** | `--cdp-endpoint` |
| **Browsers** | Chromium, Firefox, WebKit, Edge (via `--browser`) |
| **Note** | `--cdp-endpoint` only works with Chromium-family browsers. Firefox and WebKit require Playwright to launch its own browser. |

```json
{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": ["-y", "@anthropic-community/browser-coordinator-mcp"]
    },
    "playwright": {
      "command": "npx",
      "args": [
        "-y", "@anthropic-community/browser-coordinator-mcp",
        "wrap", "--",
        "npx", "-y", "@playwright/mcp@latest",
        "--cdp-endpoint={cdp_endpoint}"
      ]
    }
  }
}
```

### chrome-devtools-mcp (Google)

Google's official Chrome DevTools MCP. Exposes performance tracing, network inspection, and emulation tools that Playwright MCP doesn't have.

| | |
|---|---|
| **Package** | [`chrome-devtools-mcp`]https://www.npmjs.com/package/chrome-devtools-mcp |
| **Protocol** | CDP (via Puppeteer) |
| **CDP flag** | `--browser-url` (HTTP) or `--ws-endpoint` (WebSocket) |
| **Browsers** | Chrome only (stable, canary, beta, dev) |

```json
{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": ["-y", "@anthropic-community/browser-coordinator-mcp"]
    },
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y", "@anthropic-community/browser-coordinator-mcp",
        "wrap", "--",
        "npx", "-y", "chrome-devtools-mcp@latest",
        "--browser-url={cdp_endpoint}"
      ]
    }
  }
}
```

### Using both together

The coordinator, Playwright MCP, and Chrome DevTools MCP can all run simultaneously. Each child MCP connects to the same browser through the coordinator's stable CDP proxy.

```json
{
  "mcpServers": {
    "browser": {
      "command": "npx",
      "args": ["-y", "@anthropic-community/browser-coordinator-mcp"]
    },
    "playwright": {
      "command": "npx",
      "args": [
        "-y", "@anthropic-community/browser-coordinator-mcp",
        "wrap", "--",
        "npx", "-y", "@playwright/mcp@latest",
        "--cdp-endpoint={cdp_endpoint}"
      ]
    },
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "-y", "@anthropic-community/browser-coordinator-mcp",
        "wrap", "--",
        "npx", "-y", "chrome-devtools-mcp@latest",
        "--browser-url={cdp_endpoint}"
      ]
    }
  }
}
```

## Runs independently (launches own browser)

These servers don't accept a remote CDP endpoint. They manage their own browser lifecycle and run as separate MCP entries — no `wrap` needed.

### @angiejones/mcp-selenium

Community Selenium MCP by Angie Jones. Uses WebDriver Classic.

| | |
|---|---|
| **Package** | [`@angiejones/mcp-selenium`]https://www.npmjs.com/package/@angiejones/mcp-selenium |
| **Protocol** | WebDriver Classic |
| **Remote connect** | No |
| **Browsers** | Chrome, Firefox, Edge |

```json
{
  "mcpServers": {
    "selenium": {
      "command": "npx",
      "args": ["-y", "@angiejones/mcp-selenium"]
    }
  }
}
```

### @wdio/mcp (WebdriverIO)

Official WebdriverIO MCP. Uses WebDriver BiDi with Classic fallback. Supports mobile testing via Appium.

| | |
|---|---|
| **Package** | [`@wdio/mcp`]https://www.npmjs.com/package/@wdio/mcp |
| **Protocol** | WebDriver BiDi / Classic |
| **Remote connect** | No (desktop); yes for mobile via `APPIUM_URL` |
| **Browsers** | Chrome (desktop), iOS/Android (via Appium) |

```json
{
  "mcpServers": {
    "wdio": {
      "command": "npx",
      "args": ["-y", "@wdio/mcp"]
    }
  }
}
```

### @padenot/firefox-devtools-mcp (Mozilla)

Mozilla-endorsed Firefox DevTools MCP. The only MCP server with native Firefox support via WebDriver BiDi.

| | |
|---|---|
| **Package** | [`@padenot/firefox-devtools-mcp`]https://www.npmjs.com/package/@padenot/firefox-devtools-mcp |
| **Protocol** | WebDriver BiDi + Marionette fallback |
| **Remote connect** | No |
| **Browsers** | Firefox only |

```json
{
  "mcpServers": {
    "firefox": {
      "command": "npx",
      "args": ["-y", "@padenot/firefox-devtools-mcp", "--headless"]
    }
  }
}
```

### @modelcontextprotocol/server-puppeteer

The original reference Puppeteer MCP server. Archived as of May 2025, but still functional.

| | |
|---|---|
| **Package** | [`@modelcontextprotocol/server-puppeteer`]https://www.npmjs.com/package/@modelcontextprotocol/server-puppeteer |
| **Protocol** | CDP (via Puppeteer) |
| **Remote connect** | No |
| **Browsers** | Chrome / Chromium |
| **Status** | Archived — prefer `@playwright/mcp` or `chrome-devtools-mcp` |

```json
{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
    }
  }
}
```

## Cloud-hosted browsers

These MCP servers connect to cloud-managed browser instances. They don't use local browsers at all.

| Server | Package | Provider |
|--------|---------|----------|
| **Browserbase MCP** | [`@browserbasehq/mcp`]https://www.npmjs.com/package/@browserbasehq/mcp | Browserbase |
| **Hyperbrowser MCP** | [`hyperbrowser-mcp`]https://www.npmjs.com/package/hyperbrowser-mcp | Hyperbrowser |
| **Cloudflare Playwright MCP** | [`@cloudflare/playwright-mcp`]https://www.npmjs.com/package/@cloudflare/playwright-mcp | Cloudflare Workers |

These run their own infrastructure and don't interact with the coordinator.

## Browser protocol support

The coordinator's CDP reverse proxy is inherently Chromium-only. Here's why, and what the alternatives are for other browsers.

### Why only Chromium?

CDP (Chrome DevTools Protocol) is the only browser remote debugging protocol with broad MCP server support. The coordinator's proxy forwards raw TCP/WebSocket CDP connections — it doesn't understand or translate the protocol, just pipes bytes.

Firefox and Safari use different protocols that are incompatible with CDP:

| Browser | Protocol | Coordinator support | Child MCP support |
|---------|----------|--------------------|--------------------|
| Chrome, Edge, Chromium, Brave | CDP | Direct (CdpSession) | `@playwright/mcp`, `chrome-devtools-mcp` (via `wrap`) |
| Firefox | WebDriver BiDi | Direct (BidiSession, `--browser firefox`) | `@padenot/firefox-devtools-mcp` (standalone only) |
| Safari | SafariDriver (WebDriver) | Not supported | None mature — `lxman/safari-mcp-server` is experimental |
| WebKit (Playwright's) | Playwright internal protocol | Not supported | `@playwright/mcp --browser webkit` (standalone only) |

### Firefox

Firefox doesn't speak CDP but supports WebDriver BiDi natively (Firefox 129+). The coordinator now supports Firefox directly via `--browser firefox` or `coordinator_launch_browser({ browserType: "firefox" })`. When Firefox is active, the coordinator's own tools work via BiDi, but child MCPs (Playwright MCP, Chrome DevTools MCP) that require CDP will not work through the proxy.

For Firefox-specific DevTools features, `@padenot/firefox-devtools-mcp` can run as an independent MCP entry alongside the coordinator.

Playwright's `--browser firefox` launches a patched Firefox binary with Playwright's own protocol — it cannot connect to an existing Firefox instance.

### Safari / WebKit

Safari has no externally-accessible remote debugging protocol. Safari's Web Inspector Protocol is private and not designed for automation.

Playwright's `--browser webkit` launches a custom WebKit build, not real Safari. It's useful for testing WebKit rendering but not for controlling Safari.

For Safari testing, the community `lxman/safari-mcp-server` uses SafariDriver but is early-stage (macOS only, single session).

### Future: WebDriver BiDi

[WebDriver BiDi](https://w3c.github.io/webdriver-bidi/) is a W3C standard aiming to be the cross-browser successor to CDP. Chrome, Firefox, and Safari are all implementing it.

The coordinator already uses BiDi for Firefox support (navigate, evaluate JS, screenshot — the operations needed for `coordinator_*` tools). As BiDi matures across browsers, more operations could be unified under a single protocol. Playwright's BiDi support is still incomplete, but it's the direction the ecosystem is heading.