Skip to main content
Glama
Chrome Devtools Advanced MCP

Chrome Devtools Advanced MCP

by Eddym06

Chrome Devtools Advanced MCP

Your Intelligent Bridge Between AI and the Browser.

This Model Context Protocol (MCP) server enables AI assistants like Claude, Roo Code, or Windsurf to interact with Google Chrome in a natural, powerful, and stealthy way. Unlike other automation tools, this solution connects to your actual browser profile, allowing you to use your existing login sessions, cookies, and extensions without detection.


✨ Why Use This?

  • 🕵️ "Human" Navigation: Uses a persistent clone of your real Chrome profile (cookies, localStorage, logged-in accounts). If you're logged into LinkedIn, Gmail, or your corporate ERP, your AI assistant is too — and the session survives between runs.

  • 👤 Profile Cloning: list_chrome_profiles finds every profile on the machine, clone_chrome_profile mirrors the one you want into ~/.chrome-mcp/profiles/…, and sync_chrome_profile_to_real pushes logins back into your own Chrome.

  • 🛡️ Undetectable: Stealth mode is applied per tab, and Chrome runs with the automation switch excluded.

  • 🛠️ Robust Toolset: 96+ specialized tools, plus MCP resources and prompts, optimized for data scraping, specific element extraction, and visual analysis.

  • ⚡ Fast & Safe: Safely executes scripts and screenshots, with intelligent output truncation to prevent crashing your AI context.


Related MCP server: chrometools-mcp

🚀 Quick Installation

For Users (VS Code / Cline / Kilo Code / Antigravity / Claude Desktop)

Simply add this to your mcp.json configuration file:

{
  "mcpServers": {
    "chrome-devtools-advanced-mcp": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-advanced-mcp", "--port=9223"]
    }
  }
}

Restart your assistant (Ctrl+R in VS Code), and you'll have instant access.


💡 Simplified Usage Guide

0. First time: use your real Chrome profile (one command, one sign-in)

Ask your AI:

"Set up Chrome with my profile" → it calls setup_chrome_profile

That mirrors your real profile (your profile name/avatar, bookmarks, history, new-tab tiles, settings and — once — your extensions) into ~/.chrome-mcp/profiles/<profile> and opens Chrome on it.

What you have to do (the whole list):

Platform

You do this

Then

Windows

Sign in to Google once, in the Chrome window that just opened

Done forever: that session lives in the clone and is reused on every launch. Chrome never needs closing, and your own browser keeps working normally

macOS / Linux

Close Chrome once before the setup

Done: the cloned session works as-is, no sign-in needed

Nothing else ever: no re-login, no closing Chrome afterwards, your personal browser is never touched (the clone is a separate Chrome instance). Saved passwords and autofill cannot be copied on Windows (Chrome encrypts them with a key bound to the browser) — save them once inside the clone if you want them there.

1. Launch the Browser

After that, ask your AI:

"Launch Chrome with my profile"

This triggers launch_chrome_with_profile, which reuses the clone window (or an already-debuggable Chrome) without closing your other windows.

2. Navigate & Analyze

You can ask:

  • "Go to amazon.com and search for laptops"

  • "Analyze the HTML of the login form" (Uses optimized get_html)

  • "Take a screenshot of the pricing table"

3. Interact

The AI can click, type, and fill forms intelligently, waiting for elements to load automatically.


🛠️ Tool List

Tools are split into two tiers so the default list stays manageable for the AI: ~42 core tools are visible from the start; ~52 advanced tools (Network Advanced, Anti-Detection & Privacy, Service Workers, System, Performance) stay hidden until the AI calls show_advanced_tools (call hide_advanced_tools to collapse the list again).

🎭 Browser & Session Control

Tool

Description

launch_chrome_with_profile

Start Here! Launches Chrome with your cookies/extensions.

browser_action

Navigate, reload, go back/forward.

manage_tabs

Create, close, switch, or list tabs.

close_browser

Safely closes the controlled session.

🔍 Analysis & Extraction

Tool

Description

get_html

Critical. Extracts simplified or full HTML. Supports selectors.

screenshot

Captures visual proof (png/jpeg).

get_page_metrics

Layout and viewport analysis.

get_accessibility_tree

See the page structure as screen readers do (advanced tools).

get_console_logs

Read console.log/warn/error/info/debug and uncaught exceptions for a tab — capture starts automatically on first call.

🖱️ Interaction

Tool

Description

perform_interaction

Click, Type, Hover, Drag & Drop with auto-wait.

fill_form

Fill multiple fields (text/select/checkbox) in a single call instead of N perform_interaction calls.

execute_script

Run custom JavaScript safely (requires return).

extract_element_data

Get specific text or attributes from elements.

set_viewport

Resize window for responsive testing.

download_file

Click a download trigger, wait for it to finish, and get the saved file path.

🛡️ Anti-Detection & Privacy

Tool

Description

enable_stealth_mode

Hides automation flags.

set_user_agent

Spoof device/browser identity.

set_geolocation

Mock GPS coordinates.

set_timezone

Change browser timezone.

📡 Network (Advanced)

Tool

Description

capture_network_on_action

Record traffic while performing an action.

resend_network_request

Replay captured API calls.

start_har_recording

Save full network logs (HAR format).

list_websocket_messages

Listen to socket traffic.

emulate_network_conditions

Throttle to Slow 3G/4G/offline to test resilience.

run_performance_audit

Core Web Vitals (LCP, CLS) + basic timing via PerformanceObserver.

🍪 Storage & Cookies

Tool

Description

get_cookies / set_cookie

Manage browser cookies.

get_local_storage

Read/Write local storage data.

get_indexed_db

List IndexedDB databases, or read records from one.

export_session

Save current session state to file.

test_with_different_cookies

Test a URL with a different cookie set inside a throwaway, fully isolated browser context — never touches your real session.

📚 Resources & Prompts

Beyond tools, this server exposes two other MCP primitives:

  • Resources (cacheable/listable, not just one-shot tool calls) — for each open tab: chrome://tab/{tabId}/html, chrome://tab/{tabId}/screenshot, chrome://tab/{tabId}/har.

  • Prompts (pre-baked task templates that chain the tools above): audit-accessibility, debug-console-errors, scrape-table.

In clients that support them (e.g. Claude Desktop), these show up as attachable resources / slash-style prompts, separate from the tool list.


❓ FAQ

Do I need to close my Chrome? No! Thanks to "Shadow Profile" technology, this server creates a temporary safe clone of your profile. You can keep browsing normally while the AI works in parallel.

Does it work on Mac/Linux? Yes, it is fully cross-platform.

I see "Tool disabled by user" error This is a VS Code security feature.

  1. Reload VS Code (Ctrl+R).

  2. When the AI tries to use a tool again, click "Always Allow" on the popup.

Why are cookie values redacted / file:// blocked? Security defaults (see docs/USAGE_GUIDE.md → Security defaults): navigation is limited to http(s), cookie values require includeValues:true, and HAR exports/downloads are sandboxed to your working dir or temp folder.


📚 Documentation


👨‍💻 For Developers

To contribute or run locally:

git clone https://github.com/Eddym06/chrome-devTools-advanced-mcp.git
cd chrome-devTools-advanced-mcp
npm install
npm run build
npm start

Before opening a PR:

npm run lint        # ESLint (flat config)
npm run build       # clean tsc build
npm test            # vitest — includes an in-memory MCP client/server integration test
npm run docs:check  # fails if any guide references a non-existent tool
# optional, on a machine with Chrome installed:
CHROME_MCP_E2E=1 npm test   # real-Chrome end-to-end suite

CI (.github/workflows/ci.yml) runs lint + build + test on Node 20 and 22 for every push/PR.


Developed with ❤️ by @eddym06

Available Tools

34 tools
add_custom_header_to_requestA

Add a custom header to matching requests before sending. Simpler alternative to intercept_and_modify_traffic with flat parameters.

Inputs: headerName (required), urlPattern (required), headerValue (required), tabId, +2 more.

browser_actionA

Control browser navigation: navigate to URL, go back/forward, or reload the page.

Inputs: action (required), url, tabId, timeout, +1 more.

capture_network_on_actionA

Capture network requests triggered by an action (click, navigate, type). Returns full request details including URL, headers, body, and method.

Inputs: action (required), url, text, tabId, +3 more.

clear_cookiesB

Clear all cookies for a specific domain or all domains.

Inputs: tabId, allDomains.

clear_local_storageB

Clear all localStorage items for the current domain.

Inputs: tabId.

close_browserA

Close the Playwright-managed browser and release all connections. Only works for browsers launched by this MCP.

Inputs: no named parameters.

execute_scriptB

Execute JavaScript in the page context. Must include a return statement. Set awaitPromise=true for async code.

Inputs: script (required), tabId, timeoutMs, awaitPromise.

export_sessionA

Export complete session state (cookies, localStorage, sessionStorage) as JSON for later import.

Inputs: tabId.

extract_api_dataC

Navigate to URL and capture all API/XHR responses. Returns parsed JSON data.

Inputs: url (required), tabId, timeout, apiPattern, +2 more.

extract_element_dataA

Extract text content or HTML attributes from page elements using CSS selectors.

Inputs: action (required), selector (required), tabId, attributeName.

get_accessibility_treeB

Get the accessibility tree of the page (ARIA roles, labels, interactive elements).

Inputs: tabId.

get_browser_statusA

Check browser connection status, CDP port, and whether managed by Playwright or external.

Inputs: no named parameters.

get_cookiesA

Get browser cookies for the current page or a specific URL.

Inputs: url, tabId.

get_htmlA

Extract HTML source from the page or a specific CSS selector. Output truncated at 50k chars.

Inputs: tabId, selector, outerHTML.

get_local_storageA

Get all localStorage key-value pairs for the current domain.

Inputs: tabId.

get_page_metricsC

Get layout metrics of the page

Inputs: tabId.

hide_advanced_toolsA

Hide advanced tools to simplify the tool list. Call show_advanced_tools to unlock them again.

Inputs: no named parameters.

import_sessionA

Import previously exported session data to restore cookies and storage. Navigate after import to activate.

Inputs: sessionData (required), tabId.

intercept_and_modify_trafficA

Intercept and modify network requests in real-time before sending. Preserves cookies and authentication. Supports header/body/method changes.

Inputs: action (required), urlPattern (required), modifications (required), tabId, +1 more.

launch_chrome_with_profileA

Launch Google Chrome with your real profile (cookies, extensions, sessions). IMPORTANT: Only call this tool when the user EXPLICITLY asks to open or launch Chrome. Do NOT call it automatically or proactively.

Inputs: profileDirectory.

manage_browser_sessionB

Save, load, clear, or export browser session (cookies + storage) in one call.

Inputs: operation (required), tabId, sessionData, sessionName, +2 more.

manage_tabsA

Manage browser tabs: list, create, close, switch, or get current URL. Tab ID required for close/switch.

Inputs: action (required), url, tabId.

perform_interactionA

Interact with page elements: click, type into inputs, select dropdown options, scroll, or wait for selector. Use get_html first to verify selectors.

Inputs: action (required), selector (required), text, tabId, +4 more.

screenshotB

Capture a PNG/JPEG screenshot of the full page or a specific element/area.

Inputs: clipX, clipY, tabId, format, +4 more.

set_local_storageA

Set a localStorage key-value pair. Use JSON.stringify for object values.

Inputs: key (required), value (required), tabId.

show_advanced_toolsA

Unlock advanced tools: network interception, request replay, API mocking, WebSocket monitoring, HAR recording, accessibility, anti-detection, service workers, and more.

Inputs: no named parameters.

simulate_user_journeyC

Execute a sequence of user actions (click, type, wait, navigate, screenshot) automatically.

Inputs: steps (required), tabId, stopOnError, captureScreenshots.

test_api_endpointC

Send HTTP request to an API endpoint and capture the response. Handles auth cookies automatically.

Inputs: url (required), body, tabId, method, +2 more.

test_with_different_cookiesA

Test a page with modified cookies. Saves original cookies, applies test cookies, optionally restores.

Inputs: url (required), cookies (required), tabId, extractContent, +1 more.

wait_for_load_stateA

Wait for page to reach a specific load state. Checks current readyState first, only waits for event if page has not reached the target state yet. States: load (fully loaded), domcontentloaded (HTML ready), networkidle (no network activity for 500ms).

Inputs: state, tabId, 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 34 tools

    Disambiguation3/5

    Several tools have overlapping purposes, such as add_custom_header_to_request vs intercept_and_modify_traffic, export_session/import_session vs manage_browser_session's save/load, and capture_network_on_action vs extract_api_data. Descriptions clarify specific use cases, but agents may still hesitate when choosing between similar options.

    Naming Consistency4/5

    Most tools follow a consistent verb_noun pattern (get_cookies, set_cookie, clear_cookies, navigate_and_extract_content). Minor deviations like 'screenshot' (bare noun) and 'browser_action' (noun_noun) are rare, so the overall convention remains predictable.

    Tool Count2/5

    With 34 tools, the set is too large and unwieldy. The server even includes show_advanced_tools/hide_advanced_tools to manage visibility, acknowledging the overwhelming surface. This exceeds the practical threshold for a coherent toolset.

    Completeness4/5

    The toolset covers an impressively broad range of browser automation: navigation, interaction, content extraction, cookies, storage, session management, network interception, performance metrics, and accessibility. Minor gaps exist, such as no tool to remove a single localStorage key or capture console logs, but core workflows are well supported.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Enables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.
      20
      244
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI-powered Chrome automation through natural language, providing 56+ specialized tools for browser interaction, page analysis, scenario recording, and visual testing.
      59
      25 npm
      9
      ISC
    • A
      license
      C
      quality
      D
      maintenance
      Enables AI-powered browser automation with real profiles, supporting interaction, navigation, form filling, and advanced features like visual overlays and self-healing selectors.
      42
      Apache 2.0