The canonical managed preview URL is browser-mcp.click, using GitHub sign-in. This preview has no availability commitment or SLA. Chrome Web Store version 0.1.1 has been submitted and is pending Google’s review; it will publish automatically if approved. Until then use the verified ZIP installation instructions.
For users
- Install a verified extension build from your operator.
- Explicitly set the upstream to
https://browser-mcp.click, then choose Sign in with GitHub. The extension opens a regular browser tab to that origin so your browser’s login state remains in your browser. - Sign in with GitHub and review the requested device/browser name and origin.
- Explicitly approve the request. The managed server registers your browser and issues a separate connection credential to the extension.
- Open the dashboard, create a browser-scoped MCP token, and configure your trusted client using the displayed URL and bearer token.
Canonical domain migration
The previous managed origin,https://browser-mcp-fzftomuy8592.r5d.app, is retired for all device, API, WebSocket, and MCP requests. Only safe dashboard GET/HEAD links redirect to https://browser-mcp.click. This intentionally breaks automatic reconnect at the old address rather than exposing the new dashboard to old extensions.
- Pause or Disconnect & forget in the extension before opening the new dashboard.
- In extension Settings, explicitly enter
https://browser-mcp.clickas the upstream (do not use 0.1.1’s old embedded managed default). Grant Chrome access to this exact origin and confirm consent. - Start a new sign-in and approval. An old pending device request cannot redeem at the retired address; restarting creates a new browser registration. Alternatively, manually configure the canonical upstream with a connection credential for an existing registration. No stored extension settings or credentials are migrated automatically.
- Update each MCP client’s URL to
https://browser-mcp.click/b/<browser-id>/mcp. Existing unexpired/unrevoked MCP tokens still work at the new URL for the same registration; they do not work with a new registration created by re-pairing. Revoke/delete unused old tokens and registrations.
LEGACY_PUBLIC_ORIGIN (Helm config.legacyPublicOrigin). It defaults to empty/disabled and accepts one normalized, distinct HTTPS DNS origin, with an optional non-default port. Wildcards, lists, credentials, whitespace, paths, trailing slashes, queries, fragments, and default :443 spelling are rejected. Unknown hosts still return 403. Allowed old page paths are /, /settings, /connect, /device (including trailing slashes); GET/HEAD uses a no-store 308 with path/query preserved and no referrer. /device is retained only as a legacy link path; current pairing uses /connect. All other old-host requests return 410 legacy_origin_retired with manual reconnect instructions; no credentialed CORS or Location is emitted. Health/readiness probes remain host-exempt and return no session data.
Before cutover, deploy a freshly built server containing this boundary, preserve the database and runtime encryption/auth keys, and configure the GitHub callback to https://browser-mcp.click/api/auth/callback/github. Restart the single server so existing old-host WebSockets close. deploy/managed-values.yaml retains the old ingress for retirement responses and pins the migration-aware deployed server. The hosted cutover was verified on September 8, 2026, including GitHub sign-in, explicit published-0.1.1 pairing, MCP browser tools and token revocation. The separately configured canonical Cloudflare tunnel must deliver the canonical HTTP Host to the server. Do not rewrite legacy traffic to the canonical Host: that bypasses retirement and reintroduces exposure. Forwarded / X-Forwarded-Host do not grant trust. Validate canonical sign-in, explicit 0.1.1 re-pairing, MCP token use, old transport rejection, and old-link redirects before announcing completion. Do not enable the canonical dashboard against an old server that still accepts legacy connections.
For operators
Build a managed artifact deliberately:GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET. Register a GitHub OAuth application for your actual deployment, with the callback:
edition: managed and use the matching managed image tag or digest. Store both GitHub values in secrets.existingSecret. The chart adds those env references only for managed. The selected artifact, not this Helm value by itself, determines server behavior.
Build a release extension with the real canonical HTTPS upstream: