Let AI use the browser you're already signed into.
Real-browser MCP access with cookies, auth, tabs, and page state intact.
cBrowse connects MCP-capable AI agents to the actual browser profile a user already uses.
It pairs a Chrome extension with a browser-specific MCP endpoint so the agent can work with existing cookies, saved logins, open tabs, and page state instead of launching a blank automation browser.
- Reuse cookies, auth, and site state from the signed-in browser
- Inspect, automate, extract, debug, and test in the same context the user sees
- Install once, copy the MCP route, and connect any MCP-capable client
- A Chrome extension that pairs one browser profile to cBrowse.
- A WebSocket bridge and HTTP MCP server that route actions into that browser.
- A browser-specific pairing flow so each client targets the right session-aware browser.
- A landing page,
llms.txt, and a raw Codex skill for quick client setup. - Deployment scripts for a small DigitalOcean Droplet.
- The user loads the cBrowse extension in the browser profile they want to expose.
- The extension creates a browser-specific MCP route bound to that profile.
- The agent connects to that route and reuses the current cookies, auth, and page state.
- The agent claims tabs, inspects pages, extracts data, or debugs the app in that same browser context.
npm installnpm run build
npm run dev:relayIn another shell:
npm run dev:mcp:httpFor local development, load the repo root in Chrome as an unpacked extension:
/Users/cozy/Documents/cBrowse
For a packaged release, cBrowse builds from the standalone extension under:
extension/
Open the extension popup, copy the browser-bound MCP URL, and add it to your client.
For Codex:
codex mcp add cbrowse --url https://your-domain.example/mcp/<browser-key>If your client supports a raw skill file, point it at:
https://your-domain.example/cbrowse-skill.md
npm run checknpm run buildnpm run dev:relaynpm run dev:mcp:stdionpm run dev:mcp:httpnpm run install:codex-skillnpm run build:extensionnpm run release:local
cBrowse can produce both a distributable .zip and a signed .crx.
CBROWSE_GENERATE_KEY=1 npm run build:extensionArtifacts are written to:
release/cBrowse-extension-v<version>.ziprelease/cBrowse-extension-v<version>.crxrelease/SHA256SUMS.txt
- If
release/keys/cbrowse-extension.pemalready exists, it is reused. - If no key exists, run the first build with
CBROWSE_GENERATE_KEY=1to create one. - Without a key, cBrowse still builds the
.zipand skips the.crx. - Keep that
.pemfile safe and private. - Do not commit the private key.
- If you lose the key, the extension ID will change the next time you package it.
You can also point at a custom key:
CBROWSE_EXTENSION_KEY=/absolute/path/to/key.pem npm run build:extensionYou can override the Chrome binary too:
CHROME_BIN=/path/to/chrome npm run build:extensionThis repo includes a GitHub Actions workflow that:
- installs dependencies
- runs type checks
- builds extension release artifacts
- uploads artifacts on manual runs
- publishes them to GitHub Releases on version tags
If you want CI-built CRX files with a stable extension ID, add this repository secret:
CBROWSE_EXTENSION_PEM
Store it as base64-encoded contents of your cbrowse-extension.pem.
The cBrowse bridge stack is in:
deploy/digitalocean/
That deployment exposes:
wss://<domain>/bridgehttps://<domain>/mcp
See deploy/digitalocean/README.md for the Droplet flow.
extension/Chrome extension sourcesrc/bridge/bridge server logicsrc/mcp/MCP server and HTTP transportpublic/landing page and setup assets.agents/skills/cbrowse/raw Codex skilldeploy/digitalocean/deployment scriptsscripts/local helper and packaging scripts
- The browser route is pairing-key scoped, not account-auth scoped.
- Any connected agent can act with the same site access already present in that browser profile.
- The extension should only connect to infrastructure you control.
- Treat the packaged extension key and browser MCP routes as sensitive.
MIT. See LICENSE.
