Enables remote control of Chrome tabs through the DevTools Protocol for tasks like executing JavaScript, capturing screenshots, and monitoring
Most developer tooling work still happens through a UI a human drives. Chrome Tools MCP server moves it into the conversation instead. Enables remote control of Chrome tabs through the DevTools Protocol for tasks like executing JavaScript, capturing screenshots, and monitoring network traffic.
The server publishes 7 tools. What each one is for:
list_tabs — The list_tabs tool exposed by this serverexecute_script — Executes JavaScript code in a specified tab. Parameters: - tabId: ID of the Chrome tab - script: JavaScript code to executecapture_screenshot — Captures a screenshot of a specified tab, automatically optimizing it for AI model consumption. Parameters: - tabId: ID of the Chrome tab - formatcapture_network_events — Monitors and captures network events from a specified tab. Parameters: - tabId: ID of the Chrome tab - duration: Duration in seconds to capture -load_url — Navigates a tab to a specified URL. Parameters: - tabId: ID of the Chrome tab - url: URL to loadquery_dom_elements — Queries and retrieves detailed information about DOM elements matching a CSS selector. Parameters: - tabId: ID of the Chrome tab - selector: CSSclick_element — Clicks on a DOM element and captures any console output triggered by the click. Parameters: - tabId: ID of the Chrome tab - selector: CSS selector toConfiguration is passed through the environment: CHROME_DEBUG_URL, CHROME_CONNECTION_TYPE, CHROME_ERROR_HELP. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
@nicholmikey/chrome-tools on npm is all you need. Most clients run it directly, so configuration is a few lines and a restart.
Plenty of developer tooling servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Chrome Tools's toolset — list_tabs, execute_script, capture_screenshot and 4 more — is a fair guide to whether it matches your workflow. It is maintained by nicholmikey; worth a glance at recent repository activity before you build anything load-bearing on it.
SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.
| Tool | What it does |
|---|---|
| list_tabs | The list_tabs tool exposed by this server. |
| execute_script | Executes JavaScript code in a specified tab. Parameters: - tabId: ID of the Chrome tab - script: JavaScript code to execute |
| capture_screenshot | Captures a screenshot of a specified tab, automatically optimizing it for AI model consumption. Parameters: - tabId: ID of the Chrome tab - format: Image format (jpeg/png) - Note: This is only for initial capture. Final |
| capture_network_events | Monitors and captures network events from a specified tab. Parameters: - tabId: ID of the Chrome tab - duration: Duration in seconds to capture - filters: Optional type and URL pattern filters |
| load_url | Navigates a tab to a specified URL. Parameters: - tabId: ID of the Chrome tab - url: URL to load |
| query_dom_elements | Queries and retrieves detailed information about DOM elements matching a CSS selector. Parameters: - tabId: ID of the Chrome tab - selector: CSS selector to find elements Returns: - Array of DOM elements with properties |
| click_element | Clicks on a DOM element and captures any console output triggered by the click. Parameters: - tabId: ID of the Chrome tab - selector: CSS selector to find the element to click Returns: - Object containing: - message: Suc |
{
"mcpServers": {
"chrome-tools": {
"command": "npx",
"args": ["-y", "@nicholmikey/chrome-tools"],
"env": {
"CHROME_DEBUG_URL": "your-value",
"CHROME_CONNECTION_TYPE": "your-value",
"CHROME_ERROR_HELP": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| CHROME_DEBUG_URL | Endpoint or connection string the server talks to. | Yes |
| CHROME_CONNECTION_TYPE | Configuration value read at startup. | Optional |
| CHROME_ERROR_HELP | Configuration value read at startup. | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.