Browser Harness MCP Server

August 31, 2026 · View on GitHub

The browser-harness-mcp command exposes browser_harness.helpers as MCP tools. It reuses the existing helper layer — no second CDP implementation and no changes inside src/browser_harness/.

Start

From any directory:

uvx --from 'browser-harness[mcp]' browser-harness-mcp

The server speaks MCP stdio and connects to the same local Chrome CDP endpoint (9222/9223) used by browser-harness. The daemon auto-starts on the first tool call.

Tools

The browser control helpers from browser_harness.helpers are exposed as MCP tools with a browser_ prefix:

  • browser_new_tab
  • browser_goto
  • browser_page_info
  • browser_click
  • browser_type
  • browser_fill
  • browser_press
  • browser_scroll
  • browser_screenshot
  • browser_list_tabs
  • browser_current_tab
  • browser_switch_tab
  • browser_close_tab
  • browser_ensure_real_tab
  • browser_wait
  • browser_wait_for_load
  • browser_wait_for_element
  • browser_js
  • browser_cdp
  • browser_upload_file
  • browser_http_get
  • browser_start_recording
  • browser_stop_recording

Every tool returns JSON text. On error the response is {"error": "..."} and the server process keeps running.

Example flow

  1. browser_new_tab(url="https://example.com")
  2. browser_wait_for_load()
  3. browser_screenshot() → returns path, width, height, size_bytes
  4. browser_page_info() → returns url, title, viewport/scroll/page size

Client configuration

Claude Code

claude mcp add browser-harness \
  uvx --from 'browser-harness[mcp]' browser-harness-mcp

Devin

devin mcp add -s project browser-harness -- \
  uvx --from 'browser-harness[mcp]' browser-harness-mcp

Cursor / OpenClaw / other MCP clients

{
  "mcpServers": {
    "browser-harness": {
      "command": "uvx",
      "args": [
        "--from",
        "browser-harness[mcp]",
        "browser-harness-mcp"
      ]
    }
  }
}

MCP Inspector

npx @modelcontextprotocol/inspector \
  uvx --from 'browser-harness[mcp]' browser-harness-mcp

From a repository checkout, uv run --extra mcp browser-harness-mcp runs the same packaged entry point against the current source.