Vibium
Browser control over MCP for coding agents: navigate, fill forms, read pages, screenshot
Stealth-focused Chromium driver for agents, with five tools and change-only page results
By Bishesh Bhandari (individual) Rust Local · stdio Browser automation
62 popularity score ★ 343 ↓ 898/wk
Opens the app, which asks before it adds the server.
claude mcp add bladebro -- npx -y bladebro mcp{
"mcpServers": {
"bladebro": {
"command": "npx",
"args": [
"-y",
"bladebro",
"mcp"
]
}
}
}{
"mcpServers": {
"bladebro": {
"command": "npx",
"args": [
"-y",
"bladebro",
"mcp"
]
}
}
}{
"servers": {
"bladebro": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"bladebro",
"mcp"
]
}
}
}[mcp_servers.bladebro]
command = "npx"
args = ["-y", "bladebro", "mcp"]gemini mcp add --scope user bladebro npx -- -y bladebro mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/dondai44423/bladebro.git
cd bladebro
cargo build --releaseclaude mcp add bladebro -- '<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro' mcp{
"mcpServers": {
"bladebro": {
"command": "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro",
"args": [
"mcp"
]
}
}
}{
"mcpServers": {
"bladebro": {
"command": "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro",
"args": [
"mcp"
]
}
}
}{
"servers": {
"bladebro": {
"type": "stdio",
"command": "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro",
"args": [
"mcp"
]
}
}
}[mcp_servers.bladebro]
command = "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro"
args = ["mcp"]gemini mcp add --scope user bladebro '<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro' -- mcpCHROME_PATH |
Optional: Path to the Chrome/Chromium binary; auto-detected by default. |
|---|---|
BLADE_HOME |
Optional: Data root for profile, logins, learned site knowledge, artifacts and fingerprint. |
BLADE_PROFILE_DIR |
Optional: Location of the persistent browser profile (holds the cookie jar); default <data root>/profile. |
BLADE_FRESH |
Optional: Set to 1 for a throwaway profile with nothing kept. |
BLADE_PROXY |
Optional: Proxy URL; also filters WebRTC candidates so the real IP is not exposed. |
BLADE_LOCALE |
Optional: BCP-47 locale, en-US by default. |
BLADE_TZ |
Optional: Timezone; taken from IP location by default. |
BLADE_CONSENT |
Optional: How cookie banners are handled: accept, reject (default) or off. |
BLADE_LANE |
Optional: Set to real to drive your own browser for this process, like bladebro rb on. |
BLADE_NO_COMPRESS |
Optional: Set to 1 to stop shortening repeated act responses. |
BLADE_CHROME_FLAGS |
Optional: Extra Chrome launch flags. |
BLADE_NO_UPDATE_CHECK |
Optional: Set to 1 to skip update checks. |
Bladebro is a single Rust binary that drives Chrome or another Chromium-family browser over the DevTools protocol and offers it to an MCP client over stdio. It ships as an npm package that pulls in a prebuilt binary for your platform, so no Node-based browser library is involved; the same binary also works as a shell CLI.
The whole surface is five tools: act (click, type, fill forms, navigate, scroll, run page JavaScript, download, export PDF, batch several steps), see (the page as a list of elements with short refs, as markdown, as an outline, or as extracted lists, links and forms), state (tabs, cookies, local and session storage, saved login sessions, asset blocking), run (step sequences with if/else and while loops) and vision (a screenshot, optionally with numbered ref badges). It keeps a model of the page between calls, so after each action it reports what changed rather than the whole page, and element refs are matched by structure so they keep working after a framework re-renders the DOM.
Anti-detection measures are on by default: human-like mouse and typing timing, a persistent profile, consistent timezone and locale, and no page-side patches that detectors look for. A real-browser mode (bladebro rb on) instead drives your own installed browser using a copy of your profile, or your live profile, or one you have opened for debugging. Built-in extractors return full Reddit comment trees, X.com threads, GitHub repo and issue lists, and product page details.
Defaults the README leaves out, from the tool schemas at v4.6.1 (src/mcp/tools.rs): act collect stops at 100 items unless max is set; see extract returns 50 items unless limit is set (Reddit post comments: all, capped at 1000); a run while loop stops after 10 iterations unless max is set.
| Runtime | Node.js 14+orRust |
|---|
Chrome or Chromium installed (or another Chromium-family browser for real-browser mode; CHROME_PATH if it is not auto-detected). For the npm way, Node.js 14 or newer and a prebuilt binary for Linux x64/ARM64 (glibc 2.28 or newer), macOS Intel or Apple Silicon, or Windows x64. For a source build, Rust 1.86 or newer; headful use on a Linux server needs Xvfb. Datacenter IPs get flagged, so a residential proxy (BLADE_PROXY) is advised there.
Does not solve CAPTCHAs or Turnstile challenges in general; it returns a blocked verdict instead. Cannot see content in cross-origin iframes, load browser extensions, record video, or drive Firefox. Datacenter or VPS IP addresses are flagged regardless of fingerprint. Linux ARM64 binaries are not tested on real hardware and macOS binaries are cross-compiled. Turning on BLADE_NOISE can make detection more likely. Its README lists a compress on/off/status op under state, but the state tool's schema at v4.6.1 has no compress op; to switch off response pruning over MCP, set BLADE_NO_COMPRESS=1 (src/mcp/tools.rs).
Suits people whose agent has to browse sites with anti-bot protection, or who want small token costs per step from a local browser on Linux, macOS or Windows, without installing a Node browser stack. Real-browser mode suits tasks that need your existing logins, with the caveat that everything the agent does is done as you. Pick something else if you need Firefox, browser extensions, cross-origin iframe content, CAPTCHA solving, or a hosted browser; it is a third-party project, not one published by Google or the Chromium project.
actseestaterunvision