guarded-browser-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@guarded-browser-mcpfill in my shipping details on the ACME order page, but don't submit yet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
guarded-browser-mcp
An MCP server that lets an AI agent drive a self-hosted Chromium, with guardrails enforced by the server itself rather than by the agent's instructions.
Built for a personal assistant: filling in online forms, preparing purchases, reading pages, while the human watches the same browser live and takes over whenever needed (login, two-factor authentication, captcha).
Guardrails
Guardrail | Effect |
Allowed / denied sites | Domain allowlist or denylist per session. Any navigation to a refused domain is blocked inside the browser, including after a redirect or within a frame. The denylist always wins. |
Separate final action |
|
Sensitive fields |
|
Isolated sessions | Each access token has its own browser context (cookies, logins, rules). A token never drives another session. Several sessions can share one Chromium. |
Untrusted content | Page text is returned as data, never as instructions. |
Site rules are re-read on every call: edit them without restarting.
Related MCP server: farr-browser-mcp
Tools
Tool | Effect |
| open a URL if the site is allowed |
| title, URL, visible text and numbered actionable elements |
| PNG screenshot |
| click a numbered element, unless it is a final action |
| fill in a field, unless it is sensitive |
| pick an option in a dropdown |
| trigger a final action, with a summary of what goes out |
| rules in force for the session (read-only) |
Architecture
agent ──MCP + token──▶ guarded-browser-mcp ──CDP (secret path)──▶ nginx gate ──▶ Chromium (one session)
▲
human ──web UI (KasmVNC, behind your authentication)──────────────────────────────┘Chromium (
linuxserver/chromiumimage) serves a web UI and keeps its profile on disk.Chrome only accepts remote debugging on
127.0.0.1: a small nginx gate sharing its network namespace exposes it on a secret path, with access logging disabled.guarded-browser-mcpuses Playwright over CDP: no browser is bundled in its image.
Setup
Copy
deploy/compose.example.yaml,sessions.example.yamltosessions.yaml, andpolicies/example.yamltopolicies/<session>.yaml.In
.env, generate long random values:BROWSER_PASSWORD,CDP_TOKEN_ASSISTANT,MCP_TOKEN_ASSISTANT(32 characters minimum).docker compose up -d.Publish the browser web UI (port 3000) only behind strong authentication, never in the clear on the Internet. Never publish the CDP port. Publish the MCP server only behind an authenticating proxy (for example a tunnel with a service token), in addition to its bearer token.
Register the server in your MCP client: streamable HTTP transport, path
/mcp, headerAuthorization: Bearer <MCP_TOKEN_ASSISTANT>. Setsubmit_finalto "ask first".
Several sessions
Two ways to add a session, both declared in sessions.yaml with their own token and rules:
Same Chromium, isolated context (
isolated: true): light, no new container. The session gets a fresh browser context with its own cookies, invisible to other sessions. Its cookies and local storage are saved toSTATE_DIR/<session>.json(mode 600) after every call and restored when Chromium restarts. Session storage and IndexedDB are not kept. Its windows show up in the shared web UI, so a human can log in there.Dedicated Chromium: duplicate the browser and gate services and add their two variables. Full isolation, including the web UI, at the cost of one more browser in memory.
At most one session per Chromium can use the browser's own profile (no isolated).
Recommendations
Only log in to the sites the agent needs in a session. Never your bank or your mailbox: whoever drives the browser acts on your behalf on every logged-in site.
Prefer
allowlistmode.Some sites detect automation: the human then finishes in the web UI.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and clients to control a real Chromium browser through MCP tool calls, including navigation, clicking, typing, JavaScript evaluation, screenshots, and DOM snapshots. Supports multiple isolated sessions over authenticated HTTP with no disk writes.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to drive a live Chromium browser through MCP tools for reading pages as markdown, clicking and typing with element refs, taking screenshots, and downloading files, while enforcing safety rules like stale-ref refusal, irreversible-action blocking, robots.txt compliance, request pacing, and configurable proxies. It also supports site skills for structured data extraction.Apache 2.0
- AlicenseAqualityBmaintenanceEnables AI agents to drive a Chromium browser through MCP, with persistent sessions, compact page snapshots, guarded actions, batched operations, and explicit result verification.16MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP clients such as Claude Desktop, Claude Code and IDE agents to call a tool that drives a real Playwright browser to complete web tasks, with sensitive actions automatically refused when no human is available to approve them.MIT