Ubrowser
The fastest, cheapest browser automation for Claude Code.
npx -y skills add Lulzx/ubrowser --skill ubrowserAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.4 KB, 946 tokens by cl100k_base, as published. Nobody here has run it
μBrowser
Control a headless browser with 98% token reduction compared to Playwright MCP and Dev Browser. Uses batch execution, minimal responses, and efficient HTML formatting.
Setup
Start the ubrowser server before using browser tools:
./skills/ubrowser/server.sh &
Wait for "μBrowser MCP server started" message. First run installs dependencies and downloads Playwright Chromium.
Use --headless flag for headless mode:
./skills/ubrowser/server.sh --headless &
Key Optimization: Batch Execution
Always prefer browser_batch for multi-step workflows. This is the key to 98% cost savings.
Instead of:
browser_navigate → browser_type → browser_type → browser_click (4 calls, 4 snapshots)
Use:
{
"tool": "browser_batch",
"steps": [
{"tool": "navigate", "args": {"url": "/login"}},
{"tool": "type", "args": {"selector": "#email", "text": "[email protected]"}},
{"tool": "type", "args": {"selector": "#password", "text": "secret"}},
{"tool": "click", "args": {"selector": "button[type=submit]"}}
],
"snapshot": {"when": "final"}
}
Result: 1 call, 1 snapshot = 80%+ token reduction
Available Tools
browser_navigate
Navigate to a URL.
{"url": "https://example.com"}
browser_click
Click element by ref or selector.
{"ref": "e1"}
{"selector": "button.submit"}
browser_type
Type text into input.
{"ref": "e2", "text": "[email protected]", "clear": true, "pressEnter": true}
browser_select
Select dropdown option.
{"selector": "#country", "label": "United States"}
browser_scroll
Scroll page or element.
{"direction": "down", "amount": 500}
{"toBottom": true}
browser_snapshot
Get interactive elements with refs (e1, e2, e3...).
{"scope": "#main", "format": "full"}
browser_batch (KEY)
Execute multiple actions, snapshot only at end.
{
"steps": [
{"tool": "navigate", "args": {"url": "/search"}},
{"tool": "type", "args": {"selector": "input[name=q]", "text": "query"}},
{"tool": "click", "args": {"selector": "button[type=submit]"}}
],
"snapshot": {"when": "final", "scope": ".results"}
}
browser_pages
Manage multiple browser pages.
{"action": "create", "name": "login"}
{"action": "switch", "name": "dashboard"}
{"action": "list"}
{"action": "close", "name": "login"}
browser_inspect
Inspect specific element.
{"selector": ".form", "includeText": true, "depth": 3}
Element References
Snapshots return elements with short refs:
<input id="e1" type="email" placeholder="Email">
<input id="e2" type="password">
<button id="e3">Sign In</button>
Use refs in subsequent commands: {"ref": "e1", "text": "[email protected]"}
Best Practices
- Always batch - Use
browser_batchfor multi-step flows - Request snapshots sparingly - Default is no snapshot, add
snapshot: {include: true}only when needed - Scope snapshots - Use
scopeparameter to limit to relevant DOM region - Use refs - Short IDs save tokens vs full selectors
- Use diff format - After first snapshot, use
format: "diff"for changes only
Cost Comparison (Opus 4.5)
| Approach | Per Task | Monthly (3000) |
|---|---|---|
| Playwright MCP | $3.28 | $9,827 |
| μBrowser | $0.01 | $45 |
| Savings | $3.26 | $9,782 |
What ships with it: 1 file
1.0 KB alongside SKILL.md, 1 of them executable
- server.shruns1.0 KB