The browser your agent
would pick.
A small Rust MCP server on a bundled Chromium. It speaks Playwright MCP’s tools, uses a third of the memory, and adds what agents kept asking for: pages as Markdown instead of giant snapshots, many steps in one call, and a hand-off that gives a person the exact live page.
$ git clone https://github.com/luka-loehr/browser-rs $ cd browser-rs && cargo build --release $ claude mcp add browser-rs …/target/release/browser-rs
Against @playwright/mcp 0.0.80
Same machine, same pages, both on chrome-headless-shell, three rounds and medians, memory summed across the whole process tree. The script is scripts/bench_browser.py.
Everything Playwright MCP has, and what agents asked for
The same tool names and parameters as @playwright/mcp: 38 by default, 83 with every capability on. The difference is how an agent reads: most calls never need a snapshot, and when one does, the reply holds only what changed.
Opus agents did real work with it, then complained
Six agents, restricted to browser-rs, each got a hard multi-step task: researching GitHub pull requests, a Wikipedia link race, Hacker News with the linked articles, a full checkout with its error cases, fourteen tricky widgets, and debugging on MDN. Every tool call was timed on the server. After each round, their bugs and feature requests went into the code.
From round two on, all six said they would choose browser-rs over Playwright MCP. The Wikipedia race went from 75,000 characters of replies to 3,400.
When a human has to log in, nothing reloads
The browser stays headless and keeps running. browser_handoff opens a live view of the exact page in a tab of your own browser: click, type and paste into it, answer its dialogs, follow the pop-up it opens, then press Done. Half-filled forms, a game in progress, anything in memory is still there when the agent continues.
The view streams straight from Chromium over localhost behind a random token, draws only the newest frame, and sends your input without buffering.
Let your agent install it
The runbook checks your toolchain, builds, registers the server with your client, downloads Chromium once and proves it works with a real page.
Install browser-rs, the Rust browser MCP server, for me. Run this first,
then follow it exactly:
curl -fsSL https://browser-rs.lukaloehr.com/setup.txt
Ask me its first question before doing anything else.Two steps
Build it
A Rust toolchain is all it needs. Chromium for Testing downloads itself on the first tool call, or ahead of time with browser-rs install.
$ git clone https://github.com/luka-loehr/browser-rs $ cd browser-rs && cargo build --release
Add it to your client
Headless by default. Add --caps all for cookies, storage, network mocking, tracing, video, PDF and testing tools.
$ claude mcp add browser-rs …/target/release/browser-rsTested on macOS. Linux uses the same code but is untested, and Windows is not supported yet. In the hand-off view, headless Chromium does not draw native dropdowns or file pickers, and passkeys do not work; use a one-time code. Playwright’s own browser_run_code_unsafe needs its Node runtime and is not included.