MCP Browser
Automatically detects and waits for Cloudflare challenges (Turnstile, interstitial) up to 15 seconds for resolution.
Supports web search via DuckDuckGo as an alternative search engine, with automatic fallback when Google blocks.
Performs web searches using Google through the real browser, with stealth to avoid CAPTCHAs.
Launches and connects to a real Google Chrome instance with full browser fingerprint, cookies, and sessions, enabling AI to browse as a normal user.
Rewrites Reddit URLs to old.reddit.com for a scraping-friendly version.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Browsersearch for latest AI news on Google"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Browser
Give your AI a real browser.
MCP server that lets AI assistants browse the web through your real Chrome — with your cookies, sessions, and fingerprint. No bot detection. No CAPTCHAs.
Quick Start (30 seconds)
No installation needed. Just add the config to your MCP client:
Claude Desktop
Add to ~/.config/claude/claude_desktop_config.json (Mac/Linux) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["-y", "@wgarrido/mcp-browser"],
"env": {
"CHROME_HEADLESS": "true"
}
}
}
}Claude Code (CLI)
claude mcp add browser -- npx -y @wgarrido/mcp-browserVS Code / Cursor
Add to .vscode/mcp.json in your project:
{
"servers": {
"browser": {
"command": "npx",
"args": ["-y", "@wgarrido/mcp-browser"],
"env": {
"CHROME_HEADLESS": "true"
}
}
}
}That's it. Chrome launches automatically in the background. Start browsing.
Related MCP server: Chrome MCP Server
Why MCP Browser?
Problem | How MCP Browser solves it |
Sites block bots and scrapers | Uses your real Chrome with your real fingerprint |
Cloudflare challenges, CAPTCHAs | Auto-detects and waits for challenges to resolve |
Content behind login | Your cookies and sessions are already there |
Noisy HTML (ads, nav, popups) | Smart DOM cleaning strips everything but content |
Cookie consent banners | Auto-dismissed (40+ selector patterns) |
SPAs with dynamic content | Runs in a real browser — JavaScript executes naturally |
Available Tools (15)
Core
Tool | What it does |
| Load a URL → clean Markdown |
| Extract main article content (Readability) |
| Search Google/DuckDuckGo through the browser |
| PNG screenshot of a page or CSS element |
| Run arbitrary JS in the page context |
| Extract JSON-LD, OpenGraph, meta, tables, headings, links |
| Fetch up to 5 URLs in parallel |
| Get all links from a page (with regex filter) |
| Crawl a site following links (depth/page limits) |
| Check browser connection status |
Persistent Sessions
Keep tabs open across multiple tool calls for multi-step workflows:
Tool | What it does |
| Open a persistent tab → returns |
| Close a tab by |
| Interact: click, type, select, submit, scroll |
| List all open tabs |
| Track page changes over time (start/check/stop) |
Most tools accept an optional
tab_idto reuse a persistent session instead of opening a new page.
Usage Examples
Just talk naturally to your AI:
"Search for the latest Node.js release notes" →
web_search+fetch_page"Read and summarize this article: https://..." →
fetch_readable"Compare pricing on these two pages" →
multi_fetch"Take a screenshot of https://..." →
screenshot"Log into this site, then scrape my dashboard" →
open_tab+click_and_navigate+fetch_page"Extract all /docs/ links from this page" →
extract_links"Crawl this site 2 levels deep" →
crawl"Watch this page for changes every 30 seconds" →
monitor_page
Advanced: Use Your Own Chrome Sessions
By default, MCP Browser launches Chrome in headless mode (background, no window). This is the simplest setup.
If you want to use your existing cookies and logged-in sessions, launch Chrome manually with CDP enabled, then point MCP Browser to it:
Launch Chrome with CDP
Mac:
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--remote-debugging-port=9222 --no-first-runLinux:
google-chrome --remote-debugging-port=9222 --no-first-runWindows (PowerShell):
& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--remote-debugging-port=9222 --no-first-runOr use the included scripts:
./scripts/launch-chrome.sh # Mac/Linux
.\scripts\launch-chrome.ps1 # WindowsImportant: Chrome must be started fresh. If it's already running, the CDP flag is ignored. Quit Chrome first, or use
--user-data-dir="/tmp/chrome-cdp"for a separate profile.
Config without headless
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["-y", "@wgarrido/mcp-browser"],
"env": {
"CDP_URL": "http://localhost:9222"
}
}
}
}Configuration
All settings are optional. Pass them via env in your MCP config:
Variable | Default | Description |
|
| Auto-launch Chrome in headless mode (recommended) |
| (auto-detect) | Custom path to Chrome/Chromium executable |
|
| Chrome DevTools Protocol endpoint |
|
| Page load timeout in ms |
|
| Max returned content in characters |
|
| Max simultaneous browser tabs |
|
| Enable in-memory page cache |
|
| Cache time-to-live in seconds |
|
|
|
|
|
|
|
| Auto-close inactive tabs after this duration |
|
| JSON map of profile name → CDP URL |
Example with custom settings:
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["-y", "@wgarrido/mcp-browser"],
"env": {
"CHROME_HEADLESS": "true",
"SEARCH_ENGINE": "duckduckgo",
"DEFAULT_TIMEOUT": "60000",
"MAX_CONTENT_LENGTH": "100000"
}
}
}
}Features
Headless mode — Chrome runs in the background, auto-launched by the server
Anti-bot stealth — Hides
navigator.webdriver, fakes plugins, languages, and permissionsCloudflare handling — Detects Turnstile/interstitial challenges and waits up to 15s for resolution
Cookie banner dismissal — Auto-clicks consent overlays (GDPR, OneTrust, CookieBot, Reddit, 40+ patterns)
Smart DOM cleaning — Strips nav, sidebars, footers, ads, modals, and action links
URL rewriting — Redirects SPAs to scraping-friendly versions (e.g.
reddit.com→old.reddit.com)Google → DuckDuckGo fallback — If Google shows a CAPTCHA, search falls back automatically
Persistent sessions — Keep tabs open for multi-step workflows (login, forms, navigation chains)
LRU cache — Avoids redundant fetches with configurable TTL
Concurrency control — Semaphore limits concurrent tabs to prevent resource exhaustion
Multi-profile support — Connect to multiple Chrome instances via named profiles
Troubleshooting
"Cannot connect to Chrome"
Chrome must be running with --remote-debugging-port=9222, or set CHROME_HEADLESS=true for auto-launch.
"Port 9222 already in use" Another Chrome instance is using CDP. Close it or use a different port:
./scripts/launch-chrome.sh 9333Then set CDP_URL=http://localhost:9333.
"Page timeout"
Increase the timeout: "DEFAULT_TIMEOUT": "60000"
"Empty results from web_search"
Google may show a CAPTCHA. Switch to DuckDuckGo: "SEARCH_ENGINE": "duckduckgo"
"Cloudflare challenge page"
The server auto-waits up to 15s for Cloudflare challenges. If it needs manual verification, use open_tab to create a persistent session, solve it in Chrome, then use the tab_id with other tools.
"MCP error -32000: Connection closed" This can have two causes:
Chrome is not running with CDP enabled — If you're not using
CHROME_HEADLESS=true, make sure Chrome is launched with--remote-debugging-port=9222before starting the server. Verify with:curl http://localhost:9222/json/versionIf this returns an error, Chrome is not listening. See Launch Chrome with CDP.
Corrupted npx cache — If you see
TypeError: Comparator is not a constructorin the logs, the npx cache is corrupted. Clear it and retry:rm -rf ~/.npm/_npx/* # The next npx -y @wgarrido/mcp-browser call will re-download cleanly
Development
git clone https://github.com/wgarrido/mcp-browser.git
cd mcp-browser
npm install
npm run dev # Run with hot reload
npm run build # Build for productionRequirements
Node.js 18+
Google Chrome or Chromium
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wgarrido/mcp-browser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server