MCP Connector

Drive real Chrome with logged-in sessions for AI agents

MCP browser server that drives real Chrome with your real logged-in sessions, passing bot.sannysoft with a genuine fingerprint.

Works with chromechromiumclaudecursorvscode

90
Spark score
out of 100
Updated last month
Source checked Sep 10, 2026
Version 1.0.0
Models
claudegemini 2 0universal

Add to Favorites

Why it matters

Enable AI models to browse the web authentically by controlling your actual Chrome browser with real logged-in sessions, passing bot detection with genuine fingerprints and human-like interactions instead of being flagged as headless automation.

Outcomes

What it gets done

01

Reuse your real Chrome profile cookies so AI lands already authenticated on sites without hitting login walls

02

Pass bot detection checks with genuine browser fingerprints and real GPU WebGL rendering

03

Detect and handle CAPTCHAs, bot walls, consent gates, and rate-limits automatically during navigation

04

Search across multiple sources (DuckDuckGo, Google, Bing, YouTube) and merge results while routing around blocks

Source

Get it from source

Spark does not host a copy of it.

Open source

Reports

Agent outcome reports

No reports yet

Capabilities

Tools your agent gets

navigate

Navigate to a URL and detect bot walls, CAPTCHAs, consent gates, rate-limits and login gates.

find

Semantically find elements using accessibility tree, heuristics, and optional LLM.

click

Click an element with human-like cursor movement and timing.

type

Type text with realistic per-key timing.

fill

Fill and submit forms.

screenshot

Take a screenshot of the current page.

read

Read visible page text.

scroll

Scroll the page.

+12 tools

Overview

Neobrowser

NeoBrowser is an MCP server that drives a real Chrome browser, optionally reusing real logged-in sessions, with a genuinely consistent fingerprint that passes bot.sannysoft and a `navigate` tool that detects rather than tries to defeat interactive bot challenges. Use it when an AI agent needs to browse the web authenticated as a real user without triggering bot detection, on sites and accounts the user themselves has access to.

What it does

NeoBrowser is an MCP server that lets an AI model drive a real Google Chrome binary, optionally reusing your actual logged-in profile, so the model lands already authenticated and looks like a genuine user instead of a fresh, fingerprintable headless browser. It passes bot.sannysoft's WebDriver, Chrome, plugins, and WebGL checks with the host's genuine fingerprint by staying consistent rather than piling on spoofs: real TLS and fonts, navigator.webdriver forced undefined, a User-Agent rewritten to the real installed Chrome version so Client Hints stay consistent, and real (not software) GPU WebGL. It does not claim to defeat interactive challenges like reCAPTCHA or Turnstile - instead, its navigate tool detects bot walls, CAPTCHAs, consent gates, and login gates on any site and hands control back so the model can react with a real-session or human path rather than hammering the wall.

When to use - and when NOT to

Use NeoBrowser when an AI agent needs to browse the web the way a real logged-in user does - filling forms, uploading files, searching, reading pages - without constantly hitting login walls or bot checks the way a stock headless browser tool does. Real-session mode is opt-in and reads cookies from a real Chrome profile via the OS keychain (macOS Keychain, Linux secret-service, Windows DPAPI), excluding session-identity cookies for Google, LinkedIn, and Microsoft so the real browser isn't logged out; it should only be pointed at sites and tasks the user would be comfortable doing themselves, not used to evade access controls on accounts that aren't the user's own. It is not a guaranteed CAPTCHA-defeating tool: on adversarial pages tested from a single IP, both NeoBrowser and Playwright MCP were walled equally in the project's own benchmark, and a first, cookie-less profile is itself a signal.

Capabilities

  • 43 tools covering navigation, clicking, typing, form fill/submit, file upload/download, page reading, table extraction, screenshots, scrolling, console/network logs, performance metrics, playbook record/replay, multi-source web/image/video search, and login.
  • Semantic element finding via the accessibility tree plus heuristics, with an optional LLM fallback (find) enabled by setting ANTHROPIC_API_KEY, off and at your own cost by default.
  • Multi-source search (DuckDuckGo and Google for text, Bing and Google for images, YouTube and Google for video) that skips walled sources and merges results rather than depending on one site.
  • Real multi-tab support (new_tab/list_tabs/switch_tab/close_tab) sharing one Chrome instance, with self-healing recovery from dead tabs or a restarted Chrome and no orphaned Chrome processes.
  • Behaviorally human input: clicks move the cursor along a multi-step path with human-cadence pauses instead of teleporting, and typing can use per-key realistic timing.
  • SSRF-guarded server-side fetches (browse, download) restricted to public http(s), a login tool that refuses non-https URLs and never logs credentials, and session files written under ~/.neobrowser with 0600 permissions.

How to install

curl -fsSL https://raw.githubusercontent.com/pitiflautico/neobrowser/main/install.sh | sh

This installs a single ~4 MB static Rust binary with no runtime to install; Windows binaries are on the Releases page. It requires Google Chrome or Chromium, auto-discovered on macOS/Linux/Windows or overridden with NEOBROWSER_CHROME_BIN. Register it with any MCP client:

{ "mcpServers": { "neobrowser": { "command": "neobrowser" } } }

To reuse real logged-in sessions, set NEOBROWSER_REAL_PROFILE to a Chrome profile folder name (for example "Default"); to attach to an already-running Chrome instead, set NEOBROWSER_ATTACH_PORT to its remote-debugging port, in which case NeoBrowser never patches or kills the real browser. Run neobrowser doctor to verify Chrome is found and test a live CDP connection. Licensed under MIT.

Who it's for

Developers building AI agents that need to browse the web as an authenticated user - filling out forms, searching, or working inside logged-in accounts - without the agent getting blocked by bot detection or forced to re-authenticate on every session.

Source README

NeoBrowser

CI
Release
License: MIT
Install in VS Code
Install in Cursor

Your AI drives a real Chrome with your real logged-in sessions - it wins the fingerprint game (passes bot.sannysoft with a genuine fingerprint), moves the mouse like a human, and lands already authenticated, so it isn't flagged like a stock headless bot. An MCP server for AI models to use the web the way you do.

It doesn't pretend to be invisible: when a site throws an interactive challenge (reCAPTCHA, Turnstile) NeoBrowser detects it and hands control back with a real-session or human path - that honesty is what makes it dependable.

Most browser tools for LLMs launch a fresh, fingerprintable headless browser with no cookies, so the model hits login walls and bot checks constantly. NeoBrowser drives the real Google Chrome binary and can reuse your actual logged-in profile, so the model lands already authenticated and looks like a genuine user - because it is one.

// Add to your MCP client (Claude Code, Claude Desktop, Cursor, …)
{ "mcpServers": { "neobrowser": { "command": "neobrowser" } } }

Rust rewrite: a single ~4 MB static binary, no runtime to install. (The original Python implementation lives on in this repo as a test oracle - see Development.)


Install

# One line (macOS / Linux):
curl -fsSL https://raw.githubusercontent.com/pitiflautico/neobrowser/main/install.sh | sh

# Or from source (needs the Rust toolchain):
git clone https://github.com/pitiflautico/neobrowser && cd neobrowser/rust
cargo build --release        # -> target/release/neobrowser

neobrowser doctor            # verify Chrome is found + a live CDP smoke test

Windows binaries are on the Releases page. Requires Google Chrome (or Chromium); auto-discovered on macOS/Linux/Windows, override with NEOBROWSER_CHROME_BIN.

See it work

Real run: login, file upload and a bot-detector check against live sites (~14 s).

python3 rust/scripts/demo.py     # drives a real login, file upload, and a bot-detector check

Real output against live sites:

✓ Open a real login page             Navigated to .../login
✓ Fill the username / password       ok
✓ Click Login (real isTrusted click) ok
✓ Read the result → logged in        You logged into a secure area!
✓ Attach a real image file           ok
✓ Submit the upload                  ok
✓ Server confirms the file           neobrowser_demo.png
✓ Check the stealth tells            {"webdriver":"hidden (passed)","chrome_runtime":true,"headless_ua":false}

Why NeoBrowser

NeoBrowser Playwright MCP / Puppeteer browser-use
Drives the real Chrome binary ⚠️ bundled Chromium ⚠️
Reuses your real logged-in sessions (no API keys, no re-login)
Stealth by default - passes bot.sannysoft with a genuine fingerprint partial
Semantic element finding (accessibility tree + heuristics + optional LLM) ❌ selectors
Multi-source search that routes around bot walls
Single static binary, zero runtime deps ❌ Node + browsers
Talks CDP directly (no Selenium/WebDriver) - -

Features

  • Real-session browsing - optionally decrypt + inject cookies from your real Chrome profile (opt-in; macOS Keychain / Linux secret-service / Windows DPAPI). Session-identity cookies for Google/LinkedIn/Microsoft are excluded so your real browser isn't logged out.
  • Stealth-hardened, genuinely - real Chrome, navigator.webdriver suppressed, real-version User-Agent matching its Client Hints, real GPU WebGL (not spoofed). The philosophy is consistency, not piling on fakes. Verified live against bot.sannysoft.
  • Bot-wall aware - navigate detects bot walls, CAPTCHAs, consent gates, rate-limits and login gates on any site and tells the model how to react.
  • Multi-source search - text (DuckDuckGo + Google), images (Bing + Google), videos (YouTube + Google): walled sources are skipped, results merged. No single site is a hard dependency.
  • Real multi-tab - new_tab / list_tabs / switch_tab / close_tab, all sharing one Chrome.
  • 43 tools - navigate, click, type, fill/submit forms, upload/download, read, extract tables, screenshot, scroll, console/network logs, performance metrics, record/replay playbooks, web/image/video search, login, and more.
  • Robust core - one isolated CDP connection per tab (tokio), typed timeouts, self-healing recovery from dead tabs / restarted Chrome, and no orphaned Chrome processes.

Documentation

  • docs/TOOLS.md - full reference for all 43 tools (params + descriptions). Regenerate with neobrowser tools --markdown; introspect live with neobrowser tools.
  • AGENTS.md - architecture, build/test, and conventions for contributors and AI agents.
  • The MCP initialize response ships an instructions field so the model gets a usage primer automatically.

Benchmark

A reproducible harness (bench/) drives browser tools through a shared
task matrix. It includes a neutral 2-way comparison vs Playwright MCP
(python3 bench/compare.py) with a common layer - nothing tuned to make either win.
Honest first-run findings: both pass the shared functional tasks; Playwright MCP is
faster
(NeoBrowser pays for forcing frames so deferred content renders), while
NeoBrowser adds session persistence and first-class bot-wall detection Playwright
MCP lacks. On adversarial pages both were walled equally (single IP) - no "evades
better" claim; that needs residential proxies + repeated runs. Metrics separate
task_execution_success from destination_access_success so a detected wall never
inflates the score. See bench/README.md and bench/compare.md.

Usage

Register it with any MCP client, then ask your model to browse. Example tool calls:

navigate   { "url": "https://example.com" }
find       { "intent": "search box" }        → returns a backendNodeId
type       { "text": "hello world" }
screenshot { "format": "png" }                → returned as an image
read       {}                                 → visible page text

By default NeoBrowser runs its own headless Chrome under a dedicated profile. To reuse your real logged-in sessions, set NEOBROWSER_REAL_PROFILE (see below).

Real-session mode

Set NEOBROWSER_REAL_PROFILE to the Chrome profile folder whose sessions you want (e.g. "Default", "Profile 1"). NeoBrowser decrypts that profile's cookies via the OS keychain and injects them, so the agent starts authenticated:

{ "mcpServers": { "neobrowser": {
  "command": "neobrowser",
  "env": { "NEOBROWSER_REAL_PROFILE": "Default" }
} } }

Or attach to a Chrome you already have open (started with --remote-debugging-port=9222): set NEOBROWSER_ATTACH_PORT=9222. In attach mode NeoBrowser never patches or kills your real browser.

Stealth

Modern bot detection (Cloudflare, DataDome, …) mostly looks for inconsistencies - a spoofed UA that doesn't match Client Hints, a HeadlessChrome token, software WebGL, navigator.webdriver === true. NeoBrowser is genuinely consistent rather than piling on spoofs:

  • Runs the real Chrome binary (real TLS, real fonts, real everything).
  • navigator.webdriver forced undefined; anti-throttle + focus emulation keep the headless compositor live so content actually renders.
  • UA rewritten to the real installed Chrome version via the launch flag, so genuine Client Hints stay consistent.
  • No --disable-gpu, so WebGL reports the real GPU.
  • JS patches for plugins, languages, and the permissions/Notification mismatch - only on tabs NeoBrowser owns, never on an attached real Chrome.

Beyond the fingerprint, input is behaviorally human: clicks move the cursor to the target along a multi-step path with human-cadence pauses (not a teleport-then-click), and typing can be per-key with realistic timing - the signals behavioral systems watch for.

Verified live: passes bot.sannysoft's WebDriver, Chrome, plugins and WebGL checks with the host's genuine fingerprint. CI installs Chrome and runs these checks against a real browser on every push; the full bot.sannysoft run is an on-demand test (cargo test --test stealth_verify -- --ignored).

What no tool can promise is defeating interactive challenges - reCAPTCHA, Turnstile, or behavioral/reputation systems (DataDome) can still put up a wall, and a fresh cookie-less profile is itself a signal. NeoBrowser's edge there is a warm real profile plus detecting the wall (navigate flags it) so the model reacts instead of hammering it.

Configuration

Env var Default Purpose
NEOBROWSER_REAL_PROFILE (unset) Real Chrome profile folder to pull sessions from
NEOBROWSER_PROFILE default Which Ghost profile this session uses. Chrome locks a profile exclusively, so give concurrent sessions different names to keep them from colliding
NEOBROWSER_ATTACH_PORT (unset) Attach to an already-running Chrome on this debug port
NEOBROWSER_CHROME_BIN (auto) Path to the Chrome/Chromium binary
NEOBROWSER_HOME ~/.neobrowser Where profiles, cookies, sessions, playbooks, downloads live
NEOBROWSER_PROXY (unset) Upstream proxy (http://… or socks5://…)
NEOBROWSER_DISABLE_GPU (unset) Force software rendering (GPU-less CI hosts only)
ANTHROPIC_API_KEY (unset) Enables the optional LLM fallback in find (your key, your cost; off by default)

Security & responsible use

Real-session mode reads cookies from your Chrome profile and injects them into an automated browser. Treat it like any credential:

  • It is opt-in - nothing touches your real profile unless you set NEOBROWSER_REAL_PROFILE.
  • Cookie/session files are written under ~/.neobrowser with 0600 permissions.
  • Server-side fetches (browse, download) are SSRF-guarded to public http(s) only.
  • The login tool refuses non-https URLs and never logs credentials.
  • Anything an AI browses with your session acts as you. Point it only at sites and tasks you'd be comfortable doing yourself. This is a tool for automating your own accounts and workflows - not for evading access controls on services you don't own.

Development

# Rust (primary):
cd rust && cargo test          # unit + one live-Chrome integration test (self-skips without Chrome)
cargo test --test stealth_verify -- --ignored   # real bot.sannysoft detector

# Python (legacy implementation, kept as a differential-testing oracle):
pip install -e ".[dev]" && python -m pytest -q

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.