Skip to main content
Glama

Chrome MCP Docker

Persistent Chrome DevTools MCP Server

Docker Hub License MCP

Stable, persistent Chrome DevTools for AI coding assistants.


Why Docker?

Feature

Official MCP

This

Session Persistence

❌

✅

Docker Stability

❌

✅

Mobile Testing

❌

✅

Native Interactions

❌

✅

Console Logs

❌

✅

Host Header Bypass

❌

✅


Related MCP server: Chrome DevTools MCP

Installation

Works with just Docker - no additional dependencies.

# 1. Start Chrome container
docker run -d --name chrome-persistent --restart unless-stopped \
  -p 9222:9222 --shm-size=2g \
  zenika/alpine-chrome:with-puppeteer \
  --no-sandbox --remote-debugging-address=0.0.0.0 \
  --remote-debugging-port=9222 --disable-gpu --headless

# 2. Add to Claude Code (~/.claude.json)
{
  "mcpServers": {
    "chrome": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--network", "host",
               "-e", "CHROME_HOST=localhost", "-e", "CHROME_PORT=9222",
               "nullrunner/chrome-mcp-docker:latest"]
    }
  }
}

Option B: Docker MCP Gateway

Warning: The official Docker MCP Gateway has bugs affecting custom servers. See Known Issues. Use Option A or the patched fork below.

# Use patched fork (recommended if you want Gateway)
git clone https://github.com/null-runner/mcp-gateway.git
cd mcp-gateway && go build -o docker-mcp ./cmd/docker-mcp

# Then setup chrome-mcp-docker
git clone https://github.com/null-runner/chrome-mcp-docker.git
cd chrome-mcp-docker
./setup.sh

Tools

Tool

What it does

navigate

Go to URL, wait for load

screenshot

Capture viewport

click

Click element

type

Type into input

scroll

Scroll page/element

wait_for_selector

Wait for element

get_computed_styles

CSS debugging

get_network_errors

Failed requests

get_console_logs

JS console output

mobile_mode

iPhone X viewport


Requirements

  • Docker (one of):

  • Any MCP-compatible client (Claude Code, Cursor, Windsurf, Cline, etc.)


Documentation


How It Works

AI Coding Assistant (Claude, Cursor, etc.)
    ↓
chrome-mcp-docker (MCP Server)
    ↓
Chrome DevTools Protocol
    ↓
Persistent Chrome Browser (Docker)

The key innovation: Host Header Bypass. Chrome rejects connections from Docker containers because host.docker.internal isn't localhost. This server spoofs the header.


Known Issues

Docker MCP Gateway has several open bugs affecting custom servers:

  • PR #263 - Tool name prefix separator (: → __)

  • PR #278 - Prefixed names sent to remote servers

  • PR #279 - Claude clients excluded from tool activation

Recommendation: Use standalone installation (Option A) until these PRs are merged.


License

MIT


Report Bug · Request Feature

Made with ☕ by null-runner

Available Tools

10 tools
clickB

Clicks an element identified by CSS selector.

Inputs: selector (required).

get_computed_stylesB

Returns the computed CSS styles for an element (essential for UI debugging).

Inputs: selector (required).

get_console_logsB

Returns captured console logs (errors, warnings, info). Useful for debugging JS issues.

Inputs: clear.

get_network_errorsB

Returns a list of failed network requests.

Inputs: no named parameters.

mobile_modeB

Toggles mobile viewport (iPhone X dimensions).

Inputs: enable (required).

screenshotA

Takes a screenshot of the viewport. Returns base64.

Inputs: no named parameters.

scrollB

Scrolls the page. Use x,y coordinates OR selector to scroll into view.

Inputs: x, y, selector.

typeC

Types text into an input field.

Inputs: selector (required), text (required).

wait_for_selectorC

Waits for an element to appear in the DOM.

Inputs: selector (required), timeout.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: click, type, scroll, navigate, screenshot, wait_for_selector are standard browser actions; get_computed_styles, get_console_logs, get_network_errors are debugging tools; mobile_mode is a viewport toggle. No overlap or ambiguity.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern (get_computed_styles, get_console_logs, wait_for_selector) or are single verbs (click, scroll). 'mobile_mode' is a noun phrase, but still clear. Inconsistent usage of underscores (some have, others don't), but pattern is mostly predictable.

    Tool Count5/5

    10 tools is well-scoped for a browser automation server. Covers essential navigation, interaction, and debugging without redundancy. No unnecessary tools, and the count is within the ideal 3-15 range.

    Completeness3/5

    Core actions (navigate, click, type, scroll) and debugging (console logs, network errors, computed styles) are covered, but missing common operations like executing JavaScript, getting page source, handling alerts, managing cookies, or interacting with more complex form elements (select, checkbox). Agent may need workarounds.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI coding assistants to control and inspect a live Chrome browser through DevTools for automated testing, performance analysis, debugging, and web scraping. Provides reliable browser automation using Puppeteer with comprehensive DevTools access.
      1,859,617 npm
      3
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.
      1,859,617 npm
      Apache 2.0