chrome-fast
Drives a real, logged-in Google Chrome browser via the Chrome DevTools Protocol, providing tools to navigate tabs, read pages as a compact accessibility tree with numbered element refs, click, type, scroll, fill and submit forms, take screenshots, and run JavaScript in the page.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
chrome-fast
Fast Chrome browser automation MCP server (stdio or HTTP) backed by the Chrome DevTools Protocol. It drives a real, logged-in Chrome profile and returns pages as a compact accessibility tree with numbered element refs, so an agent can read, click, type and fill forms with very few round trips.
Setup on a new PC
Prerequisites
Node.js 20+
Google Chrome installed
Install
npm install
npm run buildStart Chrome in debug mode
Double-click start-chrome-debug.bat. It opens Chrome on port 9222 with an isolated profile under
%LOCALAPPDATA%\NanoClaw\ChromeProfile. Sign in to any accounts you need (e.g. Google for Gemini) in
that window; the profile persists.
You only need the bat for the first run (to sign in). After that chrome-fast launches Chrome itself: whenever a tool is called and nothing is listening on the debug port, it starts Chrome with the same flags and the same profile, waits for the port, then connects.
Environment variables (all optional):
Variable | Default | Purpose |
|
| DevTools port to connect to / launch on |
|
|
|
| auto-detected | Path to |
|
| Set to |
|
| Address Chrome's DevTools port listens on. The protocol has no authentication and gives full control of the logged-in profile, so keep it on loopback unless a container or another machine must reach Chrome directly (the HTTP mode below does not need that). |
|
| Maximum content lines in a page snapshot before the rest is omitted |
| unset | Run the HTTP server on this port instead of stdio (same as |
|
| Address the HTTP server binds to |
| unset | If set, HTTP clients must send |
The bat script honours CHROME_PORT, CHROME_PROFILE, CHROME_PATH and CHROME_DEBUG_ADDRESS too.
Register in Claude Code (~/.claude.json)
Stdio mode (recommended for single-machine use):
{
"mcpServers": {
"chrome-fast": {
"command": "node",
"args": ["C:\\path\\to\\chrome-fast\\dist\\index.js"]
}
}
}HTTP mode (for containers / cross-machine):
node dist/index.js --http 3500This serves two transports on the same port:
http://localhost:3500/mcp— Streamable HTTP, the current MCP transport (claude mcp add --transport http chrome-fast http://host.docker.internal:3500/mcp)http://localhost:3500/sse— the older HTTP+SSE transport, for clients that still need ithttp://localhost:3500/health— returnsok
The HTTP server gives anyone who can reach it full control of the browser. Set MCP_HTTP_TOKEN when the
port is reachable from other machines and pass the token from the client, e.g.
claude mcp add --transport http chrome-fast http://host:3500/mcp --header "Authorization: Bearer <token>".
Verify
Restart Claude Code. The mcp__chrome-fast__* tools should be available. Try:
mcp__chrome-fast__tabs— lists open Chrome tabsmcp__chrome-fast__navigate— navigates a tab
Test
npm run build
npm testThe end-to-end test launches a headless Chrome with a throwaway profile, serves fixture pages locally and
exercises every tool. It needs Chrome installed (or CHROME_PATH set).
Related MCP server: agent-chrome
Tools provided
navigate(url,waitUntil: load / domcontentloaded / networkidle,timeout)tabs,tab_new,tab_switch,tab_closeget_page(format:accessibilitywith page text,interactivewithout text, orhtml),screenshot,evaluateclick,type,scroll,fill_formwait(CSS selector, text on the page, network idle, or a fixed time)
Notes for drivers
Element refs returned by
get_page/navigate/click/typeare plain numbers (pass"55"). They go stale when the page re-renders; if a tool reports a stale ref, callget_pageagain.Snapshots list the page text as
text "…"lines, headings with their level, and form fields with their currentvalue="…". Lines starting withNote:report things handled automatically, for example a dismissedconfirm()dialog or a page that did not finish loading in time.clickscrolls the element into view first. If another element covers it, a DOMclick()is dispatched instead and a note says so. When a click starts a navigation, the new page is returned.typeappends to the existing content; useclear: trueto replace it.pressEnter: truesubmits forms and sends chat prompts (Gemini, for example).fill_formhandles text inputs, textareas,<select>(by option value or label), checkboxes and radios ("true"/"false") and contenteditable elements, in a way React and similar frameworks notice.submit: truesubmits the form like its submit button would (validation and submit handlers run).JavaScript dialogs never block the tools:
alertandbeforeunloadare accepted,confirmandpromptare dismissed. To accept aconfirm, runevaluatewithwindow.confirm = () => truefirst.evaluatebehaves like the DevTools console: top-levelawait, several statements,letthat can be declared again on the next call, and the$/$$helpers. Promises are awaited, DOM nodes come back as HTML, and objects as JSON. It stops after 30 seconds.screenshotreturns a PNG (or JPEG) image block;fullPage: truecaptures the whole scrollable page, scaled down if it would exceed what the Claude API accepts.
This server cannot be deployed
Maintenance
Related MCP Connectors
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Automate cloud Chrome—navigate, click, type, screenshot, run code, record screen video
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables AI agents and developers to automate real Chrome/Chromium browsers through the Chrome DevTools Protocol, with token-efficient snapshots, multi-action batching, shadow DOM traversal, system-page control, extension management, and network/WebSocket inspection.811MIT
- AlicenseNot gradedqualityCmaintenanceLets local AI agents drive the Chrome browser a user already has open, including signed-in sessions, by listing tabs, reading page text and actionable elements, then clicking, filling, selecting, scrolling, navigating, and capturing viewport screenshots without exporting cookies. Runs as a dependency-free local stdio process over Native Messaging, with per-tab leases, automatic reconnection, and pause/write-action controls.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to run Playwright-compatible browser automation with persistent profiles, proxies, Chrome extensions, and humanized mouse, keyboard, and scroll interactions over stdio or Streamable HTTP. Supports web research, daily automation, testing workflows, and optional session-scoped CDP access.541 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to perform Playwright-compatible browser automation through a Chromium-based runtime, with persistent profiles, proxy matching, extension loading, Docker deployment, and stdio or Streamable HTTP transports. It supports web research, daily automation, and testing workflows driven by natural-language prompts.541 npmMIT