Chrome DevTools MCP
Drives a real Google Chrome browser window (launched per chat or attached to a browser you started), letting the agent open pages, read page content, click and type, take screenshots at given viewport widths, read console messages and network requests, execute scripts, record performance traces, and run Lighthouse audits.
Runs Lighthouse audits against pages loaded in the browser, returning results such as failing accessibility checks.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Chrome DevTools
Give your DeepSeek Harness Agent a real Chrome browser to drive and inspect.
This plugin installs Chrome DevTools MCP as the Harness browser provider, so the Agent works a Chrome window you can watch. It opens pages, reads them, clicks and types, takes screenshots, reads console messages and network requests, runs scripts, records performance traces, and runs Lighthouse audits.
Chrome belongs to the chat that opened it. Close the chat and its browser goes with it, so one conversation can never drive another one's pages.
What you can ask for
"Open example.com, screenshot it, and tell me the console errors."
"Go to my app on localhost:3000, sign up with a test account, and tell me whether the confirmation step works."
"Record a performance trace on localhost:3000 and explain the largest contentful paint."
"Run a Lighthouse audit on localhost:3000 and tell me what fails accessibility."
"Screenshot that page at 375 pixels wide so I can check the mobile layout."
"Click the thing that is broken and tell me exactly what the network request returns."
Related MCP server: browspark-mcp
Install
In the Harness, open Plugins in the left sidebar.
Press Install.
Paste this repository's address:
https://github.com/DevTarlow/dsh-chrome-devtoolsInstall it, then refresh the page.
Start a new chat. The Agent connects a browser when a chat begins, so a chat that was already open when you installed keeps running without one.
The install dialog accepts a GitHub address, a package name, or a local folder.
To pin the release this README describes, paste
github:DevTarlow/dsh-chrome-devtools#v0.1.0 instead. If you would rather ask
your Agent, say: "Install the bundle github:DevTarlow/dsh-chrome-devtools."
You need Google Chrome (or Chrome for Testing) at its current stable version. The plugin finds it by itself, so a normal installation needs no configuration. You also need a desktop session, because the browser opens a real window.
Check it works
In a new chat, ask:
Open example.com and tell me its title and any console errors.
A Chrome window opens, loads the page, and the Agent answers from what it read.
If you would rather not open a window, see headless under Settings.
Settings
The plugin's defaults are set in cordis.patch.yml. To change
one, put the same override in your own Harness profile's cordis.patch.yml — for
example ~/.dsh/profiles/web/cordis.patch.yml — then start a new chat.
- id: browser-use-chrome-devtools
name: '@deepseek-ai/dsh-experimental-browser-use-chrome-devtools-mcp'
config:
mode: launch
headless: trueAny setting you leave out falls back to the plugin's own default rather than this bundle's, so restate every value you still want whenever you edit that block.
Setting | Default | What it does |
|
|
|
|
|
|
| unset | Which Chrome to launch. Left unset, the plugin finds it. Set it for an unusual install, or for the wrapper in Common questions. |
| — | Required by |
| the client's own | How long one tool call may take, in milliseconds. |
Drive your own browser instead
launch gives every chat a fresh profile, which means it starts logged out. To
keep the tabs, cookies and logins you already have, start Chrome yourself and
point the plugin at it.
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.dsh-chrome"- id: browser-use-chrome-devtools
name: '@deepseek-ai/dsh-experimental-browser-use-chrome-devtools-mcp'
config:
mode: attach
endpoint: http://127.0.0.1:9222One chat holds that browser at a time. When the chat ends, the plugin disconnects and leaves your browser running.
Start that browser before you open a chat. The plugin connects when a chat is created, so a chat started while the browser is unreachable has no browser tools.
Chrome extensions
The browser this plugin launches is a clean, isolated profile with extensions disabled, so it cannot load or test an unpacked extension. To test one, attach the plugin to a Chrome you start yourself, with the extension already loaded:
- id: browser-use-chrome-devtools
name: '@deepseek-ai/dsh-experimental-browser-use-chrome-devtools-mcp'
config:
mode: attach
endpoint: http://127.0.0.1:9222The plugin then drives the pages with its normal browser tools. It does not pass
Chrome DevTools MCP's --category-extensions flag, so the extension-specific
tools (install_extension, reload_extension, list_extensions,
trigger_extension_action) and chrome-extension:// pages are not available
through the plugin. Use the chrome-devtools CLI from the same pinned
chrome-devtools-mcp release for those:
chrome-devtools start --browser-url http://127.0.0.1:9222 --categoryExtensions=true
chrome-devtools list_extensions
chrome-devtools install_extension /absolute/path/to/unpacked-extension
chrome-devtools reload_extension <extension-id>
chrome-devtools new_page "chrome-extension://<extension-id>/popup.html"Loading an extension over a browser URL needs Chrome 149 or newer. Stop the CLI
daemon with chrome-devtools stop when you are done.
Use a dedicated profile for that browser. The debugging port gives anything on the machine full control of it, so keep it bound to localhost and stop the browser when you finish testing.
Use your existing logged-in Chrome
Chrome 136+ does not allow --remote-debugging-port against the default profile,
but you can let the CLI attach to the Chrome you are already using. Enable
Chrome's remote debugging bridge (Chrome 144+):
Open
chrome://inspect/#remote-debuggingin that Chrome.Turn on Enable remote debugging and leave the browser running.
Click Allow when Chrome asks to allow the session.
The CLI finds that browser itself:
chrome-devtools start --auto-connect --channel=stable --categoryExtensions=true
chrome-devtools list_extensionsFor the plugin, read the browser's websocket endpoint and use it as the attach endpoint:
PORT=$(head -1 ~/.config/google-chrome/DevToolsActivePort)
WSPATH=$(sed -n 2p ~/.config/google-chrome/DevToolsActivePort | tr -d '\r')- id: browser-use-chrome-devtools
name: '@deepseek-ai/dsh-experimental-browser-use-chrome-devtools-mcp'
config:
mode: attach
endpoint: ws://127.0.0.1:<port><path>The port and browser ID change when Chrome restarts or the toggle is turned off
and on; update the endpoint and start a new chat. While remote debugging is on,
the agent can read every tab, cookie, and login in that profile. Turn it off at
chrome://inspect/#remote-debugging when you finish testing.
Common questions
The browser tools are missing. Start a new chat. The plugin connects a browser when a chat is created, so chats that were already open do not have one.
Chrome exits immediately, or the Agent reports No usable sandbox!. Chrome
cannot start with its own sandbox on your machine. This is common in containers
and WSL, on Ubuntu 23.10+ where AppArmor restricts unprivileged user namespaces,
and wherever /opt/google/chrome/chrome-sandbox is not owned by root with mode
4755. Repairing that needs root. Otherwise launch Chrome through a wrapper that
adds --no-sandbox and point executablePath at it:
printf '#!/bin/sh\nexec /usr/bin/google-chrome --no-sandbox "$@"\n' > ~/chrome-no-sandbox
chmod +x ~/chrome-no-sandbox executablePath: /home/you/chrome-no-sandboxThat runs untrusted page content without the operating system's sandbox. Fix the sandbox if you can, and treat the wrapper as a last resort.
Missing X server to start the headful browser. Your machine has no display.
Set headless: true.
The page shows a login wall, or the browser starts empty. That is what a
fresh profile looks like. Use attach above to bring your own logged-in browser.
A screenshot arrives as text instead of a picture. Your model route has to accept images, and your profile needs an attachment store, for the image to reach the model.
Saving a screenshot to a file is refused. The browser tools may only write
under your operating system's temp directory — a path inside your project is
answered with Access denied: path … is not within any of the configured workspace roots. Ask for the screenshot as an image instead; it reaches the model
without touching the filesystem.
Installing was rejected for incompatible peers. The browser packages this
plugin builds on are pre-stable and pin the Harness version exactly. Update the
two dependencies in package.json to the versions that match your
Harness release.
The console prints Update available: 1.9.0 -> 1.10.1. That notice comes from
the Chrome DevTools MCP server this plugin mounts, not from the plugin itself, and
the version it offers is chosen by DeepSeek Harness. The npm install it suggests
does nothing here: the plugin starts its own pinned copy, so running that command
only adds a stray dependency wherever you ran it. Ignore the notice, or start the
Harness with CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS=1 to silence it.
Limits
One browser plugin per Harness. Do not also install the Playwright or Stagehand browser providers.
Chromium only. Firefox and WebKit are not offered.
A launched browser belongs to one chat. Reloading or resuming a chat starts fresh browser state; the conversation does not restore cookies or pages.
Cancelling a call cannot undo a navigation or click that already happened.
Tool definitions come from the pinned
chrome-devtools-mcprelease, not from the Harness, so they carry no stability promise.Usage statistics are off. Performance tools otherwise behave as upstream documents them, including sending trace URLs to the Google CrUX API.
Removing it
Open Plugins, find dsh-chrome-devtools, and uninstall it. Chats you start
afterwards have no browser tools. If you added a cordis.patch.yml override,
delete that block too.
For developers
This repository is a configuration-only bundle: two files, no build step.
File | Owns |
the two rows this bundle inserts and their defaults | |
a check that drives the MCP server without a Harness |
verify-live.mjs lists the tool catalog, opens a URL, reads the page title, and
writes a screenshot. Run it from a DeepSeek Harness source checkout:
cd packages/experimental/browser-use-chrome-devtools-mcp
export DSH_MCP_CLI=$(node --input-type=module -e "import {fileURLToPath} from 'node:url'; console.log(fileURLToPath(import.meta.resolve('chrome-devtools-mcp/build/src/bin/chrome-devtools-mcp.js')))")
cd ../../..
export DSH_MCP_SDK=$PWD/packages/mcp/mcp-client/node_modules/@modelcontextprotocol/client/dist
DSH_MCP_HEADLESS=true node dsh-chrome-devtools/verify-live.mjs https://example.com dsh-chrome-devtools/live-check.pngSet DSH_MCP_HEADLESS=true only in a shell that cannot reach the X server; the
bundle itself opens a window. Set DSH_MCP_EXECUTABLE to test a particular Chrome
or a wrapper.
The two dependencies in package.json are the whole reason this plugin works on
a released Harness: the browser packages are not part of a published dsh, so
they install with the bundle. A profile that installs this repository from a git
spec installs them. A profile that links this directory as a local bundle does
not, and the rows then resolve from whatever the Harness installation carries.
License
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Launch, inspect, control, and share isolated cloud browsers for your agents.
Let AI agents use your real, signed-in Chrome: tabs, clicks, forms, screenshots and video.
Give your agents the live web.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to control and inspect a live Chrome browser for automated web debugging, performance analysis, and Lighthouse audits. It allows agents to capture screenshots, monitor network requests, and measure Core Web Vitals using plain-English prompts.2,099,626 npmApache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to browse, click, and debug real websites in the user's own signed-in browser or a dedicated Chrome instance, with only explicitly shared tabs reachable and revocable at any time. Exposes the full developer toolbox — console, network, sources, debugger, elements, performance and CPU/memory profiling, storage, service workers, coverage, emulation, accessibility, security, Lighthouse, and Playwright-test recording — as first-class tools callable in one step.27 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to control and inspect a live Chrome browser for reliable automation, in-depth debugging, and performance analysis.2,099,626 npmApache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables an agent to run live mobile and desktop browser sessions of a web page and receive measured, selector-attached findings as text — contrast ratios, touch-target sizes, clipping, overflow, and theme drift — instead of guessing from screenshots, while a human shares the same live view and can pin notes for the agent to read.95 npmMIT