Labsco
MCP SERVER

EyeBrowse

by Evil-Bane

Drive a stealth Chromium from a model by accessibility refs rather than CSS — 85 tools covering navigation, network inspection, cookies, proxies, captchas and video capture.

Browser Automation, Control & Screenshots
Summary
Anti-detection is compiled into the browser, not patched on top.

That is the difference from the usual stealth plugin approach, and it is why the CDP surface stays available. Two caveats the project states outright and you should plan around: exporting a HAR closes the session, because Playwright only flushes the buffer on context close — save the storage state first and reopen from it — and a reputation-scored captcha keys off IP as much as fingerprint, so a clean browser on a flagged address still fails. The library and the tool surface are the same codebase, so anything you script by hand is reachable from the model too.

What it is

A browser engine built to be driven by a model. Pages are read as an accessibility tree with `[ref=…]` handles, so the model acts on a ref rather than on a brittle selector or a pixel coordinate. It runs on CloakBrowser, a stealth Chromium that is a Playwright drop-in, which is what makes the full DevTools surface — trusted clicks, network bodies, MHTML, PDF, native video — reachable as tools.

What you get
  • Sessions with their own identity, storage and optional proxy, plus HAR recording and native video capture — `browser_new_session`, `browser_list_sessions`, `browser_close_session`, `browser_video_path`
  • Navigation and tabs, including switching to a popup after an OAuth flow — `browser_navigate`, `browser_navigate_back`, `browser_reload`, `browser_tabs`, `browser_switch_to_popup`
  • Reading a page as an accessibility tree with refs, including a child frame directly when the parent collapses it, plus screenshots, console messages and downloads — `browser_snapshot`, `browser_snapshot_frame`, `browser_screenshot`, `browser_console_messages`, `browser_wait_for_download`
  • Acting by ref: click, type, fill a whole form, hover, select, press a key, drag, upload files, handle a JS dialog, wait on a condition, evaluate JS in any frame, and scroll to trigger lazy loading — `browser_click`, `browser_type`, `browser_fill_form`, `browser_press_key`, `browser_wait_for`, `browser_evaluate`, `browser_scroll_to_bottom`
  • Network inspection and control: requests listed and one opened in full with headers and body, WebSocket frames read, URLs blocked or mocked, and the context taken offline — `browser_network_requests`, `browser_network_request`, `browser_ws_messages`, `browser_block_urls`, `browser_mock_url`, `browser_set_offline`
  • State you can carry between sessions — cookies, localStorage and sessionStorage read and written, and the whole storage state saved to a file and reloaded — `browser_cookie_set`, `browser_localstorage_get`, `browser_storage_state`, `browser_har_export`
  • A fresh fingerprint with isolated storage and an optional paired proxy — `browser_new_identity`, `browser_set_proxy`
  • CDP extras on Chromium: a trusted cursorless click by ref that passes checks which flag DOM clicks, raw CDP commands, a single-file MHTML archive and a PDF — `browser_cdp_click`, `browser_cdp_send`, `browser_capture_mhtml`, `browser_pdf_save`
  • Captcha solving through a configured provider and TOTP codes for two-factor logins — `browser_solve_captcha`, `browser_totp_generate`
  • The page extracted as clean markdown with no model in the loop — `browser_extract`
Requirements

Python 3.12 and `pip install eyebrowse`; the stealth Chromium binary downloads itself on first launch, so there is nothing else to run. The package is `eyebrowse` (0.3.10) and provides the `eyebrowse-mcp` command — add it to a client with `claude mcp add eyebrowse -- eyebrowse-mcp`. It runs proxyless by default; a proxy is opt-in per session or set as a default through the `EYEBROWSE_PROXY_*` variables. Captcha solving needs an API key for whichever provider you configure. Markdown extraction is an optional heavier install, `pip install "eyebrowse[extract]"`.

Setup effort

One command — pip install eyebrowse