🤖 Build, test, and debug web automations with AI agents.
An MCP server that gives LLM agents direct control over stealth Chromium browsers.
Dual Engine (CDP + CloakBrowser) • Live Debugging • Proxy Alignment • Persistent Profiles
💡 What is Mithwire MCP?
mithwire is a production-ready anti-detect browser engine. Mithwire MCP is the Model Context Protocol server that exposes Mithwire's stealth browser capabilities directly to AI models like Claude, Cursor, and autonomous agents.
Instead of manually writing fragile browser-automation glue code, you can hand over the MCP server to an AI agent to build, execute, test, and debug web automations autonomously.
Your AI agent can invoke structured MCP tools (session_start, browser_navigate, browser_click, browser_snapshot, browser_solve_cloudflare) to explore pages, handle logins and captchas, capture console and network logs, and inspect DOM state in real time.
🛠️ Built for Developing & Debugging Automations
Mithwire MCP was designed specifically as an interactive development harness for AI agents and human developers:
- 🤖 Autonomous Automation Authoring: Give your AI agent a high-level prompt ("Build a script that logs into service X and downloads report Y"). The agent uses MCP tools to navigate, find selectors, verify state, and iterate until the script works.
- 🔍 Live Inspection & Diagnostics: Agents can capture DOM snapshots, monitor JavaScript console errors, record full CDP network traces, and read storage/cookies at any point during execution.
- 🖥️ Visual VNC Debugging: Pre-packaged with an embedded noVNC web viewer (
http://localhost:6080/vnc.html). Watch your AI agent interact with the browser live in your desktop browser. - 🧪 E2E Test Prototyping: Rapidly prototype and debug resilient scrapers and workflows without getting blocked by anti-bot protections.
💥 The Problem for AI Agents
When AI agents attempt web operations using traditional tools (Playwright, Puppeteer, Selenium, or standard web fetchers), they immediately hit anti-bot walls:
- ❌ Instant Anti-Bot Blocks: Standard automation frameworks leak
navigator.webdriver = trueand ChromeDriver artifacts, triggering Cloudflare, Akamai, and DataDome challenges. - ❌ Proxy & IP Mismatches: Agents using proxies often leak their host IP via STUN/WebRTC or present timezone/locale settings that contradict their proxy exit location.
- ❌ State Loss Across Turns: AI agents frequently lose cookies, session state, or local storage between execution turns or subagent invocations.
🛡️ The Mithwire MCP Solution
Mithwire MCP solves these challenges natively for AI agent workflows:
- 🥷 Stealth by Design: Operates on Mithwire—no WebDriver, no Selenium, zero
navigator.webdriverleaks, with built-in Cloudflare Turnstile bypass. - ⚡ Dual Stealth Engines: Support for both lightweight
cdpmode (standard Chrome) and C++-patchedstealthmode (CloakBrowser) per session. - 🌍 Automatic Proxy & Egress Alignment: Auto-probes proxy health before launching Chromium and aligns timezone, locale, languages, and geolocation to match the proxy exit IP.
- 👤 Persistent Profiles & State Store: Reusable browser profiles (
profiles/) store cookies, localStorage, proxies, and persisted fingerprints across agent runs. - 🔒 WebRTC Leak Protection: Automatically guards STUN/UDP queries against leaking the host's real IP address.
⚡ Engine Modes & Capabilities
Configure stealth levels on a per-session or per-profile basis:
| Engine Mode | Binary | Capabilities | Best Suited For |
|---|---|---|---|
cdp (Default) |
Stock Chrome / Chromium | Fast, reliable CDP Emulation overrides for timezone, locale, geo, UA, platform, and device metrics. |
Local workstations, remote Linux servers (same-OS profiles or standard targets), fast script prototyping. |
stealth |
[CloakBrowser] | C++ source code patches for Canvas, WebGL GPU strings, AudioContext, native fonts, and TLS signatures. | Cross-OS profiles (e.g. Windows profile on a Linux VPS), cloud agents, high-security anti-bot targets. |
✨ Key Features & Capabilities
- 🤖 Complete Agent Toolset: Full toolsuite covering navigation, DOM querying, clicking, typing, scrolling, screenshots, network capture, and JS evaluation.
- 🧩 Cloudflare Bypass: Solves Cloudflare Turnstile challenges on command via
browser_solve_cloudflare. - 🗂️ Centralized State Store: Default
~/.mithwire-mcpdirectory manages persistent profiles, proxy registries, and cookie import/export files. - 🛰️ Proxy Registry & Alignment: Store proxy credentials once and reference them by name. Automatically validates proxy health and aligns timezone/locale/geo before Chromium launches.
- 🐳 Docker-Ready with Visual Debugging: Pre-configured Docker container with Xvfb, CloakBrowser, and noVNC web viewer (
http://localhost:6080/vnc.html).
🚀 Installation
# Standard install (CDP mode)
pip install mithwire-mcp
# With Stealth Mode support (CloakBrowser)
pip install "mithwire-mcp[stealth]"
💻 MCP Client Configuration
Add Mithwire MCP to your MCP client config (e.g. Cursor, Claude Desktop):
{
"mcpServers": {
"mithwire-mcp": {
"command": "mithwire-mcp",
"args": ["--transport", "stdio"]
}
}
}
🐳 Running in Docker (With Visual VNC Debugging)
For isolated execution or local visual observation:
# Pull public Docker image
docker pull ghcr.io/codeisalifestyle/mithwire-mcp:latest
# Run local dev container with noVNC enabled
docker compose -f docker-compose.dev.yml up -d --build
Endpoints:
- 🔌 MCP Server (Streamable HTTP):
http://localhost:7867 - 🖥️ noVNC Visual Viewer:
http://localhost:6080/vnc.html
🧰 Available MCP Tools Reference
🔁 Session Lifecycle
session_start- Launch a new browser session (ephemeral or persistent profile)session_list- List active browser sessionssession_get- Get session status and identity metadatasession_set_fingerprint- Override the active session fingerprintsession_rotate_proxy- Rotate the proxy exit IP and optionally re-align identitysession_state_paths- Show state directory layout (profiles, proxies, cookies)session_set_policy/session_get_policy- Set or read per-session security policysession_set_download_dir- Change the session download directorysession_warmup- Warm up a session for more natural browsing patternssession_stop- Close a specific sessionsession_stop_all- Terminate all running sessions
👤 Profile & Proxy Management
session_profile_list/session_profile_get/session_profile_set/session_profile_delete- CRUD for persistent profilessession_profile_regenerate_fingerprint- Regenerate a profile's fingerprint via BrowserForgesession_proxy_list/session_proxy_get/session_proxy_set/session_proxy_delete- Proxy registry CRUD
🎮 Browser Navigation & DOM Actions
browser_url- Get the current page URLbrowser_navigate/browser_back/browser_forward/browser_reload- Navigationbrowser_snapshot- Take interactive DOM snapshot with element referencesbrowser_query- Find elements by CSS selector or textbrowser_click/browser_mouse_click/browser_mouse_move/browser_press_hold/browser_type- User interactionsbrowser_scroll- Scroll the page or an elementbrowser_handle_dialog- Accept or dismiss browser dialogsbrowser_set_file_input- Set files on a file input elementbrowser_take_screenshot- Capture page screenshotbrowser_solve_cloudflare- Automatically solve Cloudflare Turnstile challenge
🗂️ Tabs
browser_tab_list/browser_tab_current- List open tabs or get the active tabbrowser_tab_new/browser_tab_switch/browser_tab_close- Create, switch, or close tabs
⏳ Waits
browser_wait- Wait for a fixed durationbrowser_wait_for_selector- Wait until a CSS selector appearsbrowser_wait_for_text- Wait until text appears on the pagebrowser_wait_for_url- Wait until the URL matches a patternbrowser_wait_for_function- Wait until a JS expression returns truthybrowser_wait_for_network_idle- Wait until network activity settles
📡 Cookies, Storage & Network
browser_cookies_get/browser_cookies_set/browser_cookies_save/browser_cookies_clearbrowser_storage_get/browser_storage_set/browser_storage_clearbrowser_console_messages- Read captured console log messagesbrowser_network_requests- List captured network requestsbrowser_network_capture_start/browser_network_capture_get/browser_network_capture_stop/browser_network_capture_statusbrowser_downloads- List downloaded files
🔧 Advanced: HTML, JS Evaluation & Tracing
browser_html- Get the raw HTML of the current page or an elementbrowser_evaluate- Execute arbitrary JavaScript in the page contextsession_trace_start/session_trace_stop/session_trace_get- Record and inspect CDP tracessession_trace_export/session_trace_replay- Export or replay recorded traces
🧹 No Orphaned Chrome
Every session owns the Chrome process it launched, and the server makes sure none outlives it:
- A
session_startthat fails, times out or is cancelled by the client tears down its half-started browser (no more empty windows left behind). session_stop,session_stop_alland server shutdown close browsers concurrently and delete their temporary profiles.- On
SIGTERM/SIGHUP/SIGINTthe server stops every browser immediately and exits instead of hanging. - If the server itself is killed outright (
SIGKILL, OOM, a crash), a tiny watchdog process from the engine terminates exactly its browsers and removes their temporary profiles. SetMITHWIRE_NO_EXIT_GUARD=1to disable it.
scripts/smoke_process_lifecycle.py checks all of this against a real stdio server and a real Chrome (it also runs in CI).
📜 License
Distributed under the MIT License. Powered by mithwire (AGPL-3.0).
Metadata
Release files for mithwire-mcp 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mithwire_mcp-0.5.1.tar.gz | 130.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mithwire_mcp-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 214.9 kB
Release files / mithwire_mcp-0.5.1.tar.gz
| Download URL | mithwire_mcp-0.5.1.tar.gz |
|---|---|
| Size | 130.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
73e50fe9fbb4629cb81b860b62c3f9c9187e8ec5159e4800e25c1a2fce56324f
|
|
BLAKE2b-256 checksum How to use checksums |
853fdb8943f118cda30a147dd7ec2c8eb2f2d372c62966c3162d0cbb417f82b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.
Transparency logRelease files / mithwire_mcp-0.5.1-py3-none-any.whl
| Download URL | mithwire_mcp-0.5.1-py3-none-any.whl |
|---|---|
| Size | 84.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d87ba154a64be91c631f876045b5606e661e7861017ea044ce0265daaa00ff2
|
|
BLAKE2b-256 checksum How to use checksums |
433b0bf559f22fc1c14d25d14e862a07852f262bc5616e3ccaeaa617fcadf278
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.
Transparency log