Bladebro

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

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add bladebro -- npx -y bladebro mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "bladebro": {
      "command": "npx",
      "args": [
        "-y",
        "bladebro",
        "mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "bladebro": {
      "command": "npx",
      "args": [
        "-y",
        "bladebro",
        "mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "bladebro": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "bladebro",
        "mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.bladebro]
command = "npx"
args = ["-y", "bladebro", "mcp"]
Gemini CLITerminal
gemini mcp add --scope user bladebro npx -- -y bladebro mcp
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

FirstTerminal
git clone https://github.com/dondai44423/bladebro.git
cd bladebro
cargo build --release
Claude CodeTerminal
claude mcp add bladebro -- '<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro' mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "bladebro": {
      "command": "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro",
      "args": [
        "mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "bladebro": {
      "command": "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro",
      "args": [
        "mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "bladebro": {
      "type": "stdio",
      "command": "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro",
      "args": [
        "mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.bladebro]
command = "<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro"
args = ["mcp"]
Gemini CLITerminal
gemini mcp add --scope user bladebro '<ABSOLUTE_PATH_TO_CLONE>/target/release/bladebro' -- mcp

Settings 12

CHROME_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.

What it does

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.

What it needs

RuntimeNode.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.

Limits

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).

Who it suits

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.

Tools 5

act
Performs a page action (click, type, fill, navigate, scroll, eval, download, pdf, batch, and more) and returns what changed
see
Reads the page as ref-tagged elements, markdown, an outline, extracted lists, links or forms, or console and network logs
state
Manages tabs, cookies, local and session storage, saved login sessions and asset blocking
run
Runs a sequence of steps with if/else branches, while loops and inline reads in one call
vision
Takes a PNG screenshot of the page, optionally with numbered ref badges

Similar servers