Patchright MCP
Hosted, multi-tenant browser automation for agents — undetected Chromium, persistent per-tenant profiles, Google sign-in, inline human handoff widgets, WARP proxy routing.
Paste this into claude.ai's connector form
No token. claude.ai discovers OAuth automatically; the first tool call sends you through Google sign-in once, then every call is scoped to your tenant — isolated profiles, cookies, pages, and enrolled browsers per identity.
Claude Desktop / ChatGPT / Cursor
These clients don't auto-discover OAuth, so you mint a per-client bearer token and paste a URL that already contains it.
- Sign in with Google — first time only. Each Google identity is an isolated tenant.
- Open /dashboard, click Mint token, name it (e.g.
claude desktop), copy the resulting connector URL. - Paste it into your client. Every tool call lands in your tenant.
Token revocation, rotation, and per-client naming all happen from the dashboard. Lost a laptop? Revoke that one token without breaking your others. Need to wipe everything? The dashboard's danger zone self-deletes your tenant — profiles, pages, enrollments, tokens, and uploaded files all cascade.
Install the extension (recommended)
The Patchright Handoff extension binds a Chrome profile to your tenant so agent handoffs auto-fulfill without you clicking links — handy when an agent hits a passkey, MFA prompt, or Cloudflare challenge mid-task.
- Download
extension.zipv0.4.2 and unzip anywhere. - Open
chrome://extensions/in Chrome → toggle Developer mode on (top-right) → click Load unpacked → select the unzipped folder. - Pin the Patchright Handoff icon, open the popup, click Connect via OAuth. After consent, the popup pill flips to Enrolled and the binding shows up on your dashboard.
- From then on, any agent call to
pr_handoff_startfor a site you're signed into auto-fulfills silently in a minimized off-screen window. Hit Pause all sync in the popup any time to disable.
No extension? Agent handoff URLs still work — open in any browser, the bounce page falls back to a manual paste flow for users who'd rather use Cookie-Editor or paste raw storage_state.json.
Endpoint
Three ways to authenticate: (1) bare https://patchright.nlma.io/mcp — client does OAuth 2.1 DCR, you sign in with Google at /authorize, the issued bearer binds to your tenant (claude.ai connector path); (2) https://patchright.nlma.io/mcp?token=<token> — URL-paste with a dashboard-minted bearer; (3) Authorization: Bearer <token> header for clients that support it. All three resolve to the same per-tenant scope.
Recommended agent flow
1. pr_open_page(url, profile)
2. Automate known fields with pr_fill / pr_fill_by_label / pr_click
3. When a human needs to step in (login, 2FA, CAPTCHA, ambiguous UI):
4. For full auth (passkey / password manager / MFA on a third-party site):
pr_handoff_start(page_id, target_url, allowed_origins, reason)
pr_handoff_wait(handoff_id)
5. Continue automation, then pr_close_page
Self-host
Deploy your own instance — separate tenants, separate VPS, separate token universe.
git clone https://github.com/NextLevelManagementAdvisors/patchright-mcp.git cd patchright-mcp cp .env.example .env # Set BASE_URL, PATCHRIGHT_FOUNDER_EMAIL, GOOGLE_CLIENT_ID, # GOOGLE_CLIENT_SECRET, and PATCHRIGHT_SESSION_SECRET in .env. # See .env.example for full reference. bash deploy/install.sh
Google OAuth client: create a "Web application" client in Google Cloud Console with redirect URI <BASE_URL>/auth/google/callback. Want a closed instance? Set PATCHRIGHT_ALLOWED_EMAILS to a comma-separated allowlist.