@vibebrowser/mcp 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,173 @@
1
+ ---
2
+ title: "Use Vibe Co-Pilot to Let Cloud OpenClaw Control Your Local Browser"
3
+ description: "How to connect a cloud OpenClaw agent to a user's local browser with the Vibe Co-Pilot extension, remote relay mode, and the new vibebrowser-mcp HTTP bridge."
4
+ date: "2026-03-15"
5
+ author: "Dzianis Vashchuk"
6
+ published: true
7
+ ---
8
+
9
+ If you are running OpenClaw in the cloud, one of the most useful upgrades is giving it access to a real browser.
10
+
11
+ But there are actually two different browser problems hiding inside that sentence:
12
+
13
+ - **tenant browser**: a browser that lives inside the hosted OpenClaw runtime
14
+ - **local browser**: the user's actual Chrome or Chromium profile on their own machine
15
+
16
+ Those are not the same product problem, and they should not use the same architecture.
17
+
18
+ For the tenant browser, the right answer is still the hosted browser stack inside the tenant.
19
+
20
+ For the user's local browser, the right answer is the Vibe Co-Pilot extension plus `vibebrowser-mcp` in remote relay mode.
21
+
22
+ That is what this setup enables.
23
+
24
+ ## The architecture that works
25
+
26
+ The flow looks like this:
27
+
28
+ ```text
29
+ Cloud OpenClaw agent
30
+ |
31
+ | MCP over HTTP
32
+ v
33
+ local vibebrowser-mcp bridge
34
+ |
35
+ | secure outbound relay connection
36
+ v
37
+ Vibe remote relay
38
+ |
39
+ v
40
+ Vibe Co-Pilot browser extension
41
+ |
42
+ v
43
+ User's local Chrome / Chromium browser
44
+ ```
45
+
46
+ The important point is that the browser still stays on the user's machine.
47
+
48
+ The cloud runtime does not need direct access to the user's laptop, an exposed CDP port, or a custom reverse tunnel into Chrome. The Vibe extension connects outward to the relay, and `vibebrowser-mcp` exposes a local MCP HTTP endpoint that OpenClaw can attach to.
49
+
50
+ ## Why we added HTTP mode to `vibebrowser-mcp`
51
+
52
+ Before this change, `vibebrowser-mcp` worked well for local MCP clients such as Claude Desktop, Cursor, OpenCode, and VS Code because they can launch an MCP server over stdio.
53
+
54
+ Cloud OpenClaw is different.
55
+
56
+ In OpenClawBot and similar hosted deployments, MCP servers are configured as URLs. That means a stdio-only MCP bridge is not enough. We needed `vibebrowser-mcp` to expose a proper network MCP endpoint.
57
+
58
+ So the missing piece was a streamable HTTP MCP transport.
59
+
60
+ That is what `vibebrowser-mcp start --transport http` now provides.
61
+
62
+ ## What to install
63
+
64
+ The user needs three pieces:
65
+
66
+ 1. the Vibe Co-Pilot browser extension
67
+ 2. `vibebrowser-mcp` on the same machine as the browser
68
+ 3. an OpenClaw MCP server entry pointing at the local `vibebrowser-mcp` HTTP endpoint
69
+
70
+ ## Step 1: install the Vibe extension
71
+
72
+ Install the Vibe Co-Pilot extension from `https://vibebrowser.app`.
73
+
74
+ Then open the extension settings and enable `MCP External`.
75
+
76
+ For cloud OpenClaw, choose **Remote** mode and copy the **Extension UUID**.
77
+
78
+ ## Step 2: start the local HTTP bridge
79
+
80
+ On the same machine where the browser extension is installed, run:
81
+
82
+ ```bash
83
+ npx -y --package @vibebrowser/mcp vibebrowser-mcp start --transport http --remote <extension-uuid>
84
+ ```
85
+
86
+ By default this starts a local MCP endpoint at:
87
+
88
+ ```text
89
+ http://127.0.0.1:8788/mcp
90
+ ```
91
+
92
+ If you want the exact OpenClaw-friendly snippet, you can also run:
93
+
94
+ ```bash
95
+ npx -y --package @vibebrowser/mcp vibebrowser-mcp openclaw --remote <extension-uuid>
96
+ ```
97
+
98
+ That prints:
99
+
100
+ - the bridge command
101
+ - the MCP URL to register in OpenClaw
102
+ - a JSON snippet you can paste into config
103
+
104
+ For operator workflows and OpenClaw skills, you can also use the OpenClaw-compatible browser CLI surface directly:
105
+
106
+ ```bash
107
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote <extension-uuid> status
108
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote <extension-uuid> tabs
109
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote <extension-uuid> snapshot --json
110
+ ```
111
+
112
+ That CLI accepts the same style of verbs and flags OpenClaw operators expect, but it still targets the Vibe real-browser path rather than an isolated OpenClaw-managed browser profile.
113
+
114
+ ## Step 3: add the MCP server to OpenClaw
115
+
116
+ Register the bridge URL in OpenClaw:
117
+
118
+ ```json
119
+ {
120
+ "mcpServers": {
121
+ "vibe": {
122
+ "url": "http://127.0.0.1:8788/mcp"
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ Once that is configured, the cloud OpenClaw agent can use the Vibe browser tools through the local bridge.
129
+
130
+ ## When to use this setup
131
+
132
+ This architecture is the right fit when the agent needs the **user's own browser context**, for example:
133
+
134
+ - websites where the user is already logged in locally
135
+ - workflows that depend on cookies or browser extensions
136
+ - tasks on tabs the user already opened
137
+ - browsing in the exact local profile the user uses every day
138
+
139
+ ## When not to use this setup
140
+
141
+ Do **not** use this as a replacement for the hosted tenant browser.
142
+
143
+ If the user wants a browser that lives inside the OpenClaw tenant itself, keep using the existing tenant browser stack. That remains the correct architecture for hosted cloud browsing because it is reproducible, self-contained, and lives entirely inside the tenant runtime.
144
+
145
+ So the rule is simple:
146
+
147
+ - **tenant browser in cloud** -> tenant `/browser` stack
148
+ - **user's real local browser** -> Vibe extension + relay + `vibebrowser-mcp` HTTP bridge
149
+
150
+ ## Why this split matters
151
+
152
+ Trying to force one model to solve both cases creates product confusion.
153
+
154
+ The tenant browser is about a cloud runtime having its own browser environment.
155
+
156
+ The Vibe extension path is about letting a cloud agent borrow the user's real browser safely and intentionally.
157
+
158
+ They sound similar from the outside, but they optimize for different things:
159
+
160
+ - tenant browser -> repeatability, isolation, hosted runtime control
161
+ - local browser bridge -> real sessions, real profile, real user context
162
+
163
+ That distinction is what made the implementation plan finally click.
164
+
165
+ ## What this unlocks
166
+
167
+ With this bridge, OpenClaw users can keep the intelligence and orchestration in the cloud while still letting the agent act inside the browser they already use.
168
+
169
+ That is a much better fit than asking users to move their life into a fresh cloud browser profile just to get browser automation.
170
+
171
+ The end result is simple:
172
+
173
+ **OpenClaw stays in the cloud. The browser stays local. Vibe MCP connects them cleanly.**
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: vibe-local-browser
3
+ description: Control the user's local browser through the Vibe Browser CLI bridge. Use this when the task must run against the user's real Vibe-connected browser session, tabs, cookies, or installed extensions.
4
+ metadata:
5
+ {
6
+ "openclaw":
7
+ {
8
+ "emoji": "🌐",
9
+ "requires":
10
+ {
11
+ "bins": ["npx"],
12
+ "env": ["VIBE_EXTENSION_UUID"],
13
+ },
14
+ },
15
+ }
16
+ ---
17
+
18
+ # Vibe Local Browser
19
+
20
+ Use the `vibebrowser-cli` command when the user wants OpenClaw to drive their real local browser through the Vibe extension.
21
+
22
+ Prefer this skill when the task depends on:
23
+
24
+ - the user's real browser profile
25
+ - existing logged-in sessions
26
+ - local tabs already open on the user's machine
27
+ - browser extensions or stored site state
28
+
29
+ Do not use this skill for OpenClaw tenant cloud browsing.
30
+
31
+ ## Required environment
32
+
33
+ The shell running OpenClaw must have:
34
+
35
+ ```bash
36
+ export VIBE_EXTENSION_UUID="<extension-uuid>"
37
+
38
+ # Optional if you use a custom relay URL.
39
+ # export VIBE_RELAY_URL="wss://relay.api.vibebrowser.app"
40
+
41
+ # Optional compatibility label. Vibe always targets the real local browser path.
42
+ # export VIBE_BROWSER_PROFILE="user"
43
+ ```
44
+
45
+ ## Command form
46
+
47
+ Prefer this exact command pattern:
48
+
49
+ ```bash
50
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json <subcommand> ...
51
+ ```
52
+
53
+ If the package is already installed locally, you can use:
54
+
55
+ ```bash
56
+ vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json <subcommand> ...
57
+ ```
58
+
59
+ If you set `VIBE_RELAY_URL`, append:
60
+
61
+ ```bash
62
+ --relay-url "$VIBE_RELAY_URL"
63
+ ```
64
+
65
+ ## Safe operating rules
66
+
67
+ - Prefer `browser tabs` or `browser snapshot` before acting.
68
+ - Use `browser open <url>` to create a fresh page when possible.
69
+ - Use `browser evaluate --fn ...` only for simple compatibility-safe expressions such as:
70
+ - `() => 21 + 21`
71
+ - `() => document.title`
72
+ - `() => location.href`
73
+ - `() => location.hostname`
74
+ - `() => location.origin`
75
+ - Avoid destructive actions unless the user explicitly asks.
76
+ - If the CLI returns a connection error, report it clearly and stop guessing.
77
+ - The OpenClaw-compatible `--browser-profile` flag is accepted by the CLI, but Vibe always targets the user's real browser path rather than an isolated managed browser.
78
+
79
+ ## Common commands
80
+
81
+ Status:
82
+
83
+ ```bash
84
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json status
85
+ ```
86
+
87
+ List pages:
88
+
89
+ ```bash
90
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json tabs
91
+ ```
92
+
93
+ Open a new page:
94
+
95
+ ```bash
96
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json open https://example.com
97
+ ```
98
+
99
+ Take the default AI snapshot:
100
+
101
+ ```bash
102
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json snapshot
103
+ ```
104
+
105
+ Take the ARIA / interactive snapshot:
106
+
107
+ ```bash
108
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json snapshot --format aria --interactive
109
+ ```
110
+
111
+ Click and type using OpenClaw-style refs:
112
+
113
+ ```bash
114
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json click 12
115
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json type 23 "hello" --submit
116
+ ```
117
+
118
+ Evaluate JavaScript:
119
+
120
+ ```bash
121
+ npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json evaluate --fn '() => document.title'
122
+ ```
123
+
124
+ ## Success criteria
125
+
126
+ A successful run usually looks like:
127
+
128
+ 1. confirm the relay is reachable
129
+ 2. list current tabs or create a fresh one
130
+ 3. navigate or snapshot if needed
131
+ 4. evaluate `document.title` or `location.href` to verify the result
132
+ 5. summarize what happened for the user
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@vibebrowser/mcp",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "type": "module",
5
5
  "description": "MCP server for browser automation - the only solution supporting multiple AI agents (Claude, Cursor, VS Code) simultaneously controlling your Chrome browser",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "bin": {
9
9
  "vibebrowser-mcp": "./dist/cli.js",
10
- "vibe-mcp": "./dist/cli.js"
10
+ "vibe-mcp": "./dist/cli.js",
11
+ "vibebrowser-cli": "./dist/browser-main.js"
11
12
  },
12
13
  "publishConfig": {
13
14
  "access": "public"
@@ -17,6 +18,9 @@
17
18
  "dev": "tsc --watch",
18
19
  "start": "node dist/cli.js",
19
20
  "prepublishOnly": "npm run build",
21
+ "test": "npm run test:e2e:relay-race && npm run test:e2e:http && npm run test:e2e:browser-cli",
22
+ "test:e2e:browser-cli": "node scripts/e2e-browser-cli.mjs",
23
+ "test:e2e:http": "node scripts/e2e-http-streamable.mjs",
20
24
  "test:e2e:relay-race": "node scripts/e2e-relay-fake-extension-race.mjs",
21
25
  "test:e2e:agents": "node scripts/e2e-mcp-agents.mjs"
22
26
  },
@@ -67,6 +71,8 @@
67
71
  },
68
72
  "files": [
69
73
  "dist",
74
+ "openclaw",
75
+ "docs",
70
76
  "README.md",
71
77
  "LICENSE"
72
78
  ]