Browser-MCP Navigator
Fast-Browser-MCP (Fast-Browser-MCP Navigator)
Ultra-fast browser automation server over Chrome DevTools Protocol (CDP), exposed as a Model Context Protocol (MCP) server.
No screenshots. No Playwright relay. Direct CDP WebSocket — 20–50× fewer tokens, ~10ms per action.
Note: The core Python package is named
fast_browser_mcpinternally.
What it does
Controls a real Chrome browser from any AI agent that supports MCP. The agent receives a compact accessibility-tree snapshot with @eN references after every action — no pixels, no heavy HTML blobs.
Agent ──MCP──► Fast-Browser-MCP Server ──CDP──► ChromeRelated MCP server: Browser Jet Pilot
Quick Start — Docker (Recommended)
git clone https://github.com/ingjohnfigueroablanco/Fast-browser-MCP.git
cd Fast-browser-MCP
cp .env.example .env # optionally set MCP_API_KEY
docker compose up -dServer ready at http://localhost:3067/sse.
Quick Start — Local (No Docker)
git clone https://github.com/ingjohnfigueroablanco/Fast-browser-MCP.git
cd Fast-browser-MCP
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
python -m fast_browser_mcp # stdio modeConnecting from Claude Code
Option A — Local subprocess / stdio
Add to your project's .mcp.json:
{
"mcpServers": {
"fast-browser-mcp": {
"command": "python",
"args": ["-m", "fast_browser_mcp"]
}
}
}Option B — Docker / SSE
{
"mcpServers": {
"fast-browser-mcp": {
"type": "sse",
"url": "http://localhost:3067/sse",
"headers": { "X-API-Key": "your-key" }
}
}
}Connecting from other agents / frameworks
Python agent (mcp SDK)
from mcp import ClientSession
from mcp.client.sse import sse_client
async with sse_client("http://localhost:3067/sse",
headers={"X-API-Key": "your-key"}) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool("navigate", {"url": "https://example.com"})
print(result.content[0].text)Testing Localhost Apps (Docker)
The browser runs inside the container. localhost inside Docker ≠ your dev machine.
Approach | How |
Docker Desktop | Use |
ngrok |
|
Local mode | (stdio) Chrome runs on your machine — |
Available Tools
Tool | Description |
| Launch / reconnect Chrome |
| Close Chrome |
| Go to URL, wait for load / networkidle |
| Accessibility tree as compact text with |
| Human-like click by coordinates |
|
|
| Clear + type text in an input |
| Key press (Enter, Tab, Escape, ArrowDown…) |
| Select native |
| Mouse hover (menus, tooltips) |
| React/Vue/Angular-safe input setter via native JS |
| Scroll page or element into view |
| Run any JavaScript — drag, events, async fetch, bulk loops |
| Bulk operations — run a JS snippet once per item |
| Raw CDP protocol — file upload, device emulation, network intercept |
| innerText of element or full page |
| Wait until text appears on page |
| JS console logs |
| Network requests / responses |
| PNG base64 (escape hatch) |
| Current URL + title |
Performance & Bulk Operations
The bottleneck is LLM round-trips, not the browser
Each tool call costs one full LLM inference + HTTP round-trip. The browser executes CDP in ~10ms.
Pattern | Tool calls | Typical wall time |
20 × (click + fill + click) | 60 | ~10 min |
1 × js_eval_loop with 20 items | 1 | ~15 sec |
Rule: for N > 5 repetitions, use js_eval_loop
# GOOD — 1 tool call for 20 users
js_eval_loop(
items=users,
script="""
document.querySelector('.agregar').click();
await new Promise(r => setTimeout(r, 400));
// ... fill logic ...
document.querySelector('.crear').click();
return item.user;
""",
delay_ms=300,
)Environment Variables
Variable | Default | Description |
|
|
|
|
| SSE bind address |
|
| SSE port |
| (empty) | API key header; empty = no auth |
| auto | Explicit path to chrome.exe |
| (empty) | Extra Chrome flags |
|
|
|
|
|
|
Architecture
mcp/ FastMCP server + tool definitions
browser/ BrowserManager — lifecycle, navigate, snapshot, waits
snapshot/ AX tree → compact text with @eN refs (no screenshots)
actions/ mouse, keyboard, forms (ref → coordinates)
cdp/ Raw CDP WebSocket connection + event buffers
chrome/ Chrome launcher, port scan, reattachWhy it's faster than Playwright:
No Node.js relay — Python speaks CDP directly.
Chrome stays alive between calls (daemon) — 0 ms startup per tool call.
Snapshot = compact AX text, not full YAML or heavy screenshots.
@eNrefs = stablebackendNodeId— no DOM re-query per action.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenancesingle-binary MCP server that gives AI agents a browser. 66 tools for navigation, form filling, data extraction, screenshots, and DOM diffing — built on pure Chrome DevTools Protocol.Last updated7MIT
- AlicenseAqualityDmaintenanceSelf-hosted MCP server for AI browser automation. Connects to your own Chromium instance via CDP, providing tools for browser control, navigation, interaction, and content extraction.Last updated191MIT
- Flicense-qualityDmaintenanceMCP server that connects AI agents to browser DevTools via CDP, enabling real-time access to console logs, network requests, and page state.Last updated
- AlicenseAqualityBmaintenanceA lightweight 30KB MCP browser automation server that uses raw Chrome DevTools Protocol to enable AI agents to browse the web, take screenshots, interact with elements, and capture live page events like console logs and network requests.Last updated151,0418MIT
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ingjohnfigueroablanco/Fast-browser-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server