@vibebrowser/mcp 0.2.5 → 0.2.6
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.
- package/README.md +47 -0
- package/dist/browser-cli.d.ts.map +1 -1
- package/dist/browser-cli.js +493 -369
- package/dist/browser-cli.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/connection.d.ts +14 -7
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +108 -20
- package/dist/connection.js.map +1 -1
- package/dist/relay.d.ts +11 -3
- package/dist/relay.d.ts.map +1 -1
- package/dist/relay.js +238 -78
- package/dist/relay.js.map +1 -1
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +185 -4
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +14 -10
- package/dist/types.d.ts.map +1 -1
- package/docs/eval.md +101 -16
- package/docs/openclaw-local-browser.md +111 -20
- package/openclaw/{vibe-local-browser → vibebrowser}/SKILL.md +22 -1
- package/package.json +5 -2
|
@@ -59,56 +59,83 @@ So the missing piece was a streamable HTTP MCP transport.
|
|
|
59
59
|
|
|
60
60
|
That is what `vibebrowser-mcp start --transport http` now provides.
|
|
61
61
|
|
|
62
|
-
##
|
|
62
|
+
## Prerequisites
|
|
63
|
+
|
|
64
|
+
You need:
|
|
65
|
+
|
|
66
|
+
1. **Node.js 18+** - `vibebrowser-mcp` requires Node.js
|
|
67
|
+
2. **Chrome/Brave/Chromium** with the Vibe extension installed
|
|
68
|
+
3. **OpenClaw** configured with an MCP server URL
|
|
69
|
+
|
|
70
|
+
## What gets installed
|
|
63
71
|
|
|
64
72
|
The user needs three pieces:
|
|
65
73
|
|
|
66
74
|
1. the Vibe Co-Pilot browser extension
|
|
67
75
|
2. `vibebrowser-mcp` on the same machine as the browser
|
|
68
|
-
3. an OpenClaw MCP server entry pointing
|
|
69
|
-
|
|
70
|
-
## Step 1: install the Vibe extension
|
|
76
|
+
3. an OpenClaw MCP server entry pointing to the local `vibebrowser-mcp` HTTP endpoint
|
|
71
77
|
|
|
72
|
-
Install the Vibe
|
|
78
|
+
## Step 1: Install the Vibe extension
|
|
73
79
|
|
|
74
|
-
|
|
80
|
+
1. Install the Vibe Co-Pilot extension from [Chrome Web Store](https://chromewebstore.google.com/detail/vibe-ai-browser-co-pilot/djodpgokbmobeclicaicnnidccoinado)
|
|
81
|
+
2. Open Chrome and click the Vibe extension icon
|
|
82
|
+
3. Go to **Settings** (gear icon)
|
|
83
|
+
4. Find **MCP External** (or "MCP External Control")
|
|
84
|
+
5. Enable it and select **Remote** mode
|
|
85
|
+
6. Copy the **Extension UUID** shown - you'll need this for the next step
|
|
75
86
|
|
|
76
|
-
|
|
87
|
+
> **Note**: The Extension UUID is a unique identifier that allows `vibebrowser-mcp` to connect to your specific browser session through the Vibe relay.
|
|
77
88
|
|
|
78
|
-
## Step 2:
|
|
89
|
+
## Step 2: Start the local HTTP bridge
|
|
79
90
|
|
|
80
91
|
On the same machine where the browser extension is installed, run:
|
|
81
92
|
|
|
93
|
+
**Option A: Using the helper command (recommended)**
|
|
94
|
+
|
|
82
95
|
```bash
|
|
83
|
-
npx -y --package @vibebrowser/mcp vibebrowser-mcp
|
|
96
|
+
npx -y --package @vibebrowser/mcp vibebrowser-mcp openclaw --remote <extension-uuid>
|
|
84
97
|
```
|
|
85
98
|
|
|
86
|
-
|
|
99
|
+
This prints the exact commands and MCP URL you need.
|
|
87
100
|
|
|
88
|
-
|
|
89
|
-
http://127.0.0.1:8788/mcp
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
If you want the exact OpenClaw-friendly snippet, you can also run:
|
|
101
|
+
**Option B: Manual command**
|
|
93
102
|
|
|
94
103
|
```bash
|
|
95
|
-
npx -y --package @vibebrowser/mcp vibebrowser-mcp
|
|
104
|
+
npx -y --package @vibebrowser/mcp vibebrowser-mcp start --transport http --remote <extension-uuid>
|
|
96
105
|
```
|
|
97
106
|
|
|
98
|
-
|
|
107
|
+
By default this starts a local MCP endpoint at:
|
|
99
108
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
109
|
+
```
|
|
110
|
+
http://127.0.0.1:8788/mcp
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Keep this terminal open - the bridge must stay running for OpenClaw to connect.
|
|
103
114
|
|
|
104
115
|
For operator workflows and OpenClaw skills, you can also use the OpenClaw-compatible browser CLI surface directly:
|
|
105
116
|
|
|
106
117
|
```bash
|
|
118
|
+
npx -y --package @vibebrowser/mcp vibebrowser-cli sessions
|
|
107
119
|
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote <extension-uuid> status
|
|
108
120
|
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote <extension-uuid> tabs
|
|
109
121
|
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote <extension-uuid> snapshot --json
|
|
110
122
|
```
|
|
111
123
|
|
|
124
|
+
`snapshot` in `vibebrowser-cli` is tool-only and maps directly to extension snapshot tools:
|
|
125
|
+
|
|
126
|
+
- default (`--format ai`) -> `take_md_snapshot`
|
|
127
|
+
- ARIA (`--format aria`) -> `take_a11y_snapshot`
|
|
128
|
+
|
|
129
|
+
Use `--page-id <id>` (or `--pageId <id>`) to target a specific tab without switching user focus.
|
|
130
|
+
|
|
131
|
+
For local relay mode with multiple connected browsers/profiles:
|
|
132
|
+
|
|
133
|
+
- run `vibebrowser-cli sessions` to list available local session IDs
|
|
134
|
+
- pass `--session <id>` to target one explicitly
|
|
135
|
+
- if omitted, the CLI uses the first connected local session
|
|
136
|
+
|
|
137
|
+
`open` and `navigate` responses include extracted page content in JSON output (`pageContent`) when page state is modified, so agents can continue without an immediate extra snapshot call.
|
|
138
|
+
|
|
112
139
|
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
140
|
|
|
114
141
|
## Step 3: add the MCP server to OpenClaw
|
|
@@ -127,6 +154,43 @@ Register the bridge URL in OpenClaw:
|
|
|
127
154
|
|
|
128
155
|
Once that is configured, the cloud OpenClaw agent can use the Vibe browser tools through the local bridge.
|
|
129
156
|
|
|
157
|
+
## Optional: Use the OpenClaw skill for local agents
|
|
158
|
+
|
|
159
|
+
For OpenClaw agents running locally (not in the cloud) that need access to your real browser, you can use the Vibe skill instead of configuring an MCP server URL.
|
|
160
|
+
|
|
161
|
+
### Install the skill
|
|
162
|
+
|
|
163
|
+
Copy `openclaw/vibebrowser/SKILL.md` from this package to your OpenClaw skills directory. The skill provides OpenClaw-compatible CLI commands that target your Vibe-connected browser.
|
|
164
|
+
|
|
165
|
+
### Configure environment
|
|
166
|
+
|
|
167
|
+
Set the extension UUID in your shell:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
export VIBE_EXTENSION_UUID="<your-extension-uuid>"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Available commands
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Check status
|
|
177
|
+
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json status
|
|
178
|
+
|
|
179
|
+
# List tabs
|
|
180
|
+
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json tabs
|
|
181
|
+
|
|
182
|
+
# Open a page
|
|
183
|
+
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json open https://example.com
|
|
184
|
+
|
|
185
|
+
# Click element by index
|
|
186
|
+
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json click 12
|
|
187
|
+
|
|
188
|
+
# Type into element
|
|
189
|
+
npx -y --package @vibebrowser/mcp vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json type 23 "hello"
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
See [`openclaw/vibebrowser/SKILL.md`](../openclaw/vibebrowser/SKILL.md) for the full command reference.
|
|
193
|
+
|
|
130
194
|
## When to use this setup
|
|
131
195
|
|
|
132
196
|
This architecture is the right fit when the agent needs the **user's own browser context**, for example:
|
|
@@ -171,3 +235,30 @@ That is a much better fit than asking users to move their life into a fresh clou
|
|
|
171
235
|
The end result is simple:
|
|
172
236
|
|
|
173
237
|
**OpenClaw stays in the cloud. The browser stays local. Vibe MCP connects them cleanly.**
|
|
238
|
+
|
|
239
|
+
## Troubleshooting
|
|
240
|
+
|
|
241
|
+
### "Extension UUID not found"
|
|
242
|
+
|
|
243
|
+
Make sure you've enabled **Remote** mode in the Vibe extension settings. The UUID only appears when Remote mode is active.
|
|
244
|
+
|
|
245
|
+
### "Connection refused" errors
|
|
246
|
+
|
|
247
|
+
1. Ensure the `vibebrowser-mcp` process is still running
|
|
248
|
+
2. Check the terminal for error messages
|
|
249
|
+
3. Verify the MCP URL matches exactly (including the `/mcp` path)
|
|
250
|
+
|
|
251
|
+
### "No extension connected"
|
|
252
|
+
|
|
253
|
+
1. Open Chrome and click the Vibe extension icon
|
|
254
|
+
2. Verify MCP External is enabled in Settings
|
|
255
|
+
3. Check the extension shows "Connected" status
|
|
256
|
+
|
|
257
|
+
### MCP URL format
|
|
258
|
+
|
|
259
|
+
The correct format is:
|
|
260
|
+
```
|
|
261
|
+
http://127.0.0.1:8788/mcp
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Not `http://127.0.0.1:8788` (missing `/mcp` path).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: vibebrowser
|
|
3
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
4
|
metadata:
|
|
5
5
|
{
|
|
@@ -17,6 +17,21 @@ metadata:
|
|
|
17
17
|
|
|
18
18
|
# Vibe Local Browser
|
|
19
19
|
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
1. **Get the Extension UUID**:
|
|
23
|
+
- Install the Vibe extension in Chrome
|
|
24
|
+
- Open extension Settings → MCP External
|
|
25
|
+
- Enable Remote mode and copy the Extension UUID
|
|
26
|
+
|
|
27
|
+
2. **Set environment variable**:
|
|
28
|
+
```bash
|
|
29
|
+
export VIBE_EXTENSION_UUID="<your-extension-uuid>"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
3. **Install the skill**:
|
|
33
|
+
Copy this file to your OpenClaw skills directory (typically `~/.openclaw/skills/` or your project's `openclaw/skills/` folder).
|
|
34
|
+
|
|
20
35
|
Use the `vibebrowser-cli` command when the user wants OpenClaw to drive their real local browser through the Vibe extension.
|
|
21
36
|
|
|
22
37
|
Prefer this skill when the task depends on:
|
|
@@ -64,7 +79,13 @@ If you set `VIBE_RELAY_URL`, append:
|
|
|
64
79
|
|
|
65
80
|
## Safe operating rules
|
|
66
81
|
|
|
82
|
+
- **Never use `focus` or `tab select` unless explicitly asked.** The user may be actively working in the browser — switching their active tab is disruptive. Instead, pass `--page-id <id>` (or `--pageId <id>`) to target a specific tab without switching focus. Get the page ID from `tabs` output, then use it on any command:
|
|
83
|
+
```bash
|
|
84
|
+
vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json --page-id 2 snapshot
|
|
85
|
+
vibebrowser-cli --remote "$VIBE_EXTENSION_UUID" --json --page-id 2 click 7
|
|
86
|
+
```
|
|
67
87
|
- Prefer `browser tabs` or `browser snapshot` before acting.
|
|
88
|
+
- `snapshot` is tool-only and maps to extension snapshot tools (`take_md_snapshot` by default, `take_a11y_snapshot` for `--format aria`).
|
|
68
89
|
- Use `browser open <url>` to create a fresh page when possible.
|
|
69
90
|
- Use `browser evaluate --fn ...` only for simple compatibility-safe expressions such as:
|
|
70
91
|
- `() => 21 + 21`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibebrowser/mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
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",
|
|
@@ -18,10 +18,13 @@
|
|
|
18
18
|
"dev": "tsc --watch",
|
|
19
19
|
"start": "node dist/cli.js",
|
|
20
20
|
"prepublishOnly": "npm run build",
|
|
21
|
-
"test": "npm run test:e2e:relay-race && npm run test:e2e:http && npm run test:e2e:browser-cli",
|
|
21
|
+
"test": "npm run test:e2e:relay-race && npm run test:e2e:relay-roundtrip && npm run test:e2e:cli-relay && npm run test:e2e:http && npm run test:e2e:browser-cli",
|
|
22
22
|
"test:e2e:browser-cli": "node scripts/e2e-browser-cli.mjs",
|
|
23
|
+
"test:e2e:cli-relay": "node scripts/e2e-cli-relay.mjs",
|
|
23
24
|
"test:e2e:http": "node scripts/e2e-http-streamable.mjs",
|
|
25
|
+
"test:e2e:browser-cli-live": "node scripts/e2e-browser-cli-live.mjs",
|
|
24
26
|
"test:e2e:relay-race": "node scripts/e2e-relay-fake-extension-race.mjs",
|
|
27
|
+
"test:e2e:relay-roundtrip": "node scripts/e2e-relay-roundtrip.mjs",
|
|
25
28
|
"test:e2e:agents": "node scripts/e2e-mcp-agents.mjs"
|
|
26
29
|
},
|
|
27
30
|
"keywords": [
|