mcp-patchright
v0.1.2
Published
Stealth browser automation MCP server powered by Patchright. 41 tools, HTTP/SSE/Streamable HTTP transports, persistent profiles, multi-page support, CDP attach, network interception, storage import/export, PDF, proxy/geo profiles, authenticated API reques
Downloads
341
Maintainers
Readme
mcp-patchright
🛡️ Undetectable browser MCP server — 41 tools, Patchright-powered, zero CDP fingerprint.
Passes Cloudflare / Akamai / Kasada / Datadome.
Why Patchright, not Playwright?
| | Playwright | Patchright |
|---|---|---|
| Runtime.enable | ✅ sends (detectable) | ❌ removed |
| Console.enable | ✅ sends | ❌ removed |
| --enable-automation flag | ✅ present | ❌ removed |
| navigator.webdriver | true | false / undefined |
| Anti-bot evasion | ❌ | ✅ |
See the full comparison for details.
Quick start
npm i -g mcp-patchright
mcp-patchright --port 9321 --host 127.0.0.1With Claude / GPT / agents
{
"mcpServers": {
"patchright": {
"command": "npx",
"args": ["mcp-patchright", "--port", "9321", "--host", "127.0.0.1"]
}
}
}Features
- 41 MCP tools — full browser automation surface
- 3 transports — stdio, SSE, Streamable HTTP (
/mcp) - Persistent profiles — real Chrome profile, reuse across sessions
- Multi-page — tab management (new, list, switch, close)
- CDP attach — control an already-running Chrome
- Network tracking + interception — request list/detail, offline toggle, block/mock routes
- Session import/export —
browser_storage_save/browser_storage_load(cookies + localStorage) - Authenticated API requests —
browser_api_requestreuses session cookies (hybrid scraping) - Text/HTML extraction —
browser_get_visible_text/_html(token-light) - Iframe-aware — pass
frameSelectorto any element tool (click/fill/type/hover/press/wait_for/select/drag) to act inside an iframe - PDF export —
browser_save_pdfvia CDP (works in headed/stealth mode) - Stealth profiles — proxy / geolocation / locale / timezone / colorScheme
- Console capture — real-time console message stream
- Fingerprint check —
browser_fingerprint_checkdiagnostics
Tools
Full comparison HTML in /docs/tool-comparison.html.
browser_startbrowser_statusbrowser_navigatebrowser_new_pagebrowser_pagesbrowser_switch_pagebrowser_close_pagebrowser_snapshotbrowser_take_screenshotbrowser_clickbrowser_fillbrowser_typebrowser_hoverbrowser_press_keybrowser_wait_forbrowser_evaluatebrowser_fingerprint_checkbrowser_navigate_backbrowser_select_optionbrowser_handle_dialogbrowser_file_uploadbrowser_network_requestsbrowser_network_requestbrowser_console_messagesbrowser_resizebrowser_dragbrowser_fill_formbrowser_run_code_unsafebrowser_network_state_setbrowser_api_requestbrowser_get_visible_textbrowser_get_visible_htmlbrowser_iframe_clickbrowser_iframe_fillbrowser_route_blockbrowser_route_mockbrowser_route_clearbrowser_storage_savebrowser_storage_loadbrowser_save_pdfbrowser_close
Development
npm install
npm run build
node dist/index.jsBy default, browser_start launches Chromium via patchright as headed real Chrome with a persistent profile at:
~/.maestro/stealth-playwright-mcp/profiles/defaultYou can override it with the userDataDir tool argument or STEALTH_PLAYWRIGHT_USER_DATA_DIR.
To attach to an already-running Chrome instead of launching one, start Chrome with remote debugging and pass cdpEndpoint to browser_start:
/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome \\
--remote-debugging-port=9222 \\
--user-data-dir=$HOME/.maestro/stealth-playwright-mcp/profiles/cdp{ "cdpEndpoint": "http://127.0.0.1:9222" }browser_snapshot returns Playwright's AI aria snapshot. Use [ref=eN] values from that snapshot with browser_click, browser_fill, browser_type, browser_hover, browser_press, and browser_wait_for by passing { "ref": "eN" }. CSS selectors remain supported via { "selector": "..." }.
MCP config example:
{
"mcpServers": {
"stealth-playwright": {
"command": "node",
"args": ["/Users/maestrobot/stealth-playwright-mcp/dist/index.js"]
}
}
}Direction
Shipped:
- ✅ persistent user data dirs
- ✅ CDP attach to real Chrome
- ✅ proxy / timezone / locale / geolocation profiles
- ✅ accessibility snapshots for LLM-friendly page control
- ✅ fingerprint diagnostics
- ✅ network interception (block / mock)
- ✅ session import/export (storageState)
- ✅ PDF export
- ✅ authenticated API requests (reuse browser cookies)
- ✅ lightweight text/HTML extraction
- ✅ iframe actions
Next:
- rebrowser-playwright backend
- codegen sessions
- coordinate-based (vision) clicks
- tracing / video recording
