Browser Use
Lets AI do web tasks for you, such as filling forms, searching and extracting data, in the maker’s cloud browsers or on your computer.
Description from the maker (original English)
Stealthy, LLM-drivable browser engine — a Python library + 85-tool MCP server on stealth Chromium.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"eyebrowse": {
"command": "uvx",
"args": [
"eyebrowse"
]
}
}
}Run this in your terminal
claude mcp add eyebrowse -- uvx eyebrowsePaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"eyebrowse": {
"command": "uvx",
"args": [
"eyebrowse"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"eyebrowse": {
"type": "stdio",
"command": "uvx",
"args": [
"eyebrowse"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account Evil-Bane, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.3.10) reached the registry 5 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Browser Use, Chrome DevTools MCP, MCP Server Browser
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Lets AI do web tasks for you, such as filling forms, searching and extracting data, in the maker’s cloud browsers or on your computer.
Lets AI use Chrome’s developer tools to inspect pages, find what makes them slow and spot errors. Made by the Chrome DevTools team.
MCP server for browser use access
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A Python library *and* an MCP server for driving a real, hard-to-detect browser, so legitimate automation isn't false-flagged or IP-banned by Cloudflare, DataDome, Akamai, or PerimeterX. Built on CloakBrowser — a stealth Chromium (Chrome/146) that's a Playwright drop-in — so EyeBrowse gets the full Chrome DevTools Protocol: trusted cursorless clicks, deep network inspection, MHTML, PDF, and native video.
▶ Full-quality MP4: docs/demo.mp4 — an AI agent drives EyeBrowse over MCP: clears a Cloudflare check, then reads real docs (asyncio · httpx · MDN).
geoip + humanize on out of the box, novel fingerprint per launch); navigator.webdriver masked; viewport auto-sized to the spoofed screen. No puppeteer-extra band-aids — the anti-detection is *compiled into the browser*.click/type/hover), not by brittle CSS or raw pixels. Cross-origin iframes, shadow DOM, popups — handled.Input.dispatchMouseEvent), raw Network/Performance/Emulation access, MHTML snapshots, PDF export, and native video — all reachable as tools.browser_* tools**) for Claude Code and any MCP client.session.page / .context / .browser for anything it doesn't wrap.Scope. EyeBrowse is a low-level browser *engine* — it holds no workflow logic.
Consumers decide *what* to do; the engine provides *what's possible*.
Quickstart · Install · Features · Compare · Library · MCP · Proxy & identity · Extraction · Recording · How it works · Caveats · Tools · License
pip install eyebrowse
import asyncio
from eyebrowse import EyeBrowse
async def main(): eb = EyeBrowse() # stealth defaults: geoip · humanize async with eb.session() as s: await s.navigate("https://example.com") print(await s.snapshot()) # ARIA tree with [ref=...] handles await s.click("e6") # act on a ref from the snapshot await eb.aclose()
asyncio.run(main())
…or wire it into Claude Code (or any MCP client) — see Use over MCP.
From PyPI
pip install eyebrowse # or: uv pip install eyebrowse
pip install "eyebrowse[extract]" # optional: + Crawl4AI markdown extraction (heavier)
From source (development)
git clone https://github.com/Evil-Bane/eyebrowse && cd eyebrowse
uv sync # core engine (add --extra extract for Crawl4AI) cp .env.example .env # only if you use a proxy / captcha keys
Python 3.12 (pinned <3.13). Engine: cloakbrowser>=0.3 (stealth Chromium, Chrome/146), on playwright 1.60 and mcp 1.27.
| 🥷 Stealth | CloakBrowser's patched-Chromium fingerprint spoofing (novel --fingerprint per launch); geoip + humanize by default; webdriver masked; viewport matched to the spoofed screen. |
| 🤖 LLM interaction | aria_snapshot(mode="ai") → ARIA tree + [ref] handles; click / type / hover / select / drag / file-upload / dialogs / keyboard; coordinate mouse too. |
| ⚡ CDP | trusted cursorless click by ref, raw CDP (Network / Performance / Emulation), MHTML capture, PDF export. |
| 🪟 Frames & DOM | cross-origin iframe routing by ref, shadow-DOM piercing, popup/new-tab switching, evaluate inside any frame. |
| 🗂 Multi-session | independent stealth sessions, each with its own context / identity / proxy. |
| 🌐 Network | inspect requests/responses (incl. XHR/fetch bodies & WebSocket frames), block URLs, mock responses, go offline, full HAR export. |
| 💾 State | cookies, localStorage & sessionStorage (CRUD), storage_state save/reload. |
| 🪪 Identity rotation | fresh fingerprint + isolated profile + paired proxy; pluggable residential ProxyProvider. |
| 🧩 Captcha | pluggable API-mode solvers (CapSolver / 2Captcha / CapMonster / NextCaptcha) + TOTP — no browser extension. |
| 📄 Extraction | Crawl4AI raw: feed → clean, token-efficient markdown (no LLM, no API keys). |
| 🎥 Capture | screenshots, Playwright tracing, and native video (.webm). |
| ✅ Verify & debug | assertions, element highlighting, locator generation, geolocation/header emulation. |
Full per-tool reference: [docs/TOOLS.md](docs/TOOLS.md) (85 tools across 18 groups).
| EyeBrowse | Playwright MCP | browser-use | playwright-stealth | |
|---|---|---|---|---|
| Anti-detection compiled into the browser | ✅ | ❌ | ❌ | ⚠️ JS patches |
| LLM-native ARIA `[ref]` interaction model | ✅ | ✅ | ✅ | ❌ |
| Ships an MCP server | ✅ (85 tools) | ✅ | ⚠️ partial | ❌ |
| One codebase: Python **library *and* MCP** | ✅ | MCP-only | lib-only | lib-only |
| Full CDP (trusted clicks · network · MHTML · PDF · video) | ✅ | ⚠️ partial | ❌ | ⚠️ partial |
| Captcha (API-mode) + TOTP | ✅ | ❌ | ❌ | ❌ |
| Proxy + identity rotation built in | ✅ | ❌ | ⚠️ partial | ❌ |
| Cross-origin iframes · shadow DOM · popups | ✅ | ✅ | ⚠️ partial | n/a |
Fair-use note: each project targets a different niche — this compares them on the axes EyeBrowse optimizes for (stealth + LLM-drivable + one library/MCP codebase), not as an overall ranking.
import asyncio
from eyebrowse import EyeBrowse
async def main(): eb = EyeBrowse() # stealth defaults try: async with eb.session() as s: # a stealth session (auto-closed) await s.navigate("https://example.com") print(await s.snapshot()) # ARIA tree with [ref=...] handles await s.click("e6") # act on a ref await s.type("e8", "hello", submit=True) png = await s.screenshot(full_page=True) title = await s.page.title() # full Playwright power when you need it finally: await eb.aclose()
asyncio.run(main())
Run the included proof: uv run python examples/direct_usage.py.
EyeBrowse ships an MCP server (eyebrowse-mcp, FastMCP over stdio). Add it to any MCP client.
Claude Code (CLI):
claude mcp add eyebrowse -- eyebrowse-mcp
Any MCP client (JSON config):
{
"mcpServers": { "eyebrowse": { "command": "eyebrowse-mcp" } } }
Then drive the loop: browser_navigate(url) → read the snapshot → act by ref (browser_click / browser_type / …). A default session is auto-created, so most tools just work. Full list: [docs/TOOLS.md](docs/TOOLS.md).
Runs proxyless by default (geoip still aligns locale/timezone to your real IP). Add a proxy only when you want one:
await eb.new_session(proxy="http://user:pass@residential.example:8080")
await eb.rotate_identity(proxy="socks5://host:1080") # fresh fingerprint + paired IP await eb.new_session(no_proxy=True) # force proxyless
Set a default once via EYEBROWSE_PROXY_* in .env, eb.set_static_proxy(...), or a custom ProxyProvider for rotation. Over MCP: browser_new_session(proxy_url=…) / browser_new_identity(proxy_url=…) / browser_set_proxy(…).
reCAPTCHA v3 / reputation gates are score-based and key off IP + session reputation — a
fresh browser on a flagged IP fails regardless of stealth. Pair EyeBrowse with a clean
residential proxy.
eb.extract() (or browser_extract) hands the rendered HTML to Crawl4AI's raw: feed and returns clean, pruned markdown — no LLM is called and no LLM keys are ever read; the consuming agent does any structuring.
md = await eb.extract() # markdown string
res = await eb.extract(output_path="data/page.md") # → {"path": ..., "chars": ...}
Native video — Playwright records the whole session to a .webm, written on close. The path is known up-front; the file finalizes when the session closes:
s = await eb.new_session(record_video=True)
print(await s.video_path()) # path is known up-front; file finalizes on close await eb.close_session(s.id)
Over MCP: browser_new_session(record_video=True) → browser_video_path. Want a GIF for a README? Convert the .webm with ffmpeg (ffmpeg -i demo.webm demo.gif). The demo at the top was captured this way — see `examples/make_demo.py`.
CONSUMERS ENGINE (library: eyebrowse/)
Claude Code ──MCP──▶ mcp/ ──▶ EyeBrowse façade (public API) your code ─ import ──────────▶ ├─ BrowserEngine (CloakBrowser / stealth Chromium) any MCP client ├─ proxy / identity rotation (pluggable) ├─ captcha solvers (pluggable, A
Only the beginning is shown; read the rest in the repo