Skip to main content
Glama
AntonLi-PM

mcp-stealth-browser

by AntonLi-PM

๐Ÿš€ MCP Stealth Browser (mcp-stealth-browser)

Smithery Badge GitHub Release License: MIT MCP Standard Python 3.10+ Cloudflare Bypass PRs Welcome

๐Ÿ’ก Facing IP Bans, Zero-View Shadowbans, or Captcha Loops? Need custom dedicated residential IP pools or enterprise setup assistance? ๐ŸŽ Claim 1GB Free Residential Proxy Trial | ๐Ÿ’ฌ Telegram Support: @ip38888 | โœ‰๏ธ Email: anton.li.pm@gmail.com | ๐Ÿ“Š Live Benchmark

โญ Love this project? Please consider starring it on GitHub! It helps keep the open-source residential IP anti-bot benchmark updated.

๐Ÿ”ฅ Check Out Our High-Performance AI & Agentic Suite:

The High-Performance Stealth Web Browsing & Search MCP Server for Claude Desktop, Cursor, Windsurf & Cline.
Bypasses Cloudflare Turnstile, anti-bot shields, and JavaScript SPAs with dual-engine TLS/Playwright impersonation, dynamic residential proxy rotation, and token-optimized semantic Markdown extraction.


๐Ÿ›๏ธ Architecture Overview

flowchart LR
    A[LLM Agent<br/>Claude / Cursor / Cline] -->|JSON-RPC 2.0| B(MCP Stealth Server)
    B -->|Task Router| C{Engine Dispatcher}
    C -->|Tier 1: Fast Path <400ms| D[TLS Impersonator<br/>curl_cffi / JA3 / JA4]
    C -->|Tier 2: Challenge Escalation| E[Stealth Playwright<br/>CDP Hooks + Turnstile Solver]
    D --> F[Sticky Residential Proxy Router<br/>Ropond Proxy Cloud]
    E --> F
    F -->|Clean IP Lease| G((Target Website))
    G --> H[Token Optimizer Engine<br/>HTML to Semantic Markdown]
    H -->|80-95% Token Savings| A

Related MCP server: Stealth Browser MCP Server

๐Ÿ“Š Feature Comparison Matrix

Capability

mcp-stealth-browser

@modelcontextprotocol/server-fetch

playwright-mcp

puppeteer-mcp

Cloudflare Turnstile Bypass

โœ… Native (<400ms / Dual-Engine)

โŒ (Throws 403)

โš ๏ธ (Requires manual script)

โŒ (Blocked)

DataDome / Akamai Evasion

โœ… JA3/JA4 TLS Fingerprint

โŒ (No impersonation)

โŒ (Detectable CDP)

โŒ (Detectable)

Multi-Engine Web Search

โœ… Built-in (Zero API Keys)

โŒ (None)

โŒ (None)

โŒ (None)

Context Token Optimization

โœ… 80-95% Compression (Markdown)

โš ๏ธ (Basic Markdownify)

โŒ (Raw DOM dump)

โŒ (Raw dump)

Sticky Residential Proxy Pool

โœ… Auto-Rotation on 403/429

โŒ (Static proxy only)

โŒ (None)

โŒ (None)

Response Latency

โšก < 400ms (TLS tier)

1 - 3s

5 - 12s

5 - 15s

1-Click Install

๐Ÿš€ Smithery (npx) / uvx

uvx

npx

npx


โšก Why mcp-stealth-browser?

Standard web fetch and browser MCP servers (@modelcontextprotocol/server-fetch, playwright-mcp) fail on 70%+ of modern websites:

  • โŒ Cloudflare & Anti-Bot Blocking: Hit with 403 Forbidden or Just a moment... CAPTCHA loops.

  • โŒ Token Window Explosion: Dump raw HTML with bloated scripts, SVGs, and cookie modals, wasting 100k+ tokens.

  • โŒ IP Rate-Limits: Repeated queries from data center IPs get permanently blocked.

  • โŒ No Native Multi-Engine Web Search: Requires expensive Bing/Google API keys to search the web.

๐ŸŒŸ What mcp-stealth-browser solves:

  • โœ… Dual-Engine Cascade: Fast TLS/JA4 browser impersonation (<400ms) with auto-escalation to headless Playwright when Cloudflare Turnstile or DataDome is detected.

  • โœ… Built-in Real-Time Web Search: stealth_search crawls Google & DuckDuckGo simultaneously with zero API keys.

  • โœ… Token-Optimized Markdown: Strips navigation, headers, footers, and scripts, compressing content by 80-95% while preserving tables, headings, and code snippets.

  • โœ… Sticky Residential Proxy Pool: Dynamic residential proxy rotation with 10-30 minute sticky IP sessions and automatic block recovery.

  • โœ… Universal 1-Click Integration: Drop-in configuration for Claude Desktop, Cursor IDE, Windsurf, and Cline.


๐Ÿ› ๏ธ MCP Tools Exposed

Tool Name

Parameters

Description

stealth_fetch

url, bypass_challenge=True, session_id

Fetches any URL bypassing Cloudflare Turnstile, returns clean semantic Markdown with token estimation.

stealth_search

query, num_results=5, session_id

Multi-engine real-time web search (DuckDuckGo + Google) returning clean ranked citations with zero API keys.

proxy_status

none

Returns proxy pool health, active sticky sessions, and residential IP provider status.

rotate_proxy

session_id

Forces an immediate IP rotation for a specific sticky session.


๐Ÿ“ฆ Quick Start & Configuration

To automatically install for Claude Desktop, run:

npx -y @smithery/cli install @AntonLi-PM/mcp-stealth-browser --client claude

To install for Cursor, run:

npx -y @smithery/cli install @AntonLi-PM/mcp-stealth-browser --client cursor

1. Manual Install via pip or uv

pip install git+https://github.com/AntonLi-PM/mcp-stealth-browser.git
# Optional: Install Playwright for heavy Turnstile challenge solving
playwright install chromium

2. Configure in Claude Desktop

Add to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "stealth-browser": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/AntonLi-PM/mcp-stealth-browser.git", "mcp-stealth-browser"],
      "env": {
        "ROTA_PROXY_URL": "http://user:pass@proxy.ropond.com:8080"
      }
    }
  }
}

3. Configure in Cursor IDE

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "stealth-browser": {
      "command": "python",
      "args": ["-m", "mcp_stealth_browser"],
      "env": {
        "ROTA_PROXY_URL": "http://user:pass@proxy.ropond.com:8080"
      }
    }
  }
}

๐ŸŒ Residential Proxy Setup (High-Volume Scraping)

For high-concurrency scraping without IP blocks, mcp-stealth-browser natively integrates with dynamic residential proxies:

  1. Obtain a residential proxy gateway (claim a 1GB Free Trial at Ropond Proxy Cloud).

  2. Set the environment variable:

export ROTA_PROXY_URL="http://customer-xyz:pass@gw.ropond.com:8080"
  1. mcp-stealth-browser will automatically create sticky sessions per agent conversation and rotate automatically if a 403 or 429 block is encountered.


๐Ÿงช Testing Locally

You can test the search and fetch capabilities directly from CLI:

# Test multi-engine search
python -m mcp_stealth_browser.cli --test-search "DeepSeek R1 reasoning architecture"

# Test stealth fetch on a webpage
python -m mcp_stealth_browser.cli --test-fetch "https://news.ycombinator.com"

# Check proxy pool health
python -m mcp_stealth_browser.cli --status

๐Ÿค Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Explore our complete production-grade anti-bot & matrix marketing open-source ecosystem:

Category

Repository

Description

Global Matrix

omni-social-marketing-cloud

12-platform multi-account cloud control with 1:1 sticky residential IP mesh

Telegram Growth

telegram-cloud-controller

Multi-account Telegram fleet automation, warmup engine & lead harvester

WhatsApp Marketing

whatsapp-marketing-cloud

Multi-account WhatsApp Web cloud sender with session residential routing

TikTok Automation

tiktok-uploader-stealth

Anti-detect TikTok video batch uploader with isolated proxy sessions

E-Commerce Scraper

ecommerce-intelligence-scraper

Competitor price monitor & review scraper for Amazon, Shopee & Shopify

AI Deep Research

agentic-deep-researcher

Autonomous Deep Research engine utilizing heavy multi-hop residential scraping

AI Realtime Search

deepseek-r1-websearch

Real-time web search API for DeepSeek-R1, Ollama & Open-WebUI

MCP Browser Tool

mcp-stealth-browser

FastMCP 2.x stealth browsing server for Claude Desktop, Cursor & Windsurf

Anti-Bot Gateway

searxng-proxy-shield

Rotating residential proxy shield for SearXNG, Perplexica & Open-WebUI

Profile Router

antidetect-proxy-router

Profile-isolated residential proxy router for AdsPower, BitBrowser & Playwright

Turnstile Bypass

cloudflare-bypass-residential-scraper

Turnstile & DataDome bypass scraper with residential session harvesting

Live Benchmark

anti-bot-bypass-benchmark

Empirical anti-bot benchmark comparing datacenter vs residential proxy yields

Available Tools

4 tools
proxy_statusA

Inspect current residential proxy pool health, active sticky sessions, and provider status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The word 'Inspect' suggests a read-only operation with no side effects, and no annotations are present to clarify behavior. The description does not explicitly state whether the tool returns data, mutates state, or has any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, direct, and free of unnecessary detail. It lists exactly what is inspected in a compact sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless status-check tool, the description adequately conveys the core purpose and scope. It does not describe the output format, but the presence of an output schema and the simple inspection nature make the description reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the baseline score applies. The description is consistent with a parameterless status inspection tool and requires no additional parameter explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool inspects current residential proxy pool health, active sticky sessions, and provider status. It uses a specific verb and resource scope, and is easily distinguishable from the sibling tools fetch, search, and rotate proxy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies this is for status inspection rather than fetching, searching, or rotating proxies, but it does not explicitly state when to prefer this tool over alternatives. No direct usage conditions or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rotate_proxyA

Force an immediate lease rotation to a new residential IP for the specified session.

Args: session_id: Session identifier to renew.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool forces an immediate lease rotation, which implies a side effect on the proxy IP. However, it does not mention potential consequences, rate limits, or whether the operation is synchronous or asynchronous, so behavioral transparency is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, using a single clear sentence for the tool purpose and a short, focused argument description. No unnecessary words or redundant information are present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core action and parameter, but it does not mention return values, error conditions, or any output schema details. Given that an output schema exists, some additional context about expected results would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, session_id, is described as 'Session identifier to renew,' which clarifies its purpose. However, the description does not elaborate on whether it is required, how it is validated, or what happens if it is missing or invalid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: forcing an immediate lease rotation to a new residential IP for a specified session. This is specific and unambiguous, and it distinguishes the tool from the sibling tools that fetch, search, or check proxy status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool versus alternatives like proxy_status or stealth_fetch. It only states what the tool does, leaving the agent to infer appropriate usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stealth_fetchB

Fetch any webpage with automated anti-bot & Cloudflare Turnstile evasion. Returns clean, token-optimized Markdown ready for LLM consumption.

Args: url: The web URL to fetch. bypass_challenge: Whether to escalate to headless stealth browser if Cloudflare or anti-bot challenge is detected. session_id: Optional sticky proxy session ID for persistent IP browsing.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
session_idNo
bypass_challengeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description assumes full responsibility. It mentions evasion and return format but does not disclose potential side effects (e.g., proxy rotation, session persistence) or explicitly confirm read-only behavior. While a fetch is inherently non-destructive, the description lacks explicit details about side effects or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct, using only two sentences to convey the core functionality and output format. It avoids unnecessary verbosity and presents information in a clear, direct manner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides essential info (purpose, output) but omits details such as error handling, rate limits, or when to use the tool in conjunction with siblings. The presence of an output schema is noted, but its contents are not described. Overall, it covers the basics but misses edge-case guidance, making it adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no descriptions for parameters, and the tool description merely lists them without explaining their meaning or expected values. For instance, 'bypass_challenge' is not defined, and 'session_id' is unclear. With 0% schema coverage and no explanatory text, the agent has no guidance on how to appropriately set or use these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: fetching any webpage with automated anti-bot evasion and returning Markdown. The verb 'Fetch' and resource 'webpage' are explicit, and the scope is well-defined without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for pages that may require anti-bot or Cloudflare evasion, but it does not explicitly state when to prefer this tool over sibling tools like stealth_search or proxy_status. The guidance is implicit rather than explicit, leaving some room for interpretation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedproxy_status
    • First observedrotate_proxy
    • First observedstealth_fetch
    • First observedstealth_search

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: fetching a URL, searching the web, checking proxy status, and rotating proxies. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (stealth_fetch, stealth_search, proxy_status, rotate_proxy), maintaining uniformity.

Tool Count5/5

Four tools is well-scoped for a stealth browsing/proxy management server, covering core actions without unnecessary bloat or gaps.

Completeness4/5

The tool set covers fetching, searching, and proxy lifecycle management, but could potentially include a method for clearing session data or managing more proxy options. Still, it is largely complete for its stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables undetectable web scraping and browser automation for AI agents with 84 tools including stealth navigation, element extraction, network interception, and auto cookie consent dismissal. Bypasses anti-bot systems like Cloudflare and DataDome while providing LLM-ready markdown output and full Chrome DevTools Protocol access.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides stealth web browsing using dual browser engines (Chromium and Firefox) with automatic bot-detection bypass, enabling AI agents to browse, interact, and extract content from websites without being blocked.
    1
    -