mcp server
multizen-browser
Anti-detect browser for AI agents and human operators. Isolated Chromium profiles (cookies, fingerprint, proxy), driven through MCP.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 14, 2026What it is
MultiZen is a desktop app that runs a library of isolated browser profiles. Each profile has its own cookies, login state, fingerprint, and proxy, and runs on your choice of engine — CloakBrowser (Chromium) or Camoufox (Firefox). A local MCP server on 127.0.0.1:7777 exposes browser-drive tools (navigate, click, type, extract, screenshot, evaluate JS, cookies, tabs, waits) to any MCP client.
The result: your AI agent in Cursor or Claude Desktop can complete real authenticated workflows. Cookies and session state survive between launches, so logins and context carry over across AI sessions.
Install
macOS
The cleanest path. Homebrew handles the Gatekeeper quarantine for you:
brew tap multizenteam/multizen
brew install --cask multizen
Or grab the DMG straight from the releases page and run this once after install to bypass the unsigned-app warning:
xattr -cr /Applications/MultiZen.app
Linux
curl -LO https://github.com/multizenteam/multizen-browser/releases/latest/download/MultiZen-linux-x86_64.AppImage
chmod +x MultiZen-linux-x86_64.AppImage
./MultiZen-linux-x86_64.AppImage
Some distros need libfuse2 (apt install libfuse2t64 on Ubuntu 24.04+).
On Ubuntu 24.04+ (and other kernels that restrict unprivileged user namespaces) the browser's sandbox is blocked by default. On the first affected launch MultiZen offers a one-time secure setup: it installs a small AppArmor profile that re-permits the sandbox for just this browser (one password prompt). The sandbox then stays on with no warning banner. You can also run or re-run it later from Settings. If you decline or it can't run, MultiZen launches the browser without the sandbox so it still works.
Prefer to do it by hand? Settings shows the exact command; it writes /etc/apparmor.d/multizen-cloakbrowser and loads it with apparmor_parser. To force sandbox-off regardless, launch the AppImage with --no-sandbox.
Windows
Download MultiZen-win-x64.exe. SmartScreen may flag the installer as unrecognized on first download. Click More info, then Run anyway.
One-liner installer
For macOS and Linux:
curl -sSL https://getmultizen.com/install.sh | bash
How it works
+----------------------+ +-----------------------+
| Cursor / Claude | MCP | MultiZen Desktop App |
| Desktop / Cline | <-----> | 127.0.0.1:7777 |
+----------------------+ +-----------+-----------+
|
| spawn / drive (CDP)
v
+--------------+--------------+
| Profile A | Profile B | ...
| cookies | cookies |
| proxy LU | proxy US |
| Win 145 | macOS 145 |
+-------------+--------------+
|
v
patched Chromium binary
(canvas, WebGL, audio,
font, WebRTC fingerprints
spoofed at C++ level)
Each profile is a real Chromium window with persistent state on disk. The MCP server speaks the standard Anthropic Model Context Protocol over Streamable HTTP (plus legacy SSE) so it works with any client. Browser-drive tools call into Chrome DevTools Protocol under the hood.
Features
| What it does | |
|---|---|
| MCP server | Native localhost endpoint. Works with Cursor, Claude Desktop, Cline, Continue, anything else that speaks MCP. |
| Per-profile engine | Choose each profile's browser: CloakBrowser (Chromium) or Camoufox (Firefox-based, for a genuinely non-Chrome TLS/JS fingerprint). |
| Anti-detect Chromium | Source-patched browser engine (CloakBrowser). Canvas, WebGL, audio, fonts, WebRTC IP all spoofed at C++ level instead of JS injection. |
| Persistent state | Cookies, login, IndexedDB, localStorage stay per-profile across launches and across AI sessions. |
| Cross-platform persona | Run a Windows persona on a Mac host (or vice versa). C++ patches keep the fingerprint coherent across V8, Blink, and CSS feature signatures. |
| Proxy + persona alignment | Per-profile HTTP or SOCKS5 proxy with a local SOCKS5 bridge so DNS resolution stays remote. Auto-aligns timezone, locale, and navigator.geolocation to the proxy egress IP. |
| Self-hosted | Profiles live on your disk in plain SQLite plus Chromium user-data-dir format. No account, no license server, no telemetry. |
| Open source | MIT for the entire app, MCP server, and CDP driver. Patched Chromium engine is also open source. |
Onboarding
Connect an agent (Codex, Cursor, Claude Desktop)
After installing, the MCP server starts on 127.0.0.1:7777. It serves the current
Streamable HTTP transport at http://127.0.0.1:7777/mcp (plus a legacy HTTP+SSE
endpoint at /sse for older clients).
The server requires a bearer token — it is generated on first run and shown in
the app under MCP → Connect an agent (also written to the mcp-token file in
the app data directory). Every client config below must send it as
Authorization: Bearer <token>. Replace <token> with your own. The app's MCP
panel has a Copy for LLM button that hands the whole setup (token included) to
a coding agent if you'd rather not edit config files by hand.
Codex CLI (~/.codex/config.toml) — connects to Streamable HTTP directly:
[mcp_servers.multizen]
url = "http://127.0.0.1:7777/mcp"
http_headers = { Authorization = "Bearer <token>" }
JSON URL clients — Cursor (~/.cursor/mcp.json), Cline, Continue:
{
"mcpServers": {
"multizen": {
"url": "http://127.0.0.1:7777/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS)
— its config has no url field, so bridge the endpoint through
mcp-remote (needs Node):
{
"mcpServers": {
"multizen": {
"command": "npx",
"args": ["mcp-remote", "http://127.0.0.1:7777/mcp", "--header", "Authorization: Bearer <token>"]
}
}
}
Restart your client. The agent now has the full tool set — profile lifecycle (list_profiles, launch_profile, close_profile), page driving (navigate, click, type, extract, screenshot, evaluate_js), tabs (list_tabs, new_tab, activate_tab, close_tab), cookies (get_cookies, set_cookies), waits (wait_for_load, wait_for_navigation, wait_for_selector), and raw cdp_send.
Stack
| Layer | Tech |
|---|---|
| Desktop shell | Electron 33 |
| Renderer | React 19, Tailwind v4, TypeScript strict |
| Main process | TypeScript ESM, electron-vite, native MCP SDK |
| MCP server | @modelcontextprotocol/sdk over Streamable HTTP + SSE |
| Profile storage | better-sqlite3 with idempotent migrations |
| Browser driver | chrome-remote-interface over CDP (Chromium); playwright-core (Firefox) |
| Browser engine | CloakBrowser (patched Chromium) or Camoufox (Firefox), per profile |
| Build | Yarn 4 workspaces, electron-vite, electron-builder |
| CI | GitHub Actions matrix on macOS, Windows, Linux |
Develop
git clone https://github.com/multizenteam/multizen-browser
cd multizen-browser
yarn install
yarn dev # launch the desktop app in dev mode
yarn mcp:dev # run the MCP server standalone for testing
yarn typecheck # strict TS across all workspaces
yarn build # full release build (mac/win/linux per OS)
Requires Node 22+ and Yarn 4 (via Corepack).
Repo layout
apps/
desktop/ Electron + React + Tailwind GUI + main process
packages/
mcp-server/ MCP server exposing the browser-drive tools
cdp-driver/ Thin wrapper around chrome-remote-interface
profile-manager/ SQLite profile CRUD + encrypted local storage
settings-store/ App-level settings persistence
types/ Shared TypeScript types
.github/
workflows/release.yml Matrix build, tag-triggered
Roadmap
Things landing in upcoming releases.
- Behavioral injection: humanized mouse paths, keystroke timing, scroll jitter applied at the CDP input layer.
- Per-profile cloud sync (opt-in, end-to-end encrypted): so the same profile follows you across laptops.
- Team workspaces: shared profile pool with audit log.
Why MultiZen vs the alternatives
| MultiZen | Browserbase / Hyperbrowser | GoLogin / AdsPower / Multilogin | |
|---|---|---|---|
| Native MCP server | yes | yes | profile CRUD only |
| Drives the browser through MCP | yes | yes | no |
| Anti-detect at C++ level | yes | partial | yes |
| Persistent login across sessions | yes | per-session | yes |
| Self-hosted | yes | no | no |
| Manual GUI for operators | yes | no | yes |
| Pay per browser-hour | no | yes | varies |
| Open source core | yes | SDK only | no |
Acceptable use
Building a multi-account browser is dual-use. We support QA testing across roles and regions, agency workflows you are authorized to run, market research, multi-marketplace e-commerce ops, AI-driven sales engineering, and personal accounts you legitimately own. We do not support platform ToS violations, mass account farming, ban evasion, or fraud. Full policy at getmultizen.com/acceptable-use.
License
MIT. Use it however you want.