Featured

Deploy OpenClaw in 60 seconds β€” 20% off logoDeploy OpenClaw in 60 seconds β€” 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger β†’
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger β†’
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free β†’
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now β†’
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data β€” no proxies, no parsers, no maintenance.

Start building free β†’
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it β€” secured from day one.

Get it set up for you β†’
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free β†’
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here β†’

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

claude mcp add zen -- npx -y zen-mcp

Summary

sh6drack/zen-mcp MCP server](https://glama.ai/mcp/servers/sh6drack/zen-mcp/badges/score.svg)](https://glama.ai/mcp/servers/sh6drack/zen-mcp) πŸ“‡ 🏠 - Zen Browser automation via WebDriver BiDi.

Connect from your MCP client

One-click install

Add this server to your editor with a single click. Fill in any required credentials afterward.

Claude Code

Run this once and Claude Code registers the server for you:

claude mcp add zen -- npx -y zen-mcp

Claude Desktop

Add this to claude_desktop_config.json under Settings β†’ Developer β†’ Edit Config:

{
  "mcpServers": {
    "zen": {
      "command": "npx",
      "args": [
        "-y",
        "zen-mcp"
      ],
      "env": {
        "ZEN_DEBUG_PORT": "<ZEN_DEBUG_PORT>"
      }
    }
  }
}

Cursor

Add this to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "zen": {
      "command": "npx",
      "args": [
        "-y",
        "zen-mcp"
      ],
      "env": {
        "ZEN_DEBUG_PORT": "<ZEN_DEBUG_PORT>"
      }
    }
  }
}

Cline and other MCP clients

Most MCP clients accept the standard mcpServers JSON block:

{
  "mcpServers": {
    "zen": {
      "command": "npx",
      "args": [
        "-y",
        "zen-mcp"
      ],
      "env": {
        "ZEN_DEBUG_PORT": "<ZEN_DEBUG_PORT>"
      }
    }
  }
}

Codex CLI

Register the server with OpenAI's Codex CLI β€” run this once, or add the equivalent block to ~/.codex/config.toml:

codex mcp add zen --env ZEN_DEBUG_PORT=<ZEN_DEBUG_PORT> -- npx -y zen-mcp

# or add to ~/.codex/config.toml:
[mcp_servers.zen]
command = "npx"
args = ["-y", "zen-mcp"]
[mcp_servers.zen.env]
ZEN_DEBUG_PORT = "<ZEN_DEBUG_PORT>"

OpenClaw

OpenClaw reads MCP servers from the mcp.servers section of ~/.openclaw/openclaw.json (managed via `openclaw mcp add` or the mcporter skill):

{
  "mcp": {
    "servers": {
      "zen": {
        "command": "npx",
        "args": [
          "-y",
          "zen-mcp"
        ],
        "env": {
          "ZEN_DEBUG_PORT": "<ZEN_DEBUG_PORT>"
        }
      }
    }
  }
}

Replace the <PLACEHOLDER> values with your own credentials β€” see the configuration table below.

Configuration

zen-mcp reads the following environment variable:

VariableRequired
ZEN_DEBUG_PORTOptional

README.md

zen-mcp

The first MCP server for Zen Browser. Automate Zen from Claude Code, Cursor, or any MCP client.

No Selenium. No Playwright. No browser drivers. Just WebSocket.

Setup (2 minutes)

1. Start Zen with remote debugging

/Applications/Zen.app/Contents/MacOS/zen --remote-debugging-port 9222

Pro tip: Add alias zen='open /Applications/Zen.app --args --remote-debugging-port 9222' to your shell config. Then just run zen.

2. Add to Claude Code

# Option A: npm (recommended)
npm install -g zen-mcp

# Option B: Clone
git clone https://github.com/sh6drack/zen-mcp.git && cd zen-mcp && npm install

Add to ~/.claude/mcp_servers.json:

{
  "mcpServers": {
    "zen-browser": {
      "command": "zen-mcp"
    }
  }
}

If you cloned instead of npm install, use "command": "node", "args": ["/absolute/path/to/zen-mcp/server.mjs"]

Add to ~/.claude/settings.json:

{
  "permissions": {
    "allow": ["mcp__zen-browser__*"]
  }
}

That's it. Start a new Claude Code session and the zen_* tools are available.

20 Tools

Browse

| Tool | What it does | |------|-------------| | zen_navigate | Go to a URL | | zen_list_pages | List all open tabs | | zen_select_page | Switch to a tab | | zen_new_tab | Open a new tab | | zen_close_tab | Close a tab |

See

| Tool | What it does | |------|-------------| | zen_snapshot | Page structure with selectors (filter: all/interactive/form) | | zen_screenshot | Capture a screenshot | | zen_get_page_text | Get page title, URL, and text | | zen_get_form_fields | List all form fields with labels and values |

Interact

| Tool | What it does | |------|-------------| | zen_click | Click an element | | zen_fill | Type into an input or textarea | | zen_select_option | Pick a dropdown option | | zen_check | Toggle a checkbox or radio | | zen_press_key | Keyboard input (Enter, Tab, Ctrl+A, etc.) | | zen_fill_form | Fill multiple fields at once | | zen_scroll | Scroll the page or to an element |

Utility

| Tool | What it does | |------|-------------| | zen_evaluate | Run JavaScript in the page | | zen_wait | Wait N milliseconds | | zen_wait_for | Wait for text or element to appear | | zen_reconnect | Force reconnect to Zen |

How It Works

Claude Code  ──stdio/MCP──>  zen-mcp  ──WebSocket/BiDi──>  Zen Browser

zen-mcp speaks WebDriver BiDi (W3C standard) directly over WebSocket. Form filling uses native value setters with input/change event dispatch so React, Vue, and Angular apps work correctly.

What Works Well

  • Navigation, clicking, form filling β€” rock solid, handles React/Vue/Angular
  • Screenshots and page reads β€” reliable content extraction
  • Tab management β€” open, close, switch between tabs
  • JavaScript evaluation β€” run any code in the page context
  • Keyboard input β€” shortcuts, Enter, Tab, modifier combos

Known Limitations

  • Zen inherits Firefox's WebDriver BiDi implementation, which is still maturing. Some advanced BiDi commands that work in Chrome may not be available yet.
  • Zombie sessions can only be cleared by restarting Zen (BiDi session.end is connection-scoped). zen-mcp detects this and tells you what to do.
  • No file upload or drag-and-drop support (BiDi spec limitation).

Built-in Reliability

  • Auto-reconnect with exponential backoff if WebSocket drops
  • Zombie session recovery when a previous client crashed
  • Connection retry (3 attempts with backoff)
  • Clean shutdown on SIGINT/SIGTERM to prevent orphaned sessions

Troubleshooting

| Problem | Fix | |---------|-----| | "Cannot connect to Zen Browser" | Start Zen with --remote-debugging-port 9222 | | "Maximum number of active sessions" | Restart Zen: killall zen && zen | | Connection keeps dropping | Use zen_reconnect to force a fresh connection |

Config

| Env Variable | Default | Description | |-------------|---------|-------------| | ZEN_DEBUG_PORT | 9222 | Zen's remote debugging port |

Requirements

Test

node test-e2e.mjs   # 21 tests, needs Zen running

License

MIT

See related servers & alternatives β†’

Related MCP servers

Browse all β†’

Related guides

Hand-picked reading to help you choose and use Browser & Scraping servers.