invisible_playwright_mcp is a free, open source ai development platforms project written in Python and released under MIT. It has 31,631 GitHub stars, 4,677 forks and 4 open issues, and was last pushed 5 hours ago. On this registry it ranks #27 of 143 tracked projects in AI Development Platforms, with 5 head-to-head comparisons available.

What is invisible_playwright_mcp?

invisible_playwright_mcp is an MIT-licensed Python browser agent and MCP server that gives coding assistants and standalone users an anti-detect stealth browser they can direct in plain language, without captchas or blocks.

What it is

The project is an open-source, anti-detect browser and web browsing agent that runs both as an MCP server for coding agents and as a standalone application with its own web interface. It belongs to the agentic AI ecosystem, with topics including agentic-ai, ai-agent, autonomous-agents and llm-agent, and it is written in Python, MIT-licensed and distributed through the uv toolchain, with uvx invisible-playwright-mcp as the entry point. A wiki of AI browser-agent guides accompanies it, comparing browser-use, Operator-style and computer-use agents and explaining what to check when an agent gets blocked.

The concrete problem it solves is automation that needs a real browser rather than an API. Some pages only make sense when rendered and when someone judges what is on them: the README's example asks the agent to search a flight site for one-way Milan to Lisbon economy fares across five dates, clicking the calendar widget day by day, reading the cheapest fare for each, saying so when a date has no availability and never guessing a number. It replaces the API-shaped integration that cannot reach such a page, and the manual browser session a person would otherwise drive by hand.

Key capabilities

  • Installs into coding assistants as a plugin: claude plugin install invisible-playwright-mcp@feder-cr, codex plugin add invisible-playwright-mcp@feder-cr, or gemini extensions install for Gemini CLI.
  • Serves a standalone web UI from uvx invisible-playwright-mcp ui --openrouter-key, with chat on the left and the live browser on the right at http://127.0.0.1:8765.
  • Drives pages the way a person would, moving the pointer and pressing keys, so calendar widgets are clicked rather than typed into.
  • Accepts proxies in http://user:pass@host:port or socks5://host:port form, with the browser's timezone, locale and egress following the proxy.
  • Holds identity steady with --seed, which yields the same browser identity on every run, and keeps logins and cookies across restarts with --profile-dir.
  • Takes its model from --model or INVISIBLE_MCP_MODEL, defaulting to z-ai/glm-5.3-flash, and reads a .env holding OPENROUTER_API_KEY and STEALTHFOX_BINARY, with precedence --flag, environment, .env, default.
  • Refuses to start when --binary names a build that does not match the seal.

Who uses it and how

  • Developers in Claude Code, Codex or Gemini CLI install it as a plugin, then ask the assistant they already use for browsing work in ordinary language.
  • Users who want a self-contained interface run the local web UI with their own OpenRouter key and watch the live browser beside the conversation.
  • Scraping, crawler and lead-generation work is addressed by the project's own topics.
  • Job hunting and job search appear as topics, pointing at repeated listing review and form filling.
  • It targets sites that treat automation hostilely: undetected browsing with no captchas is the framing, not an add-on.

Getting started

Installation follows the README's documented routes: the plugin marketplace commands for Claude Code and Codex, gemini extensions install for Gemini CLI, or, after installing uv, a standalone uvx invisible-playwright-mcp ui --openrouter-key run followed by opening http://127.0.0.1:8765. Keys and the engine binary path can sit in a .env in the working directory instead of being passed as flags.

How it compares

The project's wiki compares it against browser-use, Operator-style agents and computer-use agents, placing it among browser-automation agents rather than general-purpose assistants. Its stated differences within that group are the anti-detect browser underneath and delivery as an MCP server and plugin for assistants people already use.

When to use it — and when not to

A self-hoster must bring an OpenRouter key, and anyone using --binary must match the exact build the seal pins or startup will refuse. Changing --host away from 127.0.0.1 exposes a web interface with no authentication, and passing the key as a flag writes it into shell history and, on Linux, the process list. Anyone who needs an authenticated multi-user service, or a model hosted entirely in-house, should look elsewhere.

project readme (upstream, from github) — read inline
invisible_playwright_mcp

An anti detect browser and web browsing agent, open source, with an MCP server for coding agents: undetected, no captchas, no blocks. Tell it what you want in plain language.


Two ways to use this browser agent

1. From your assistant, over MCP

Windows, in PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"

Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env

Then install it in your assistant.

Claude Code:

claude plugin marketplace add feder-cr/invisible_playwright_mcp
claude plugin install invisible-playwright-mcp@feder-cr

Codex:

codex plugin marketplace add feder-cr/invisible_playwright_mcp
codex plugin add invisible-playwright-mcp@feder-cr

Gemini CLI:

gemini extensions install https://github.com/feder-cr/invisible_playwright_mcp

2. Standalone: the web UI

We bring the interface, you bring an OpenRouter key. Chat on the left, the live browser on the right.

Windows, in PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"
uvx invisible-playwright-mcp ui --openrouter-key sk-or-...

Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uvx invisible-playwright-mcp ui --openrouter-key sk-or-...

Then open http://127.0.0.1:8765 and type the same thing.


What to ask a web browsing agent

Anything that needs real web automation: a browser rather than an API, and a person's judgement about what is on the page.

Go to ``. One way, Milan to Lisbon, economy, one checked bag, one adult. Check every date from the 12th to the 16th of next month, one at a time, and read the cheapest fare for each day. The date field is a calendar widget, so click the days rather than typing them. If a date has no availability, say so. Do not guess a number.

It drives the page the way a person would: the pointer moves, keys are pressed.

Options: proxy, profile, seed

  • --openrouter-key Your key, or the OPENROUTER_API_KEY variable.
  • --model An OpenRouter model id, or INVISIBLE_MCP_MODEL. Defaults to z-ai/glm-5.3-flash.
  • --proxy Optional. http://user:[email protected]:8080 or socks5://proxy.example.com:1080. Host and port are both required. The timezone, locale and egress follow it.
  • --binary An engine binary you already have. It must be the build the seal pins, or startup refuses: this skips the download, not the version check.
  • --seed An integer. Same seed, same browser identity, every run.
  • --profile-dir A directory to keep the profile in, so logins and cookies survive restarts.
  • --headed Show the browser window. The interface shows you the page anyway.
  • --host, --port 127.0.0.1 and 8765. Changing the host exposes an interface that has no authentication.

A .env beside the command

Rather than retyping the key and the binary path, put them in a .env in the directory you run from:

OPENROUTER_API_KEY=sk-or-...
STEALTHFOX_BINARY=/path/to/firefox

It is read at startup, and on the way in it never overrides something already set, so the order is --flag > the environment > .env > the default. Only the directory you are in is read - there is no search upwards, so running from a subfolder cannot silently pick up a different key. The startup line names the variables it applied and never prints their values.

Passing --openrouter-key puts the key in your shell history, and on Linux in the process list. OPENROUTER_API_KEY in the environment or in a .env avoids both.

The wiki: AI browser-agent guides

The reading room around the agent lives in the wiki: the AI browser-agent landscape: browser-use, Operator-style and computer-use agents compared, what to check when an agent gets blocked, and what happened to OpenAI Operator, among others. Worked examples, transcripts and their outputs live in articles/.

The rest of the family: engine, core

The MCP server from option 1 ships inside this package: invisible_playwright_mcp with no subcommand is the server, invisible-playwright-mcp ui the interface. Its config blocks for clients that take a file, its settings and its tools are on the wiki page The MCP server.

  • invisible_playwright The engine, as a Python library, for writing code instead of prompts. The API is Playwright's.
  • invisible_core Seed to fingerprint to preferences, proxy and geolocation.

Using it responsibly

This automates a browser under your control. Read the terms of the sites you point it at, respect their rate limits, and do not submit anything a human has not read.

Privacy Policy

This browser agent runs on your machine and has no server of its own. What leaves your computer, and to whom:

  • The sites you visit see the browser, as they would any Firefox.
  • Your model provider. The web UI sends the conversation and what the agent reads on the page to OpenRouter under your key. Over MCP, the client you plugged it into does the same with whichever model it uses.
  • GitHub. The engine is downloaded from a GitHub release the first time the server or the interface starts, and a GeoIP database is when a proxy is set. Each browser launch also fetches a one-line counter file from a GitHub release, which is how launches are counted: the request carries no identifier and nothing of yours, and GitHub sees what any HTTPS request shows, your IP address.

Nothing else is collected and nothing is sent to the author. Sessions, profiles and screenshots are stored locally, under INVISIBLE_MCP_HOME if set and otherwise in the application-data directory of your system, and are yours to delete; nothing is retained anywhere else. Questions go to the issues.

License

MIT. Everything distributed before 2 September 2026 was released under AGPL-3.0 and stays under it.

Frequently asked questions

Is invisible_playwright_mcp free to use?

invisible_playwright_mcp is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does invisible_playwright_mcp do?

Anti-detect agentic stealth browser: undetected browsing, browser automation, Python AI web browsing agent, computer use, scraping, lead generation. No captchas

What is invisible_playwright_mcp written in?

invisible_playwright_mcp is primarily written in Python. Its source is publicly available at https://github.com/feder-cr/invisible_playwright_mcp, and it has 31,631 GitHub stars.