
Security News
GPT-6 Astra Attempts Supply Chain Attacks Against Open Source Maintainers in Testing
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.
@vibebrowser/mcp
Advanced tools
MCP server for browser automation - the only solution supporting multiple AI agents (Claude, Cursor, VS Code) simultaneously controlling your Chrome browser
MCP server for Vibe AI Browser - the only browser automation tool that supports multiple AI agents simultaneously.
| Feature | Vibe MCP | Playwright MCP | BrowserMCP |
|---|---|---|---|
| Multi-Agent Support | Yes | No | No |
| Uses Your Browser Profile | Yes | No | No |
| Logged-In Sessions | Yes | No | No |
| No Separate Browser | Yes | No | No |
| Local & Private | Yes | Yes | Partial |
| Content Script Based | Yes | No | No |
Vibe MCP is the only solution that allows multiple AI agents to control the same browser simultaneously. Run Claude Desktop, Cursor, VS Code Copilot, and OpenCode all at once - they all share control of your browser through our relay architecture.
Claude Desktop Cursor VS Code OpenCode
| | | |
v v v v
[vibebrowser-mcp] [vibebrowser-mcp] [vibebrowser-mcp] [vibebrowser-mcp]
| | | |
+------------------+----------------+---------------+
|
v
[Relay Daemon] <-- Auto-spawned, handles multiplexing
|
v
[Vibe Extension]
|
v
[Your Chrome]
Competitors like Playwright MCP and BrowserMCP fail when you try to run multiple agents - they get port conflicts or connection errors. Vibe MCP just works.
--devtools to force chrome-devtools-only modeInstall 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.json{
"mcpServers": {
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp"]
}
}
}
Restart Claude Desktop after saving.
{
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp"]
}
}
Or edit ~/.cursor/mcp.json directly.
Add to your VS Code settings.json:
{
"github.copilot.chat.mcpServers": {
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp"]
}
}
}
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp"]
}
}
}
Add to your .opencode/config.json:
{
"mcp": {
"servers": {
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp"]
}
}
}
}
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp"]
}
}
}
Add to your Codex configuration:
{
"mcp": {
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp"]
}
}
}
Use the shortest direct package invocation for the MCP server:
npx -y @vibebrowser/mcp@latest --help
npx -y @vibebrowser/mcp@latest start --transport http
npx -y @vibebrowser/mcp@latest openclaw --remote "$VIBE_REMOTE_UUID"
Backward-compatible aliases still work when you need explicit binaries:
npx -y -p @vibebrowser/mcp@latest vibebrowser-mcp --help
npx -y -p @vibebrowser/mcp@latest vibe-mcp --help
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. Chrome DevTools
fallback tools are exposed only when extension is unavailable/disconnected.
Pass --devtools to either CLI to bypass relay/extension routing and use only
the chrome-devtools backend.
| 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):
Claude / Cursor / VS Code (stdio)
│
▼
[vibebrowser-mcp]
│ ws://127.0.0.1:19888
▼
Local Relay (auto-spawned)
│ ws://127.0.0.1:19889
▼
Vibe Extension (Chrome)
vibebrowser-mcp connects to the local relay on port 1988819889When multiple agents connect, Vibe MCP automatically spawns a relay daemon:
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.
VIBE_REMOTE_UUID="2d2f60a1-2031-4279-aa25-358f2c5b6f84"
VIBE_REMOTE_URL="wss://relay.api.vibebrowser.app/2d2f60a1-2031-4279-aa25-358f2c5b6f84"
npx -y @vibebrowser/mcp@latest start --transport http --remote "$VIBE_REMOTE_UUID"
npx -y @vibebrowser/mcp@latest start --transport http --remote "$VIBE_REMOTE_URL"
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:
VIBE_REMOTE_UUID="2d2f60a1-2031-4279-aa25-358f2c5b6f84"
VIBE_REMOTE_URL="wss://relay.api.vibebrowser.app/2d2f60a1-2031-4279-aa25-358f2c5b6f84"
PUBLIC_MCP_URL="https://browser-bridge.example.com/mcp"
npx -y @vibebrowser/mcp@latest openclaw --remote "$VIBE_REMOTE_UUID" --public-url "$PUBLIC_MCP_URL"
npx -y @vibebrowser/mcp@latest openclaw --remote "$VIBE_REMOTE_URL" --public-url "$PUBLIC_MCP_URL"
You can print the exact OpenClaw-friendly setup with:
VIBE_REMOTE_UUID="2d2f60a1-2031-4279-aa25-358f2c5b6f84"
VIBE_REMOTE_URL="wss://relay.api.vibebrowser.app/2d2f60a1-2031-4279-aa25-358f2c5b6f84"
npx -y @vibebrowser/mcp@latest openclaw --remote "$VIBE_REMOTE_UUID"
npx -y @vibebrowser/mcp@latest openclaw --remote "$VIBE_REMOTE_URL"
Use --remote <uuid> with the default public relay, or --remote <full-ws-url> when you need an explicit relay endpoint.
For direct browser CLI checks, use @vibebrowser/cli:
VIBE_REMOTE_UUID="2d2f60a1-2031-4279-aa25-358f2c5b6f84"
VIBE_REMOTE_URL="wss://relay.api.vibebrowser.app/2d2f60a1-2031-4279-aa25-358f2c5b6f84"
npx @vibebrowser/cli --remote "$VIBE_REMOTE_UUID" --json status
npx @vibebrowser/cli --remote "$VIBE_REMOTE_URL" --json status
--remote <uuid> uses the default public relay. --remote <full-ws-url> targets an explicit relay endpoint.
For the full walkthrough, see docs/openclaw-local-browser.md.
@vibebrowser/cli mirrors the OpenClaw browser CLI shape for the real local-browser path:
npx @vibebrowser/cli sessions
VIBE_REMOTE_UUID="2d2f60a1-2031-4279-aa25-358f2c5b6f84"
VIBE_REMOTE_URL="wss://relay.api.vibebrowser.app/2d2f60a1-2031-4279-aa25-358f2c5b6f84"
npx @vibebrowser/cli --remote "$VIBE_REMOTE_UUID" status
npx @vibebrowser/cli --remote "$VIBE_REMOTE_URL" tabs
npx @vibebrowser/cli --remote "$VIBE_REMOTE_UUID" open https://example.com
npx @vibebrowser/cli --remote "$VIBE_REMOTE_URL" snapshot
npx @vibebrowser/cli --remote "$VIBE_REMOTE_UUID" click 12
npx @vibebrowser/cli --remote "$VIBE_REMOTE_URL" type 23 "hello" --submit
npx @vibebrowser/cli --devtools status
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 commands@vibebrowser/cli 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 @vibebrowser/cli sessions lists connected local browser sessions.npx @vibebrowser/cli --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 take_snapshot with format: 'markdown' — 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 take_snapshot with format: 'aria' — 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.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):
--remote@vibebrowser/cli 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.
npx -y @vibebrowser/mcp@latest serve qwen3.5
That's it. Works on macOS, Linux, and Windows.
brew, curl, or winget)ollama serve in the backgroundnpx -y @vibebrowser/mcp@latest serve qwen3.5 # Best overall for agentic tasks
npx -y @vibebrowser/mcp@latest serve llama4 # Strong general reasoning
npx -y @vibebrowser/mcp@latest serve deepseek-r1 # Reasoning chains
npx -y @vibebrowser/mcp@latest serve mistral # Lightweight & fast (7B)
npx -y @vibebrowser/mcp@latest serve <model> [options]
Options:
-p, --port <number> Ollama API port (default: 11434)
-y, --yes Skip install confirmation prompts
-d, --debug Enable debug logging
After serve completes, configure the extension:
ollamaqwen3.5)The extension connects to http://localhost:11434/v1 automatically.
npx -y @vibebrowser/mcp@latest --help
npx @vibebrowser/cli --help
# MCP server (default)
npx -y @vibebrowser/mcp@latest [start] [options]
-p, --port <number> WebSocket port for local relay (agent) connection (default: 19888)
-d, --debug Enable debug logging
--transport <mode> MCP transport to expose: stdio or http (default: stdio)
--host <host> Host to bind the HTTP server to (default: 127.0.0.1)
--http-port <number> Port for streamable HTTP MCP transport (default: 8788)
--http-path <path> Path for streamable HTTP MCP transport (default: /mcp)
--allow-host <host> Allowed host header for HTTP transport (repeatable)
-r, --remote <uuid-or-url> Extension UUID, or full ws(s) remote URL
--devtools Use only chrome-devtools backend (bypasses extension relay)
# MCP server tool
set_remote { "url": "wss://relay.api.vibebrowser.app/<extension-uuid>" }
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.
# OpenClaw helper
VIBE_REMOTE_UUID="2d2f60a1-2031-4279-aa25-358f2c5b6f84"
VIBE_REMOTE_URL="wss://relay.api.vibebrowser.app/2d2f60a1-2031-4279-aa25-358f2c5b6f84"
PUBLIC_MCP_URL="https://browser-bridge.example.com/mcp"
npx -y @vibebrowser/mcp@latest openclaw --remote "$VIBE_REMOTE_UUID" --public-url "$PUBLIC_MCP_URL"
npx -y @vibebrowser/mcp@latest openclaw --remote "$VIBE_REMOTE_URL" --public-url "$PUBLIC_MCP_URL"
# OpenClaw-compatible browser CLI
npx @vibebrowser/cli --remote "$VIBE_REMOTE_UUID" status
npx @vibebrowser/cli --remote "$VIBE_REMOTE_URL" status --wait-for-extension --wait-timeout 10000
npx @vibebrowser/cli --remote "$VIBE_REMOTE_UUID" tabs
npx @vibebrowser/cli --remote "$VIBE_REMOTE_URL" snapshot --json
npx @vibebrowser/cli --remote "$VIBE_REMOTE_UUID" click 12
npx @vibebrowser/cli --remote "$VIBE_REMOTE_URL" type 23 "hello" --submit
npx @vibebrowser/cli --devtools tabs
# Local LLM server
MODEL="qwen3.5"
npx -y @vibebrowser/mcp@latest serve "$MODEL"
-p, --port <number> Ollama API port (default: 11434)
-y, --yes Skip confirmation prompts
-d, --debug Enable debug logging
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:
{
"mcpServers": {
"vibe": {
"command": "npx",
"args": ["-y", "@vibebrowser/mcp", "--debug"]
}
}
}
git clone https://github.com/VibeTechnologies/vibe-mcp.git
cd vibe-mcp
npm install
npm run build
node dist/cli.js --debug
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
FAQs
MCP server that drives your real, logged-in Chrome from any MCP client - including agents on a remote machine, with no inbound port open
The npm package @vibebrowser/mcp receives a total of 92 weekly downloads. As such, @vibebrowser/mcp popularity was classified as not popular.
We found that @vibebrowser/mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.

Product
Socket can now send alerts and supply chain attack notifications to Microsoft Teams, with filters that route the right updates to each channel.

Security News
pnpm 12 rewrites the package manager in Rust, cutting install times by up to 90% while preserving pnpm 11 workflows and lockfiles.