Stealth web browser for agents: search, fetch, click and type through persistent sessions over MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
The Browser for AI Agents. See the live web. Read it. Act on it. Remember it.
A browser built for agents from the first line of code β not a human browser bolted onto automation. See the world, read it, search it, act on it, and keep what you read: one Rust binary with built-in V8, no Chromium required.
Humans have Chrome. Agents have AginxBrowser.
One binary, zero dependencies, instant service. HTTP API + native MCP + CDP β agents plug in and go, and existing Playwright / Puppeteer / browser-use code attaches directly.
Real pages rendered by AginxBrowser's diting engine (no Chromium) β Wikipedia, this repo, Rust. Screenshot it yourself β

Measured against headless Chrome on the same 20 pages, same network (bench, 2026-08-28): 7.6Γ faster to agent-usable text (p50 532 ms vs 4 053 ms), ~10Γ less memory (227 MB for the whole process vs ~2.1 GB per Chrome page), and 0 hard failures where Chrome's --dump-dom produced no DOM on 5 of 40 loads. An agent's total cost is browser efficiency Γ model efficiency β this is the browser half.
Existing "browser automation" was built for humans or for one-shot scraping β not for agents:
| AginxBrowser | Puppeteer/Playwright | Firecrawl | Browser-use | |
|---|---|---|---|---|
| Designed for | Agents first | Human debugging | Scraping service | LLM wrapper |
| Dependencies | Single binary, no Chromium | Chromium ~500MB | Docker ~1GB | Chromium |
| Sees (screenshots) | β built-in diting rendering engine | Needs Chromium | β | Needs Chromium |
| Reads | markdown + js_extract + fetch receipts | DIY | markdown | DIY |
| Finds (search) | β 15 engines, 7 categories, merged | β | β | β |
| Acts | indexed session interaction | DevTools API | β | LLM-driven |
| Remembers | β local fetch/search cache (SQLite FTS5) | β | crawl cache | β |
| Protocol | HTTP + native MCP + CDP | Node API | HTTP | Python |
| TLS fingerprints | β Chrome/Firefox/Safari/Edge | Plugin required | β | β |
| CAPTCHA | β detect + auto-wait + optional 2captcha | DIY | β | β |
| Interactive sessions | β persistent | β | β | β |
An agent needs five things from a browser: see, read, find, act, remember. One binary covers them all β systemd-friendly, MCP-native for Claude/Cursor, zero dependencies.
Core advantage: no Chromium. AginxBrowser inlines a full browser engine (V8 + Rust HTTP stack + the diting CSS/layout/paint rendering engine, with the Blitz/Stylo/Taffy lineage as its reference implementation). No Puppeteer, no Chrome, no Docker. One Rust binary under systemd is your agent browsing infrastructure.
Most new "agent browsers" are stateless, fingerprint-less one-shot renderers β fine for public pages, dead on arrival against Cloudflare or login flows. AginxBrowser goes the opposite way:
cf_clearance. Fingerprint-less engines eat 403s β we get through.session_create(cookies=...) β session_cookies), surviving pagination and multi-step flows; persistent: true even survives idle eviction and server restarts β the same session id comes back logged in. One-shot engines throw state away.Reference point: Cloudflare's Kitesurf explicitly ships neither real TLS-fingerprint negotiation nor persistent auth sessions β anti-bot and login territory is exactly where AginxBrowser plays.
Apache-2.0 open source, single binary β self-host today, no cloud lock-in.
Agents act on what a browser tells them, so the response reports what actually happened β not just "got a 200":
tier β which path served the page: plain HTTP (~100 ms) or the V8-rendered browser tier. An agent can see why a fetch was fast or slow.redirected_from β the full redirect trail. redirected_from[0] is the URL you asked for, url is where the content actually came from β requested paired with effective, every hop visible.content_hash + changed_since_prev β every fetch is hashed; consecutive samples of the same URL can be diffed. A rate-limited origin serving the same frozen 200 body for days reads as changed_since_prev: false β the cheapest drift detector there is.captcha_event β when a challenge page was detected (and solved, if a solver is configured), the response says so instead of handing over a challenge page as if it were content.The local cache builds on the same idea: search hits come back with [Β§ heading] section prefixes so an agent knows where on the page a hit landed, and ranking fuses keyword relevance with freshness.
tier field)/search. Search β read in one stepcategories=images hits Baidu/Bing image indexes and returns direct binary image_url links (downloadable straight to jpg/png) plus source_url provenancestate/click/input/scroll/eval) β agents browse like humans do, and session_export turns what an agent figured out into a runnable curl replay script (zero model tokens on re-run). Session tools also cover the acting part: session_viewport simulates device viewports (media queries respond), session_wait blocks on a selector or predicate with a timeout, session_screenshot renders the live state, session_console replays the page's console ring, and session_storage exports/restores cookies plus localStorage for login hand-offsession_network(filter=media) extracts the m3u8/mp4/dash URLs a page's player actually requested at runtime β links found only in page HTML are often decoys, so the request log is the source of truth. GET /session/{id}/har exports the same traffic as HAR 1.2 (retained bodies included)/json/version + /devtools/{kind}/{id} WebSocket β chromium.connectOverCDP() from Playwright, Puppeteer, or browser-use attaches with one line (integration guide). DevTools ecosystem compatibility without becoming a CDP shim~/.aginxbrowser/cache.db. The cache tool re-answers from what the agent already read instead of re-paying network time: full-text search with CJK substring matching, keyword Γ freshness fusion ranking, [Β§ heading] section-aware snippets, per-URL content hashes for drift detection, TTL-bounded, per-session scoping for shared deploymentsjs_extract pulls window.__INITIAL_STATE__ and other structured data out of SPAs/screenshot endpoint (opt-in --features screenshot) paints the JS-rendered DOM with the diting rendering engine β pure CPU, no Chromium β to PNG. Vision input for agents--mcp mode exposes 28 tools (fetch/eval/search/download/cache + session + screenshot tools) β Claude Code / Claude Desktop / Cursor call them directly/v1/scrape endpoint β existing Firecrawl clients migrate by changing the base URLAginxBrowser exists for real-time retrieval: an agent arrives with a question, reads a handful of pages, leaves with the answer. It is not a crawling tool β and the product is shaped so it can't quietly become one:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/aginx-browser)<a href="https://allmcps.com/mcp/aginx-browser"><img src="https://allmcps.com/api/badge/aginx-browser?style=directory" alt="Aginx Browser on AllMCPs" /></a>