Skip to main content
Glama
chrome-devtools-mcp

chrome-devtools-mcp

by mouse9527

browser-mcp-image

Container image for ChromeDevTools/chrome-devtools-mcp served over MCP Streamable HTTP by punkpeye/mcp-proxy. It attaches to a Chrome / Chromium that is already running (for example a sidecar with a persistent profile) over the DevTools protocol; the image contains no browser.

  • Unmodified upstream: chrome-devtools-mcp and mcp-proxy from npm, every dependency pinned by package-lock.json (version + sha512); install scripts are not run. This repo only adds an entrypoint.

  • One upstream process for all sessions: mcp-proxy starts a single chrome-devtools-mcp child and every MCP session talks to it. With --page-id-routing every page-scoped tool requires a pageId, so several clients can drive their own tabs in the same browser at the same time without touching each other's (or the user's) tabs.

  • Runtime: gcr.io/distroless/nodejs22-debian13 — no shell, no package manager; runs as uid 1000.

  • Image: ghcr.io/mouse9527/browser-mcp-image:sha-<short commit> (linux/amd64; built only from main; no latest).

Component

Version

chrome-devtools-mcp

1.12.0

mcp-proxy

6.7.21

Node.js

22 (distroless, Debian 13)

What the entrypoint does

Starts mcp-proxy in the same process, listening on MCP_HOST:MCP_PORT at /mcp (Streamable HTTP only; /sse is off), with this child:

chrome-devtools-mcp --browserUrl=$BROWSER_URL --page-id-routing --experimental-vision
                    --no-usage-statistics --no-performance-crux --no-file-navigations
  • --experimental-vision adds coordinate tools (click_at) for things without an accessibility node (canvas etc.).

  • Outbound calls of the MCP server itself are off: npm update check, usage statistics, CrUX lookups and config file discovery (CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS / _NO_USAGE_STATISTICS / _NO_CONFIG_DISCOVERY = 1).

  • file: URLs cannot be opened with new_page / navigate_page.

  • If chrome-devtools-mcp exits, mcp-proxy exits too (non-zero), so the container runtime restarts it.

  • If the browser restarts, the next tool call reconnects by itself; its reply starts with Note: the browser was restarted or reconnected since the last call. Page ids have changed. Clients must then find their pages again (list_pages); old page ids may point at other tabs.

Related MCP server: chrome-pilot-mcp

Environment

Variable

Default

Meaning

BROWSER_URL

http://127.0.0.1:9222

DevTools HTTP endpoint of the running browser

MCP_HOST

0.0.0.0

Listen address

MCP_PORT

8931

Listen port (/mcp)

MCP_REQUEST_TIMEOUT_MS

900000

Per-request limit inside mcp-proxy (long wait_for / scripted waits)

MCP_PROXY_API_KEY

unset

mcp-proxy option: when set, clients must send X-API-Key

HOME

/tmp/home

Must be writable

Writable paths needed with a read-only root filesystem: /tmp — mount an emptyDir / tmpfs there.

Run

# a browser with remote debugging on 127.0.0.1:9222 in the same network namespace (Pod / --network host)
docker run --rm --network host ghcr.io/mouse9527/browser-mcp-image:sha-<short commit>

Kubernetes: run it as a second container in the browser's Pod; keep the browser's DevTools port on 127.0.0.1.

Security notes

  • No authentication by default, like most stdio-to-HTTP bridges: anyone who can reach the port can fully drive the browser, including its logged-in sessions and arbitrary JavaScript in pages (evaluate_script). Restrict who can reach it (NetworkPolicy / private network), or set MCP_PROXY_API_KEY.

  • Never expose the browser's DevTools port itself.

Upgrading

  • chrome-devtools-mcp / mcp-proxy: change the versions in package.json, then regenerate the lockfile from the public npm registry: npm install --package-lock-only --ignore-scripts --omit=dev --registry https://registry.npmjs.org. Check the upstream changelogs for new tools / changed flags and update the expected tool count in smoke.sh.

  • Base images: update the digests in NODE_IMAGE / RUNTIME_IMAGE; keep both on the same Debian release.

CI

.github/workflows/image.yml: build linux/amd64 → audit.sh (no credentials or .git in the image, no browser downloaded, installed versions = package.json; file list and hashes uploaded as an artifact) → smoke.sh against the runner's headless Chrome (33 tools, /sse off, uid 1000, no shell, telemetry off, two interleaved tasks each on its own pageId with a fresh MCP session per call — smoke/isolation.py, file: refused, reconnect after a browser restart) → push to ghcr from main only.

License

MIT for the files in this repository (LICENSE). The image also contains third-party software under its own licenses; see NOTICE.md.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    • Peerspace MCP server for ChatGPT, Claude and any AI agent: list booking requests, reply to inquiry, send custom proposal, accept booking and update listing pricing in your own Peerspace account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Peerspace yourself; Cotlet does not store your password and you need no Peerspace API key. About the official Peerspace API: Peerspace has no public API, developer portal or webhooks for hosts (checked 11 Oct 2026). The only built-in connection is calendar sync through iCal links or Cronofy, which keeps your availability accurate and nothing more. Setup and FAQ: https://cotlet.dev/integrations/peerspace-api-mcp-server

    • Riverside MCP server for ChatGPT, Claude and any AI agent: create studio, schedule session, invite guest and download recording in your own Riverside account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Riverside yourself; Cotlet does not store your password and you need no Riverside API key. About the official Riverside API: Riverside has a Business API for select Business accounts only, with a key from your customer success manager, and it mostly gets or deletes recordings and lists scheduled events (checked 11 Oct 2026). Its official MCP server (beta, Grow, Webinar and Business plans) searches, edits and posts clips, but cannot schedule sessions or invite guests. Setup and FAQ: https://cotlet.dev/integrations/riverside-api-mcp-server

    • Chatwoot MCP server for ChatGPT, Claude and any AI agent: list conversations, reply to conversation, add private note, assign conversation, add labels and resolve or snooze conversation in your own Chatwoot account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Chatwoot yourself; Cotlet does not store your password and you need no Chatwoot API key. About the official Chatwoot API: Chatwoot has a full REST API, the Application API, and an official command-line client, but no official MCP server (checked 22 Oct 2026). The API covers conversations, messages, contacts, labels, teams and assignments with an access token from Profile Settings. Setup and FAQ: https://cotlet.dev/integrations/chatwoot-api-mcp-server

    • Thryv MCP server for ChatGPT, Claude and any AI agent: list appointments, book appointment, create invoice, add client and send message in your own Thryv account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Thryv yourself; Cotlet does not store your password and you need no Thryv API key. About the official Thryv API: Thryv Business Center has no public developer API (checked 11 Oct 2026). The only official way in from code is a Zapier connection with 4 triggers and 5 actions, authorized with a token that only the primary admin can see; the REST API Thryv documents is for Keap, its separate CRM. Setup and FAQ: https://cotlet.dev/integrations/thryv-api-mcp-server

      https://cotlet.dev/mcp/v1/thryv

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Connects to a running Chrome instance via CDP to expose browser control as MCP tools, preserving login state, cookies, and extensions for automation.
      19
      14 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables reading browser DevTools data (tabs, console errors, network requests, screenshots, DOM, CSS, JS execution) via Chrome DevTools Protocol.
      5,213 npm
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables MCP clients to drive a real Chromium browser for automation, including navigation, JavaScript execution, CDP commands, network capture, and multi-tab control.
      7
      30 PyPI
      GPL 3.0