Chrome MCP Stealth
An MCP server for stealth browser automation that uses human-like interaction patterns to bypass bot detection via the Chrome DevTools Protocol. It enables users to navigate, interact with elements, and capture data from websites using undetectable behaviors like Bezier mouse movements and Gaussian typing delays.
README
Chrome MCP Stealth
MCP server for stealth browser automation via Chrome DevTools Protocol. Connects to a real Chrome instance with human-like interaction patterns (Bezier mouse curves, Gaussian typing delays, scroll jitter) to avoid bot detection.
Why
Standard browser automation tools (Playwright, Puppeteer, Selenium) are trivially detected by modern anti-bot systems. Sites fingerprint mouse movements (straight lines, instant teleportation), typing patterns (uniform delays), and JavaScript properties (navigator.webdriver, missing plugins) to block automated access.
Chrome MCP Stealth solves this by layering human-like behavior on top of Playwright's CDP connection to a real Chrome instance — not a headless browser, not a fresh profile, but your actual browser with cookies, extensions, and history intact.
Features
- Stealth mode: Bezier mouse movement, Gaussian keystroke delays, scroll jitter, anti-detection JS patches
- Fast mode: Instant actions with no delays — available on non-protected domains
- Security: 4-layer defense against prompt injection, data exfiltration, and credential leaks
- Single file: Entire server is one
index.jsfile (~630 lines)
How Stealth Works
Mouse movement follows cubic Bezier curves with randomized control points, producing natural arcs instead of straight lines. Each move uses 12–50 interpolation steps with ease-in-out timing and occasional overshoot corrections.
Typing uses Gaussian-distributed inter-key delays (~75ms mean), with extra pauses after punctuation and periodic "thinking pauses" every ~10 characters — mimicking human typing rhythm.
Scrolling is broken into jittered multi-step increments with settling delays, avoiding the instant jumps that flag automation.
Anti-detection patches remove navigator.webdriver, clean Playwright/Selenium artifacts from window, inject realistic chrome.runtime and plugin stubs.
See ARCHITECTURE.md for full implementation details.
Security Model
- Prompt injection scanner — 20+ regex patterns detect instruction override attempts, social engineering, and data exfiltration commands in page content
- Content sanitization — Hidden/invisible elements are stripped before returning page text, preventing injection via zero-size or off-screen elements
- Content spotlighting — All page content is wrapped in
<EXTERNAL_CONTENT trust="untrusted">tags with security footers - Domain controls — Cloud metadata endpoints are blocked entirely; banking/email domains trigger warnings; stealth-only domains enforce stealth mode
Additionally, all output is scanned for credential patterns (API keys, tokens, JWTs) and redacted before being returned.
Tools (11)
| Tool | Purpose |
|---|---|
chrome_set_mode |
Switch between stealth/fast mode |
chrome_navigate |
Navigate to URL |
chrome_snapshot |
Get sanitized accessibility tree |
chrome_screenshot |
Take PNG screenshot |
chrome_click |
Click element (Bezier mouse in stealth) |
chrome_type |
Type text (Gaussian delays in stealth) |
chrome_tabs |
List/switch/create/close tabs |
chrome_evaluate |
Run JS in page context (output redacted) |
chrome_wait |
Wait for selector or timeout |
chrome_scroll |
Scroll up/down (jittered in stealth) |
chrome_page_info |
Get current URL, title, domain risk |
Setup
-
Launch Chrome with CDP:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --remote-debugging-port=9222 \ --user-data-dir=~/.chrome-debug-profile -
Install and run:
npm install npm start -
Register in your MCP config:
{ "chrome-stealth": { "command": "node", "args": ["path/to/chrome-mcp/index.js"], "env": { "CDP_ENDPOINT": "http://127.0.0.1:9222" } } }
Stealth-Only Domains
LinkedIn (linkedin.com, www.linkedin.com) enforces stealth mode — fast mode is blocked. This is enforced at 5 layers: navigation, mode switch, every interaction, post-redirect, and tab switch.
Dependencies
@modelcontextprotocol/sdk— MCP protocol implementationplaywright-core— Chrome DevTools Protocol connection
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.