chrome-devtools-mcp
MCP ServerFreeChrome DevTools for coding agents
Capabilities14 decomposed
mcp-standardized browser control via stdio transport
Medium confidenceExposes Chrome DevTools capabilities through the Model Context Protocol (MCP) using STDIO transport, enabling AI agents to invoke browser operations as structured tool calls. The server implements a single-threaded execution model with Mutex-based synchronization to prevent race conditions during concurrent tool invocations, ensuring deterministic browser state transitions. Requests flow through a standardized MCP schema that maps natural language intents to typed tool parameters, with responses formatted as token-optimized JSON for LLM consumption.
Implements MCP as the primary integration layer rather than REST/WebSocket APIs, with Mutex-based single-threaded execution ensuring deterministic state management across concurrent agent requests. Directly exposes Chrome DevTools Protocol (CDP) capabilities through standardized MCP tool schemas, eliminating custom integration code per AI platform.
Provides agent-agnostic browser control via MCP standard (vs Puppeteer's Node.js-only SDK or Playwright's language-specific bindings), enabling seamless integration across Claude, Gemini, and Cursor without platform-specific adapters.
multi-strategy browser connection and lifecycle management
Medium confidenceSupports three distinct browser connection strategies (launch new instance, auto-connect to existing, HTTP debug protocol) configured via CLI arguments, with automatic lifecycle management including headless mode, isolated profiles, and custom user data directories. The system implements ensureBrowserLaunched() and ensureBrowserConnected() methods that handle connection establishment, validation, and recovery without requiring manual browser startup. Connection strategy is determined at server initialization and persists for the server's lifetime, enabling both managed and unmanaged browser scenarios.
Implements three distinct connection strategies (launch, auto-connect, HTTP debug) as first-class patterns rather than ad-hoc options, with automatic discovery of existing Chrome instances via user data directory scanning. Decouples browser lifecycle from MCP server lifecycle, enabling both managed (server launches browser) and unmanaged (server attaches to existing) scenarios.
Offers more flexible connection strategies than Puppeteer's default launch-only approach, and provides auto-discovery of existing Chrome instances without requiring manual URL configuration, reducing setup friction for agent developers.
cookie and storage management
Medium confidenceReads, sets, and deletes cookies, localStorage, and sessionStorage across the page and domain. The system uses Chrome DevTools Protocol's Storage domain to access persistent storage and the Runtime domain to access in-memory storage (localStorage, sessionStorage). Storage operations are scoped to the current page's origin, preventing cross-origin access. This enables agents to manage authentication state, test storage-dependent behavior, and clear state between test cases.
Provides unified access to cookies, localStorage, and sessionStorage via Chrome DevTools Protocol, enabling agents to manage all storage types without separate APIs or custom JavaScript execution.
Offers transparent storage management (vs Puppeteer's JavaScript-based localStorage access), enabling agents to set cookies and manage session state without custom code, improving reliability for authentication-dependent workflows.
viewport and scroll management
Medium confidenceManages viewport size, scroll position, and page dimensions. The system uses Chrome DevTools Protocol's Emulation domain to set viewport size and the Runtime domain to control scroll position via window.scrollTo(). Viewport changes trigger page reflow and may affect responsive design behavior. Scroll operations enable agents to access content below the fold and verify lazy-loading behavior.
Provides both viewport resizing (via Emulation domain) and scroll control (via Runtime domain) in a single tool, enabling agents to manage page dimensions and scroll position without separate API calls.
Offers viewport resizing capability (vs Puppeteer's setViewport which is page-specific), enabling agents to test responsive design across breakpoints, though requiring separate server instances for persistent multi-viewport testing.
wait and synchronization primitives
Medium confidenceProvides blocking wait operations for page state changes (navigation, element visibility, network idle, custom conditions). The system uses Chrome DevTools Protocol's Page and Network domains to detect state changes, with configurable timeouts and polling intervals. Wait operations block the agent until the condition is met or timeout is exceeded, enabling agents to synchronize with asynchronous page behavior without explicit polling logic.
Provides multiple wait primitives (navigation, element, networkIdle, custom) via Chrome DevTools Protocol, enabling agents to synchronize with different types of page state changes without custom polling logic.
Offers more granular wait conditions than Puppeteer's waitForNavigation/waitForSelector (supports networkIdle and custom expressions), enabling agents to handle complex async patterns without explicit polling.
error handling and state recovery
Medium confidenceImplements graceful error handling for failed operations (selector resolution, navigation timeouts, network errors) with detailed error messages and recovery suggestions. The system catches exceptions from Chrome DevTools Protocol operations and returns structured error responses with error type, message, and context. Failed operations do not crash the server or corrupt browser state, enabling agents to handle errors and retry with different approaches.
Implements structured error handling with detailed error types and recovery context, enabling agents to understand failure reasons and retry with different approaches, rather than generic exception propagation.
Provides more detailed error information than Puppeteer's exception handling (includes error type, context, recovery suggestions), enabling agents to implement intelligent retry logic and error recovery strategies.
accessibility snapshot capture and dom state extraction
Medium confidenceCaptures structured accessibility trees and DOM snapshots from the current page, extracting semantic information about interactive elements, text content, and page structure in a format optimized for LLM reasoning. The system uses Chrome DevTools Protocol's accessibility domain to build a tree representation of the page, filtering for user-visible elements and computing bounding boxes for spatial reasoning. Snapshots are serialized as JSON with element IDs, roles, labels, and coordinates, enabling agents to understand page structure without visual rendering.
Leverages Chrome DevTools Protocol's accessibility domain to extract semantic trees rather than parsing raw HTML or screenshots, providing structured element metadata (roles, labels, coordinates) optimized for LLM reasoning without visual processing overhead.
Provides semantic accessibility information (vs Puppeteer's raw DOM queries or Playwright's visual locators), enabling agents to reason about page structure without screenshots or visual analysis, reducing token consumption and improving reasoning accuracy.
performance tracing and metrics analysis with devtools integration
Medium confidenceCaptures Chrome DevTools performance traces (CPU, memory, network, rendering) and analyzes them using chrome-devtools-frontend components to extract high-level metrics like Largest Contentful Paint (LCP), First Input Delay (FID), and memory usage. The system records traces during page load or user interactions, then parses the trace data to compute performance insights without requiring external APM tools. Traces are formatted as structured JSON with timeline events, metric summaries, and bottleneck identification for agent-driven performance optimization.
Integrates chrome-devtools-frontend for trace analysis rather than relying on raw CDP trace data, enabling high-level metric extraction (LCP, FID, CLS) and bottleneck identification without custom parsing logic. Provides token-optimized summaries of trace data for LLM consumption.
Offers deeper performance insights than Puppeteer's basic timing APIs (vs simple navigation.timing), and provides structured metric extraction without external APM tools or cloud dependencies, enabling offline performance analysis.
network inspection and request/response capture
Medium confidenceIntercepts and logs HTTP/HTTPS requests and responses during page navigation and user interactions, capturing headers, body content, status codes, and timing information. The system uses Chrome DevTools Protocol's Network domain to monitor traffic without modifying requests, enabling agents to verify API calls, detect failed requests, and analyze network behavior. Network logs are formatted as structured JSON with request/response metadata, enabling agents to reason about API interactions and network issues.
Provides transparent network inspection via Chrome DevTools Protocol without request modification or mocking, capturing full request/response payloads in structured JSON format optimized for LLM analysis of API interactions.
Enables real network monitoring without proxy setup or request mocking (vs Puppeteer's request interception which requires explicit handler code), and provides structured request/response metadata for agent-driven API validation.
input automation with element targeting and interaction
Medium confidenceAutomates user input (clicks, typing, keyboard events) by targeting elements via accessibility selectors, CSS selectors, or XPath expressions. The system resolves selectors to DOM elements, computes bounding boxes, and simulates native browser events (mousedown, mouseup, keydown, keyup) to trigger event handlers. Input automation respects element state (disabled, hidden) and validates that elements are interactable before executing actions, preventing errors from stale or invalid selectors.
Targets elements via accessibility selectors (from accessibility snapshots) rather than requiring agents to construct CSS/XPath selectors, reducing selector brittleness and enabling direct mapping from snapshot elements to interactions. Validates element interactability before execution.
Provides accessibility-aware element targeting (vs Puppeteer's CSS/XPath-only selectors), enabling agents to interact with elements identified in accessibility snapshots without additional selector construction, improving reliability and reducing cognitive load.
page navigation and url management
Medium confidenceNavigates to URLs, handles page load completion, and manages browser history (back, forward, reload). The system uses Chrome DevTools Protocol's Page domain to initiate navigation, wait for load events (domContentLoaded, loadEventFired), and handle navigation timeouts. Navigation is synchronous from the agent's perspective, blocking until the page reaches a stable state (configurable via waitUntil parameter: load, domContentLoaded, networkIdle).
Provides configurable load event waiting (load, domContentLoaded, networkIdle) via Chrome DevTools Protocol, enabling agents to handle different page load patterns without custom polling or timing logic.
Offers more granular load event control than Puppeteer's goto() method (which defaults to load), enabling agents to proceed after domContentLoaded for faster interactions or wait for networkIdle for stable state.
console execution and javascript evaluation
Medium confidenceExecutes arbitrary JavaScript code in the page context and captures console output (logs, errors, warnings). The system uses Chrome DevTools Protocol's Runtime domain to evaluate expressions, with support for async/await and promise resolution. Console messages are captured via the Console domain and formatted as structured JSON with message type, text, and source location. This enables agents to extract computed values, trigger page logic, and debug JavaScript errors.
Provides both JavaScript evaluation (via Runtime domain) and console message capture (via Console domain) in a single tool, enabling agents to execute code and inspect side effects (console output) without separate API calls.
Offers more transparent JavaScript execution than Puppeteer's evaluate() (which only returns values), capturing console output and errors for debugging, enabling agents to understand page behavior beyond return values.
emulation and device simulation
Medium confidenceSimulates different device types (mobile, tablet, desktop) with specific viewport sizes, user agents, and device capabilities (touch, accelerometer). The system uses Chrome DevTools Protocol's Emulation domain to set device metrics, user agent strings, and feature flags before page load. Emulation is configured at server startup and persists for the server's lifetime, enabling consistent testing across different device profiles without restarting the browser.
Configures device emulation at server startup via CLI arguments (--deviceType or custom viewport), enabling persistent device simulation across all requests without per-request configuration overhead.
Provides persistent device emulation configuration (vs Puppeteer's per-page setViewport), reducing setup overhead for agents testing consistent device profiles, though at the cost of requiring separate server instances for multi-device testing.
screenshot and visual capture
Medium confidenceCaptures full-page or viewport screenshots in PNG or JPEG format, with support for clipping specific regions and capturing elements in different states (normal, hover, focus). The system uses Chrome DevTools Protocol's Page domain to render the page and encode screenshots, with options for full-page capture (scrolls entire page) or viewport-only capture. Screenshots are returned as base64-encoded image data, enabling agents to perform visual analysis or store snapshots for comparison.
Provides both viewport and full-page screenshot capture via Chrome DevTools Protocol, with optional region clipping, enabling agents to capture visual state at different granularities without custom rendering logic.
Offers full-page screenshot capability (vs Puppeteer's viewport-only default), enabling agents to capture entire page content without manual scrolling and stitching, though at the cost of increased latency for complex pages.
Capabilities are decomposed by AI analysis. Each maps to specific user intents and improves with match feedback.
Related Artifactssharing capabilities
Artifacts that share capabilities with chrome-devtools-mcp, ranked by overlap. Discovered automatically through the match graph.
playwright-mcp
Playwright MCP server
Browserbase MCP Server
Run cloud browser sessions and web automation via Browserbase MCP.
puppeteer-mcp-server
Experimental MCP server for browser automation using Puppeteer (inspired by @modelcontextprotocol/server-puppeteer)
inspector
Visual testing tool for MCP servers
Puppeteer MCP Server
Automate browser interactions and take screenshots via Puppeteer MCP.
chrome-devtools-mcp
MCP server for Chrome DevTools
Best For
- ✓AI agent developers building multi-step browser automation workflows
- ✓Teams integrating Chrome automation into Claude/Gemini/Cursor-based agents
- ✓Developers needing agent-agnostic browser control without platform-specific SDKs
- ✓Developers building isolated test environments where each agent session needs a fresh browser
- ✓Teams running agents against existing Chrome instances (e.g., user's local browser)
- ✓Distributed testing scenarios where Chrome runs on a different machine than the MCP server
- ✓Testing workflows that need to simulate authenticated sessions without login
- ✓Agents that need to manage session state across multiple pages
Known Limitations
- ⚠Single-threaded execution model means only one tool action processes at a time per server instance, limiting parallelism
- ⚠STDIO transport adds latency for high-frequency tool calls compared to direct WebSocket connections
- ⚠Requires MCP client support — not compatible with REST-only agent frameworks
- ⚠Auto-connect mode requires Chrome 144+ and relies on user data directory discovery, which may fail if Chrome is launched with non-standard profiles
- ⚠Headless mode (--headless) disables visual debugging and some browser features that require a display
- ⚠Isolated profiles (--isolated) create separate user data directories, preventing credential/cookie sharing across sessions
Requirements
Input / Output
UnfragileRank
UnfragileRank is computed from adoption signals, documentation quality, ecosystem connectivity, match graph feedback, and freshness. No artifact can pay for a higher rank.
Repository Details
Last commit: Apr 21, 2026
About
Chrome DevTools for coding agents
Categories
Alternatives to chrome-devtools-mcp
Are you the builder of chrome-devtools-mcp?
Claim this artifact to get a verified badge, access match analytics, see which intents users search for, and manage your listing.
Get the weekly brief
New tools, rising stars, and what's actually worth your time. No spam.
Data Sources
Looking for something else?
Search →