Agent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
Install
claude mcp add ubrowser -- node "$PWD/build/index.js"Install command taken from the project's README or registry entry. Always review code before running it.
README excerpt
Read full README on GitHub →μBrowser
The fastest, cheapest browser automation for Claude.
μBrowser ██████ 51s $0.18
Dev Browser ████████████████████████████████████████ 3m 53s $0.88
Playwright ████████████████████████████████████████████████ 4m 31s $1.45
Benchmarks
Tested on dev-browser-eval game-tracker task with Claude Opus 4.5 (benchmark setup cloned from SawyerHood, eval tasks created independently):
| Method | Time | Cost | Turns |
|---|---|---|---|
| μBrowser | 51s | $0.18 | 7 |
| Dev Browser | 3m 53s | $0.88 | 29 |
| Playwright MCP | 4m 31s | $1.45 | 51 |
Results:
- 5× faster than Dev Browser
- 5× cheaper than Dev Browser
- 8× cheaper than Playwright MCP
Latest local run (dev-browser-eval simulation, HN proxy):
| Method | Time | Cost | Turns | Tokens |
|---|---|---|---|---|
| Traditional (6 calls) | 17.36s | $0.1439 | 6 | 2177 |
| μBrowser (batch) | 6.87s | $0.0052 | 1 | 204 |
How It Works
1. Batch Execution
Combine 25+ browser actions into a single API call:
{"steps": [
{"tool": "navigate", "args": {"url": "/login"}},
{"tool": "type", "args": {"selector": "#email", "text": "user@test.com"}},
{"tool": "type", "args": {"selector": "#pass", "text": "secret"}},
{"tool": "click", "args": {"selector": "button[type=submit]"}}
], "snapshot": {"when": "final", "maxElements": 40}}
Others make 4 separate calls. We make 1. 75% fewer API calls.
2. Ultra-Compact Snapshot Format
Standard HTML (~180 tokens):
<button id="e1" role="button">Submit</button>
<input id="e2" type="email" placeholder="Email" required>
<input id="e3" type="password" placeholder="Password">
μBrowser (~50 tokens):
btn#e1"Submit"
inp#e2@e~"Email"!r
inp#e3@p~"Password"
70% smaller snapshots. Output tokens cost 5× more than input.
3. Minimal Responses
{"ok":true}
{"ok":true,"snap":"btn#e1\"Submit\"\ninp#e2@e~\"Email\""}
Only return DOM when explicitly requested.
Speed + Cost Tuning
Environment variables:
UBROWSER_BLOCK_STYLESHEETS=1blocks CSS for faster loads (may affect layout-dependent pages).UBROWSER_MAX_ELEMENTS=40caps snapshots by default whenmaxElementsis not provided.UBROWSER_PROFILE_DIR=~/.ubrowser/profilebrowser profile directory for session persistence.UBROWSER_CONSOLE_LIMIT=100max console messages to retain in buffer.UBROWSER_NETWORK_LIMIT=100max network requests to retain in buffer.
Snapshot options (per-call overrides):
snapshot.maxElementslimits returned elements forbrowser_snapshot, per-tool snapshots, andbrowser_batch.
Session Persistence
Browser state (cookies, localStorage, IndexedDB) persists to disk between MCP server restarts. This enables:
- Staying logged in across sessions
- Preserving form data and preferences
- Maintaining shopping carts and app state
Profile stored at ~/.ubrowser/profile by default (customize with UBROWSER_PROFILE_DIR).
Implementation Details
Pre-injected extraction script — Script is injected once and JIT-cached in browser, eliminating recompilation overhead. Subsequent snapshots complete in <1ms.
Batched visibility checks — All getBoundingClientRect() calls happen in a single pass, avoiding layout thrashing that occurs with per-element checks.
Similar plugs
Clone any website with one command using AI coding agents
The fastest browser for AI agents to run browser automation, built for sharing your logged-in browser state with your AI agents, like Codex or Claude Code, without disturbing…
Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills with automatic conflict detection
An AI-agent skill that generates browser-editable presentations from multiple visual themes, exportable to HTML, PDF, and PPTX.
All your agents and workspaces in one place, on every device you own. Track tasks on a board, accessible from desktop, mobile, browser, or API. Self-hosted.