Drive your real, logged-in Chrome from any MCP client β even from a remote machine, no inbound port.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
MCP server for Vibe AI Browser β drive your real, logged-in Chrome from any MCP client, including agents running on a different machine with no inbound port open.
β οΈ Security β treat your relay URL/UUID like a password. A relay URL or extension UUID (
wss://relay.api.vibebrowser.app/<uuid>) grants live control of your browser session (read your tabs, take screenshots, read page content). Never share it, paste it into a chat with untrusted parties, or commit it to a repo. Every example UUID in this documentation is a non-routable placeholder (YOUR-EXTENSION-UUIDor00000000-0000-0000-0000-000000000000) β substitute your own secret value locally and keep it out of version control.
Paste the block below into your OpenClaw or Hermes agent. Replace the last line with your remote value β a UUID or a wss://relay.api.vibebrowser.app/<uuid> URL from the Vibe extension's Settings β AI Agent Control β Remote (internet) β Relay access. That's the only edit you make.
The browser-automation MCP space moved fast. Most of what used to differentiate us is now table stakes β so here is an honest scorecard. Where a competitor matches us, the column says Yes.
| Capability | Vibe MCP | Playwright MCP | Chrome DevTools MCP | Claude for Chrome | BrowserMCP |
|---|---|---|---|---|---|
| Uses your real profile / logged-in sessions | Yes | Yes (--extension) | Yes (own --user-data-dir) | Yes | Yes |
| No per-connection approval dialog | Yes | Yes (token) | Yes (dedicated profile only) | Yes | Yes |
| Real logged-in profile and no dialog, together | Yes | Yes | No β pick one | Yes | Yes |
| Multiple agents against one browser | Yes | Yes (--shared-browser-context) | Yes (--experimentalPageIdRouting) | No | No |
| Agent on another machine, no inbound port | Yes β extension dials out to a relay | No | No β needs an inbound debug port + forwarding | No | No |
| Works with any MCP client (Codex, OpenCode, Cursor, Hermes, OpenClaw) | Yes | Yes | Yes | No β Anthropic surfaces only | Yes |
Two rows are ours alone:
wss://relay.api.vibebrowser.app/<uuid>). Nothing listens on the user's machine, nothing is port-forwarded, and the agent can live in a pod, a cron job, or a chat bot. No competitor documents an extension-initiated outbound connection to a remote MCP server.--remote-debugging-port with a dedicated --user-data-dir β avoids the dialog by giving up your logged-in profile. So: skip the dialog, or use your real profile β not both.Also worth knowing:
debugger permission, and supports scheduled tasks β it is the closest competitor. But it only drives Anthropic's own surfaces (side panel, Claude Desktop connector, Cowork, Claude Code). There is no public API or MCP surface, so Codex, OpenCode, Hermes and OpenClaw cannot use it. Vibe MCP is agent-agnostic.Run Claude Desktop, Cursor, VS Code Copilot, and OpenCode at once β they share control of one browser through the relay, which multiplexes requests and routes each response back to the agent that asked.
127.0.0.1; only remote relay mode routes traffic through relay.api.vibebrowser.app--devtools to drive your real running Chrome directly over the DevTools Protocol (no extension required)Install the Vibe AI Browser extension in Chrome, Brave, or any Chromium browser:
Option A: Chrome Web Store (Recommended)
Option B: Developer Version
chrome://extensions, enable Developer ModeFor detailed instructions, see the installation guide.
Edit your Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonRestart Claude Desktop after saving.
Or edit ~/.cursor/mcp.json directly.
Add to your VS Code settings.json:
Edit ~/.codeium/windsurf/mcp_config.json:
Add to your .opencode/config.json:
Add to ~/.gemini/settings.json:
All three share one config file: ~/.codex/config.toml. Configure once, use everywhere.
Easiest β let Codex write the entry:
Or add the table to ~/.codex/config.toml by hand (Codex uses TOML, not JSON):
In the ChatGPT desktop app you can also use the UI: Settings β MCP servers β Add server, choose STDIO, command npx, args -y @vibebrowser/mcp, then Restart.
Verify with codex mcp list, or type /mcp in the Codex TUI or the desktop composer.
ChatGPT on the web does not read local Codex config, so a local MCP server like Vibe is not available there.
Use the shortest direct package invocation for the MCP server:
Backward-compatible aliases still work when you need explicit binaries:
Everything above assumes the client can spawn a local process. Hosted assistants cannot: Claude on the web / in Cowork / on mobile, and ChatGPT on the web, run in the vendor's cloud with no access to your machine. They accept a remote MCP server URL and nothing else β no command, no arguments, and no custom request headers.
For those, skip @vibebrowser/mcp entirely. The extension alone is enough:
Find <your-extension-uuid> in the extension: Vibe icon β Settings β Agent
connection URL. It is the same UUID the CLI takes as
--remote wss://relay.api.vibebrowser.app/<uuid>.
Where to paste it:
| Client | Where |
|---|---|
| Claude (web, Cowork, mobile, Desktop) | Settings β Connectors β Add custom connector |
| ChatGPT (web) | Settings β Connectors β developer mode |
Custom connectors are a paid-plan feature in both products.
The relay also accepts the UUID as an X-Remote-Session or
Authorization: Bearer header on a bare POST /mcp. Use the header form from
anything that can send one (Codex CLI, scripts) β it keeps the credential out
of URLs, logs, and browser history. The path form exists specifically for the
UIs that cannot send a header.
Two things this path costs you, stated plainly:
127.0.0.1. On the remote-connector path they
traverse relay.api.vibebrowser.app, because the assistant is in the
vendor's cloud and has no other route to your browser. If you need
on-device-only, use a desktop client with the local server instead.If the extension is not connected, vibebrowser-mcp can optionally fall back to
chrome-devtools-mcp (started in --autoConnect mode) when that package is installed.
This fallback runs once in the shared local relay daemon (multi-agent safe), so
both vibebrowser-mcp and vibebrowser-cli use the same backend instance.
When extension is connected, extension tools are authoritative.
--devtools mode (drive your real Chrome over CDP)Pass --devtools to either CLI to bypass relay/extension routing entirely and
drive your real running Chrome directly over the Chrome DevTools Protocol.
This backend (ported from the chrome-use skill) reads Chrome's
DevToolsActivePort file and autoConnects to your live profile β no extension,
no external MCP server, zero extra dependencies. Requires Chrome 144+; the
permission dialog fires once per profile.
--devtools exposes a focused tool set: navigate, snapshot (accessibility
tree with @eN refs), click, fill, type, press_key, hover, scroll,
screenshot, eval, get_text, get_url, get_title, and tab management
(list_tabs, new_tab, select_tab, close_tab). Use snapshot to get
@eN element refs, then pass them as selectors to click/fill/type.
Override the Chrome profile/channel with VIBE_CHROME_USER_DATA_DIR and
VIBE_CHROME_CHANNEL (stable | canary | beta | dev).
Not yet covered by --devtools v1 (addable later as more CDP domains are wired):
network request inspection, console logs, performance traces, Lighthouse, memory
snapshots, device emulation, dialog handling, file upload, and drag.
| Tool | Description |
|---|---|
navigate_to_url | Navigate to any URL |
go_back / go_forward | Browser history navigation |
click | Click elements on the page |
type / fill | Enter text into inputs |
scroll | Scroll the page |
take_screenshot | Capture screenshots |
get_page_content | Extract page text/HTML |
get_tabs / create_new_tab / switch_to_tab / close_tab | Tab management |
keyboard_shortcut | Press keyboard combinations |
web_search | Search the web |
Default local mode (no flags):
vibebrowser-mcp connects to the local relay on port 1988819889Don't conflate them β the transport to the MCP server is configurable, the transport to the extension is not.
| Leg | Protocol | Configurable? |
|---|---|---|
MCP client β vibebrowser-mcp | stdio or streamable HTTP | Yes β --transport stdio|http |
vibebrowser-mcp β relay β extension | WebSocket only | No |
Streamable HTTP lets a remote or hosted agent β one that can't spawn a stdio subprocess β talk to the server over a URL:
Defaults: --host 127.0.0.1, --http-port 8788, --http-path /mcp. Add
--allow-host <host> (repeatable) if you front it with a proxy or bind it
beyond localhost.
When multiple agents connect, Vibe MCP automatically spawns a relay daemon:
β οΈ Security: The
--remotevalue below is a live credential β a relay URL/UUID grants full control of the target browser session. It is the sole bearer credential (there is no second-factor token). Treat it like a password: keep it secret, never commit it or paste it into logs, and if it leaks, regenerate it in the Vibe extension Settings.
If your agent runs in the cloud but you want it to control the user's real local browser, run vibebrowser-mcp in HTTP mode and connect it to the Vibe extension in remote relay mode. Pass either the extension UUID or the full WebSocket relay URL to --remote.
This exposes a local MCP endpoint at http://127.0.0.1:8788/mcp by default.
When OpenClaw runs on a different machine (for example cloud-hosted), provide a reachable URL:
You can print the exact OpenClaw-friendly setup with:
Use --remote <uuid> with the default public relay, or --remote <full-ws-url> when you need an explicit relay endpoint. The UUID is the only credential β never share it, log it, or paste it into an untrusted chat.
For direct browser CLI checks, always use npx -y @vibebrowser/cli@latest:
--remote <uuid> uses the default public relay. --remote <full-ws-url> targets an explicit relay endpoint. No second-factor secret is needed or accepted β the UUID alone authorizes the session.
For the full walkthrough, see docs/openclaw-local-browser.md.
npx -y @vibebrowser/cli@latest mirrors the OpenClaw browser CLI shape for the real local-browser path:
Use the MCP package for MCP server workflows and the CLI package for direct browser control:
vibebrowser-mcp for MCP server, HTTP bridge, and helper commandsnpx -y @vibebrowser/cli@latest for OpenClaw-inspired browser control against the real Vibe-connected session@vibebrowser/cli accepts the OpenClaw-style --browser-profile flag for compatibility and supports --json for machine-readable output. Unlike OpenClaw's managed openclaw browser profile, this CLI always targets the real Vibe-connected browser session.
Local-session selection:
npx -y @vibebrowser/cli@latest sessions lists connected local browser sessions.npx -y @vibebrowser/cli@latest --session <id> ... targets a specific local session.--session is omitted in local mode, the CLI uses the first connected session.--remote <uuid> to use the default public relay or --remote <full-ws-url> to use an explicit relay endpoint.Snapshot behavior is tool-only (no legacy snapshot RPC shortcut):
snapshot (default, --format ai) resolves via the take_md_snapshot tool β uses the content script's in-page markdown extractor. Fast and readable, but may return empty for background tabs or complex SPAs (Notion, Gmail) where the content script is unreachable or layout is not computed.snapshot --format aria resolves via the take_a11y_snapshot tool β uses Chrome DevTools Protocol Accessibility.getFullAXTree directly. Reliable for all tabs including background tabs and SPAs. Use this as a fallback when the default format returns empty or only a page title.This keeps CLI behavior aligned with extension-supported tools and ensures page targeting works consistently with --page-id/--pageId.
For navigation-style operations, responses now include page content when page state changes:
open / navigate include pageContent in JSON output.Use the single canonical copy-paste prompt at the top of this README:
Install prompt for AI agents (OpenClaw / Hermes).
It installs the vibebrowser skill, saves your remote so you only give it once, and proves
control of your real Chrome.
For a deeper skill definition (when to prefer this over a managed/headless browser, the remote-recall rules, selector/snapshot guidance), install openclaw/vibebrowser/SKILL.md into the agent's skills directory.
There are two ways to use Vibe with OpenClaw:
Option A: Cloud OpenClaw controlling local browser
If OpenClaw runs in the cloud but you want it to control your local browser:
vibebrowser-mcp openclaw --remote "$VIBE_REMOTE_UUID" [--public-url "$PUBLIC_MCP_URL"] or vibebrowser-mcp openclaw --remote "$VIBE_REMOTE_URL" [--public-url "$PUBLIC_MCP_URL"]Option B: OpenClaw skill for local agents
For OpenClaw agents that need your real browser context (logged-in sessions, existing tabs):
--remotenpx -y @vibebrowser/cli@latest commands in your agent promptsThe skill is located at openclaw/vibebrowser/SKILL.md and provides:
status, tabs, snapshot, click, type, etc.)resize, upload, dialog)--json output for machine parsingSee docs/openclaw-local-browser.md for the complete walkthrough.
serve CommandRun a local LLM with one command β no cloud API keys required. Automatically installs Ollama, downloads the model, and starts serving an OpenAI-compatible API.
That's it. Works on macOS, Linux, and Windows.
brew, curl, or winget)ollama serve in the backgroundAfter serve completes, configure the extension:
ollamaqwen3.5)The extension connects to http://localhost:11434/v1 automatically.
The set_remote MCP server tool hot-reconnects the running MCP server to a different remote relay URL. It is an MCP tool, not a browser CLI subcommand. The URL's UUID is the only credential β never place it in logs shared with untrusted parties; regenerate it in extension Settings if exposed.
vibebrowser-mcp in HTTP mode instead of stdioRemote mode and connected127.0.0.1; use openclaw --public-url with a reachable host.Enable debug logging to diagnose issues:
browser automation, mcp server, model context protocol, ai browser control, claude desktop browser, cursor browser automation, web automation, chrome automation, ai agent browser, multi-agent browser control, playwright alternative, puppeteer alternative, browser mcp, web scraping ai, ai web agent
Apache-2.0
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/vibe-mcp-real-chrome-remotely)<a href="https://allmcps.com/mcp/vibe-mcp-real-chrome-remotely"><img src="https://allmcps.com/api/badge/vibe-mcp-real-chrome-remotely?style=directory" alt="Vibe MCP β Real Chrome, Remotely on AllMCPs" /></a>