Repository navigation
stealth mcp servers compared
Most browser MCP servers drive a stock automation build. A small, young cluster does not: wrappers around Camoufox, nodriver and Patchright, plus this project. This page is what separates them, and it starts with the disclosure, because one of the entries is ours and because two of the others make claims we could not check.
The wrapper is thin. What you are choosing is the engine.
Camoufox is a Firefox fork with anti-fingerprinting work done in the C++ source and driven over Juggler rather than CDP. Around 11.1k stars when the 2026 stealth-browser survey read it in August 2026, and actively pushed. The significant property is where the changes live: in the engine, so a page cannot observe the patching the way it can observe a script that rewrites properties after load.
nodriver is the successor line to undetected-chromedriver: Chromium, driven over CDP directly with no WebDriver layer. Around 4.6k stars in the same survey, with its last push in May 2026, which is worth knowing before you build on it.
Patchright is a patched Playwright driver: same API you know, with the best-known Playwright tells removed. Around 4.1k stars, pushed in August 2026. It is the smallest change of the three and the easiest to adopt, because your existing code keeps working.
This project's engine is invisible-playwright, a Firefox patched at the C++ source with the identity derived from a seed, so two runs with the same seed present the same browser.
Camoufox and this engine are the same family of idea and are genuine alternatives to each other. nodriver and Patchright are the Chromium answer to the same question.
mcp-camoufox exposes Camoufox over MCP with a large tool surface, installed through npx. mcp-stealth-chrome wraps nodriver together with a TLS-spoofing HTTP client. patchright-mcp-lite is the opposite design: four tools, one job. invisible_playwright_mcp is ours, and the server ships inside the same package as the interface: the MCP server has the config block.
Tool count is the axis these wrappers advertise on and it is the least useful one. A hundred tools is a hundred descriptions in the model's context on every turn, and a larger set to choose wrongly from. What matters is whether the model can read state without scripting, reach what selectors cannot, and fall back to JavaScript for the remainder. How the tools are shaped argues that in full.
Two of these projects advertise capabilities in their own repository text that we did not test and are not repeating as fact: a "proven" one-line bypass of a specific challenge product, and a vision-based solver for another. They may work. We have not run them, and a claim in a README is a claim.
We are explicit about this because the same restraint applies to us in the other direction: invisible_playwright_mcp does not solve captchas and does not promise non-detection. A patched engine changes what the browser looks like. It does not read a challenge for you, it does not repair a datacenter IP's reputation, and it does not slow down an agent that is clicking faster than a person could. Can an AI agent solve a captcha is the longer answer, and it is the same answer we would give about anyone's tool.
If you are evaluating any server in this category, the useful test is not reading claims. It is running the same page through two of them from the same IP, and this wiki's engine documents how to test that yourself.
- You are already on Playwright and want the obvious tells gone: Patchright, because your code does not change.
- You want Firefox with engine-level work and a mature project: Camoufox, or ours. Camoufox has the larger community; ours has seed-derived identity and the agent interface in the same package.
- You are committed to Chromium and want no WebDriver layer: nodriver, with the maintenance tempo noted.
- You want the smallest thing that works: patchright-mcp-lite.
- Your problem is not the browser: none of these. Read why an agent gets blocked and check the IP, the pacing and the rate limit first. That is the majority case, and this entire page is about the minority one.
What is a stealth browser MCP server? An MCP server whose browser is a modified engine rather than a stock automation build, so what a page can observe about the browser differs.
Is there a Camoufox MCP server? Yes, as a community wrapper. Camoufox itself is the engine, not the server.
Does a stealth MCP server get past Cloudflare? Not as a property of being a stealth MCP server. Cloudflare and Playwright MCP goes through what a challenge is actually reading.
Is Patchright the same as playwright-stealth? No. playwright-stealth patches the page from JavaScript after load; Patchright patches the driver. The engine wiki has the distinction in detail.
Which one is safest to depend on? Judge by push date and issue tempo, not by star count. The survey figures above are dated for that reason, and MCP servers on GitHub is the same judgement applied to any listing rather than to this one category.
Is a stealth server even the category I want? Only if the site recognising the browser is your actual complaint. How to choose among MCP servers puts this category next to the others first, which is the cheaper question to answer.
See also: Choosing an MCP server for browser automation, Playwright MCP alternatives, and open-source agentic browsers.
- Stealth browsers 2026: nodriver, Camoufox, Patchright, retrieved 2026-09-10, for star counts and last-push dates as of August 2026.
- RobithYusuf/mcp-camoufox and RobithYusuf/mcp-stealth-chrome, retrieved 2026-09-10, for the wrappers and their own claims.
- patchright-mcp-lite, retrieved 2026-09-10.
- invisible-playwright, this project's engine.
Written while maintaining one of the servers listed. The section naming the unverified claims applies to us first: the paragraph saying what invisible_playwright_mcp does not do is there so the rest of the page can be read as description rather than advertising.
- OpenAI Operator alternatives
- Open-source Operator-style agents
- Is OpenAI Operator still available?
- OpenAI Operator vs Claude computer use
- browser-use alternatives
- Choosing an AI browser agent
- Open-source AI browser agents
- Open-source computer-use agents
- What is an AI web agent?
- AI browser agents vs traditional scraping
- Cloud browser infrastructure for AI agents, explained
- Browserbase alternatives
- Firecrawl vs an AI browser agent
- Skyvern alternatives
- Stagehand vs browser-use
- Project Mariner is gone: what replaced it
- Manus alternatives
- Gemini computer use vs Claude computer use
- A stealth browser MCP, reviewed honestly by its own wiki
- AI browser vs AI browser agent: which one do you want?
- AI browser agent vs RPA: which one fits the job
- AI browser agent vs n8n, Zapier and Make
- Vercel agent-browser alternatives, compared honestly
- What is an agentic browser? Definition and the two kinds
- Open-source agentic browsers: the three layers, compared
- Choosing an MCP server for browser automation: four axes
- Stealth MCP servers compared: Camoufox, nodriver, Patchright
- Playwright MCP alternatives, and the three you don't need
- Autonomous browser agents: the four rungs of autonomy
- What is actually free in the AI browser agent stack
- browser-use on GitHub: what the repo actually gives you
- Playwright MCP vs Chrome DevTools MCP: different jobs
- How to choose among MCP servers: a map by category
- Which MCP servers are worth adding to Claude Code
- MCP on GitHub: finding servers and judging them fast
- MCP vs an API: the decision, and what the wrapper costs
- MCP alternatives: when the protocol is the wrong shape
- Why does my AI agent get blocked?
- The timing signal AI agents give off
- Agent retry loops trip rate limits, not fingerprints
- Claude computer use detected as a bot
- browser-use getting blocked: what you can and cannot change
- Playwright MCP session blocked: four causes, four fixes
- Playwright MCP and captchas: what actually gets you past
- Cloudflare and a browser MCP server: what is being read
- Can an AI agent solve a captcha? The honest answer
- Getting an AI agent to fill out forms
- The best model for an MCP browser agent, and what it really costs
- Browser problem or model problem?
- How to use a Playwright MCP server with Claude Code
- Extracting data to a CSV with an AI agent
- Monitoring a page for changes with an AI agent
- How to let Claude Desktop control a browser
- How to add a browser to Cursor as an MCP server
- Using an AI agent to hunt for apartments
- Getting website data into Google Sheets with an AI agent
- Using an AI agent to download invoices from portals
- AI agents for web research
- Using an AI agent to test your own website
- How to add a browser to Cline as an MCP server
- Posting to social media with an AI agent
- Posting to Facebook with an AI agent
- Posting to Instagram with an AI agent
- Posting to X with an AI agent
- Automating LinkedIn posts: read this first
- Appointment bots: what they are and what an agent can legitimately do
- Track prices across sites with an AI agent
- Build a lead list with an AI browser agent
- Run an AI browser agent on a schedule
- AI browser agent with a local LLM: what changes
- Should you log your AI agent into your accounts?
- How to write a task an AI browser agent can follow
- Move data between two web apps with an AI agent
- The MCP server
- How the tools are shaped, and why
- Playwright MCP vs the Playwright CLI: which fits when
- Playwright MCP: browser is already in use, and the fix
- Playwright MCP best practices: four decisions that matter
- Playwright MCP with a proxy, and the three leaks it leaves
- A browser MCP server in GitHub Copilot: setup and limits
- Using a browser MCP server for web scraping: the pattern
- Which LLM for browser automation: the four properties
- How to build a browser agent, and what to take instead
- Getting an AI agent to log into a website: three routes
- MCP tools, resources and prompts: who controls each
- How many MCP tools is too many? The context arithmetic
- How to build an MCP server: the decisions, not the scaffold
- Local or remote MCP server: what changes, and what does not
- Writing an MCP client in Python: the thirty-line version
- Self-hosted AI agent: what one actually costs to run
- How long an AI browser agent takes per step, measured
- Text, HTML, snapshot or screenshot: what the agent should read
- Giving an AI browser agent a stopping condition
- Keeping an AI browser agent out of destructive actions
- Why did the AI agent click the wrong thing
- When the page changes under the AI agent
- Running one AI agent task across a list of sites
- Seeing a page as it appears in another country
- Getting data out of a dashboard with no export button
- Two browsers in one session: main and support
- Finding the dead links on a site with an AI agent
- Filling a CRM record from a company's website
- One form submission per spreadsheet row, with an AI agent
- Dated screenshots of a page as evidence
- Checking order and delivery status with an AI agent
- Reading a PDF that opens inside the browser
- Summarising a long page or thread with an AI agent
- Collecting every image on a page with its caption
- Collecting event and course listings with an AI agent
- Cancelling a subscription with an AI agent
- What an AI agent can and cannot do inside an iframe
- Shadow DOM and an AI agent: you can click it, you cannot read it
- How to add a browser to Codex as an MCP server
- What a page snapshot costs, per control
- How to let Gemini CLI use a browser
- Native selects and the ones that only look like selects
- Clicking by selector or by coordinates
- How long the agent waits before it gives up
- What a second browser costs
- Uploading a file with an AI agent, and why this one cannot
- Watching the agent work, and when it is worth it
- When not to use an AI browser agent
- Agent or script: deciding once instead of every time
- Using the keyboard instead of the mouse
- Secrets in an agent task: where they end up
- What an agent run should log
- Deduplicating what an AI agent collects
- Normalising values across sites
- Validating an AI agent's output
- Reading a table with an AI agent
- Driving a site's own search and filters
- The task works headed and fails headless
- How to let the AdaL CLI use a browser