CloakMCP

io.github.overtimepogPublished by GitHub account overtimepogv2.0.1Updated Oct 24, 2026

Stealth browser MCP server — anti-detection Chromium with snapshot-first agent interface

Overview

AI-generated overview

Lets an assistant drive a stealth, anti-detection Chromium browser: navigate pages, read them as markdown, and click or type via accessibility-tree refs.

What you can do
CloakMCP runs a locally installed stealth Chromium and exposes browser control tools to an assistant. Core tools cover launching and closing the browser, navigating, going back and forward, taking accessibility-tree snapshots with [@eN] element refs, clicking, typing, selecting, hovering, checking boxes, pressing keys, scrolling, waiting, running JavaScript, and managing pages. It can also return page content as clean markdown or an annotated screenshot with element indices. Optional capability-gated tools add network interception, cookie get/set, PDF export, and console output.
When to use it
Use it when an assistant needs to operate real web pages rather than just fetch them, especially sites that block ordinary automation. The snapshot-first, ref-based interface suits multi-step form filling, navigation, and content extraction. It is a desktop-only local process, so it is not for headless server deployments.
Requirements
A local Python environment with the cloakbrowsermcp package installed via pip, plus the patched Chromium it drives. Runs over stdio by default, or SSE with a port. Optional CLI flags enable extra capabilities and environment variables control logging. A proxy is optional but recommended for stealth use.
Before you install
It is built to evade bot detection, including Cloudflare Turnstile and reCAPTCHA, so using it may violate the terms of service of the sites you visit. Tools can click, type, submit forms, set cookies, intercept network requests, and run arbitrary JavaScript in pages, which can change or send data. A proxy and persistent profile may carry identifying data; review what the assistant is allowed to do.

Installation

In SourceWeft

  1. Open CloakMCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

CloakBrowser MCP

Stealth browser automation for AI agents — a Model Context Protocol server combining CloakBrowser's anti-detection with Playwright MCP-inspired architecture.

CloakBrowser is a source-level patched Chromium that passes Cloudflare Turnstile, reCAPTCHA v3 (0.9 score), FingerprintJS, BrowserScan, and 30+ bot detection services.

Why CloakBrowser MCP?

FeaturePlaywright MCPCloakBrowser MCP
Anti-detection❌ None✅ Source-patched Chromium
Cloudflare bypass❌✅
reCAPTCHA v3❌✅ 0.9 score
Snapshot-first✅✅
Markdown extraction❌✅ Readability-style
Annotated screenshots❌✅ browser-use style
Smart page settlingBasic✅ MutationObserver + networkidle
Auto-retry clicks❌✅
Humanized input❌✅ Mouse curves, keyboard timing
Capability gating✅ --caps✅ --caps

Quick Start

Install

bash
pip install cloakbrowsermcp

Use with Claude Desktop

Add to your claude_desktop_config.json:

json
{  "mcpServers": {    "cloakbrowser": {      "command": "cloakbrowsermcp"    }  }}

Use with VS Code / Cursor

Add to .vscode/mcp.json:

json
{  "servers": {    "cloakbrowser": {      "command": "cloakbrowsermcp",      "args": ["--caps", "all"]    }  }}

Use with Hermes Agent

Add to ~/.hermes/config.yaml:

yaml
mcp_servers:  cloakbrowser:    command: cloakbrowsermcp    args: ["--caps", "all"]    timeout: 120

How It Works

Snapshot-First Architecture

CloakBrowser MCP uses accessibility tree snapshots as the primary way for AI models to understand web pages — not screenshots, not raw HTML.

1. cloak_launch()           → Start stealth browser2. cloak_navigate(pid, url) → Go to page (auto-waits for settle)3. cloak_snapshot(pid)      → Get interactive elements with [@eN] refs4. cloak_click(pid, '@e5')  → Click element by ref5. cloak_type(pid, '@e3', 'hello')  → Type into input6. cloak_read_page(pid)     → Get content as clean markdown7. cloak_close()            → Done

Each interactive element gets a [@eN] ref ID. All interaction tools use these refs — no CSS selectors needed.

Three Ways to See a Page

  1. cloak_snapshot() — Accessibility tree with [@eN] refs. Fast, cheap, reliable. Use this.
  2. cloak_read_page() — Clean markdown extraction. For reading content, not interacting.
  3. cloak_screenshot() — Annotated screenshot with element indices. For visual context (images, charts, CAPTCHAs).

Stealth by Default

All anti-detection features are ON by default:

  • Source-patched Chromium binary (not Playwright patches — actual Chromium source modifications)
  • Human-like mouse curves, keyboard timing, and scroll patterns (humanize=True)
  • Stealth fingerprint arguments (consistent canvas, WebGL, audio fingerprints)
  • Proxy support with GeoIP-based timezone/locale detection

Tools

Core Tools (20 — always available)

ToolDescription
cloak_launchStart stealth browser (all anti-detection ON)
cloak_closeClose browser and release resources
cloak_snapshotPRIMARY — accessibility tree with [@eN] refs
cloak_clickClick element by ref (auto-retry)
cloak_typeType into input by ref (with submit option)
cloak_selectSelect dropdown option by ref
cloak_hoverHover over element by ref
cloak_checkCheck/uncheck checkbox by ref
cloak_read_pagePage content as clean markdown
cloak_screenshotAnnotated screenshot with element indices
cloak_navigateGo to URL (auto-waits for settle)
cloak_backNavigate back in history
cloak_forwardNavigate forward in history
cloak_press_keyPress keyboard key
cloak_scrollScroll page up/down
cloak_waitWait for page to settle
cloak_evaluateExecute JavaScript in page
cloak_new_pageOpen new page/tab
cloak_list_pagesList all open pages
cloak_close_pageClose a specific page

Capability-Gated Tools (enabled via --caps)

Enable with cloakbrowsermcp --caps network,cookies,pdf,console or --caps all.

ToolCapabilityDescription
cloak_network_interceptnetworkBlock/mock/passthrough requests
cloak_network_continuenetworkRemove interception rule
cloak_get_cookiescookiesGet all cookies
cloak_set_cookiescookiesSet cookies
cloak_pdfpdfSave page as PDF
cloak_consoleconsoleGet browser console output

Configuration

CLI Options

cloakbrowsermcp [--caps CAPS] [--transport {stdio,sse}] [--port PORT]
  • --caps: Comma-separated capabilities: network, cookies, pdf, console, all
  • --transport: MCP transport — stdio (default) or sse
  • --port: Port for SSE transport (default: 8931)

Environment Variables

VariableDefaultDescription
CLOAKBROWSER_LOG_LEVELINFOLog level
CLOAKBROWSER_LOG_FILE~/.cloakbrowser/logs/server.logLog file path
CLOAKBROWSER_LOG_STDERRfalseAlso log to stderr

Launch Options

python
cloak_launch(    headless=True,        # False for headed mode (some sites require it)    proxy="http://...",   # Residential proxy recommended    humanize=True,        # Human-like input (ON by default)    stealth_args=True,    # Stealth fingerprints (ON by default)    timezone="America/New_York",    locale="en-US",    geoip=False,          # Auto-detect from proxy IP    fingerprint_seed="my-identity",  # Consistent fingerprint across sessions    user_data_dir="/path",  # Persistent profile)

Backend note: SessionConfig.backend is deprecated. CloakBrowser 0.4.0 removed the patchright backend (it broke proxy auth and add_init_script without improving stealth), so current versions ignore the setting and log a one-time warning. If you still need it, pip install "cloakbrowsermcp[patchright]" pins cloakbrowser<0.4, where the old backend still works, but it carries those upstream bugs.

Architecture

cloakbrowsermcp/├── server.py      # FastMCP server, tool registration, error handling├── session.py     # Browser lifecycle, page management, ref storage├── snapshot.py    # Accessibility tree JS, ref resolution├── markdown.py    # Readability-style HTML-to-markdown extraction├── vision.py      # Annotated screenshots with element indices├── waiting.py     # Smart wait, page settle, retry logic├── stealth.py     # Stealth config inspection├── network.py     # Network intercept, cookies (capability-gated)├── __init__.py└── __main__.py

Design Principles

  1. Snapshot-first — Tool descriptions steer models to use cloak_snapshot() as the primary page understanding tool
  2. Ref-based only — No CSS selector tools. All interaction via [@eN] refs from snapshots
  3. Stealth by default — Anti-detection, humanization, and stealth args all ON without configuration
  4. Auto-snapshot after actions — Click, type, navigate all return an updated snapshot
  5. Smart waiting — Auto-wait on navigation (networkidle + MutationObserver settle), auto-retry on failed clicks
  6. Capability gating — Advanced tools (network, cookies, PDF) off by default to keep tool count low
  7. Clean content extraction — Markdown for reading, snapshot for interaction, annotated screenshots for vision

Development

bash
git clone https://github.com/overtimepog/CloakMCPcd CloakMCPpip install -e ".[dev]"pytest

License

Apache-2.0

Source: README.md at commit 1e7122d

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v2.0.1LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.