Back to MCP Servers

Control Chrome MCP Server

Community MCP server that controls Chrome tabs, runs JavaScript, captures screenshots, and monitors network traffic through the Chrome DevTools Protocol.

Developer Tools by nicholmikey (community) None active
Overview

Control Chrome (published as @nicholmikey/chrome-tools) is an open-source MCP server that connects to a running Google Chrome instance through the Chrome DevTools Protocol (CDP). It exposes a small set of tools that let an AI agent enumerate open tabs, navigate URLs, query and click DOM elements, execute arbitrary JavaScript, capture screenshots, and record network events from a target tab.

The server communicates with Chrome over the local remote debugging WebSocket (default http://localhost:9222), so it works cross-platform on macOS, Windows, Linux, WSL, and Docker as long as Chrome is launched with the --remote-debugging-port=9222 flag. Connection mode is configurable for direct, SSH tunnel, and containerized setups.

It is a community project (not an official Anthropic or Google extension), but it is one of the more commonly cited "Control Chrome" implementations referenced in Claude Code and Claude Desktop MCP issues. It is useful as a lightweight alternative to heavier browser automation stacks like Puppeteer or Playwright when you only need tab control plus a few DevTools primitives.

Tools

Tool Description
list_tabs Lists available Chrome tabs reachable through the DevTools Protocol.
execute_script Runs a JavaScript snippet inside the context of a target tab and returns the result.
capture_screenshot Captures a screenshot of a tab. Output is optimized to WebP with PNG fallback, bounded by max dimensions and a 1MB size limit.
capture_network_events Records network activity for a tab over a duration, with optional filtering.
load_url Navigates a specific tab to a target URL.
query_dom_elements Returns information about DOM elements matching a CSS selector.
click_element Clicks the element matching a CSS selector and returns success state plus any console output.
Setup Guide

Prerequisites

  • Node.js installed locally
  • Google Chrome launched with the remote debugging port enabled:
# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222

# Windows
chrome.exe --remote-debugging-port=9222

# Linux
google-chrome --remote-debugging-port=9222

For WSL, expose Windows Chrome through an SSH tunnel forwarding port 9222. For Docker, run chromedp/headless-shell with port 9222 exposed.

Install

npm install @nicholmikey/chrome-tools

MCP client config

Add the server to your MCP client config (Claude Desktop, Cursor, etc.):

{
  "mcpServers": {
    "chrome-tools": {
      "command": "node",
      "args": ["path/to/chrome-tools/dist/index.js"],
      "env": {
        "CHROME_DEBUG_URL": "http://localhost:9222",
        "CHROME_CONNECTION_TYPE": "direct",
        "CHROME_ERROR_HELP": "Launch Chrome with --remote-debugging-port=9222"
      }
    }
  }
}

Environment variables

  • CHROME_DEBUG_URL: URL of the Chrome DevTools endpoint (default http://localhost:9222)
  • CHROME_CONNECTION_TYPE: direct, SSH tunnel, or Docker
  • CHROME_ERROR_HELP: Custom error message returned when the server cannot reach Chrome
Use Cases
  • Drive a logged-in Chrome session for scraping or workflow automation without spinning up a separate Puppeteer/Playwright browser
  • Debug a live web app by running execute_script and capture_network_events against a running tab
  • Take optimized WebP screenshots of pages for visual review or regression checks
  • Click through a UI flow (load_url, query_dom_elements, click_element) to validate that critical paths still work
  • Inspect XHR/fetch traffic on a target tab while reproducing a bug, then have the agent summarize failing requests
Example Prompts
  • "List all open Chrome tabs and tell me which one is on github.com."
  • "Open https://example.com in the active tab and take a full-page screenshot."
  • "Run a script in the current tab to grab the document title and the first h1."
  • "Click the element matching button[type=submit] on the checkout tab and report any console errors."
  • "Capture network events on tab 1 for 10 seconds while I reload the page, then list failed requests."
Pros
  • Cross-platform (macOS, Windows, Linux, WSL, Docker) because it talks to CDP, not OS-level APIs like AppleScript
  • Drives an existing Chrome profile, so it inherits logins, cookies, and extensions
  • Small, focused tool surface (7 tools) that is easy to reason about for agents
  • Screenshots auto-optimize to WebP with size and dimension caps, keeping responses agent-friendly
Limitations
  • Community project maintained by a single author, not an official Anthropic or Google MCP server
  • Known reliability issues where execute_script and content extraction can fail with "Chrome is not running" even when CDP is reachable (see anthropics/claude-code issue #48806)
  • Requires the user to manually launch Chrome with --remote-debugging-port=9222, which is awkward for non-technical users and disables some Chrome security features
  • No built-in auth, so any local process that can reach the debug port can drive the browser
Alternatives
  • chrome-devtools-mcp by the Chrome DevTools team, a more comprehensive CDP-based MCP server with 29 tools covering automation, performance, and Lighthouse
  • Puppeteer MCP server from the reference servers collection, which spins up its own headless Chrome instead of attaching to an existing one
  • Playwright MCP from Microsoft for cross-browser automation with a richer selector and tracing toolkit