MCP server giving AI assistants real Chrome DevTools access — console, network, DOM, source maps, breakpoints and step debugging — with multi-session tab isolation.
DevCDP demonstrates strong naming conventions (verb_noun pattern across all 40 tools) and comprehensive descriptions (all tools have 50+ character descriptions). Tool definitions are centralized in src/core/tools.js with explicit schema validation at registration time. However, output schemas are not documented in the visible code, responses are shaped by compact() projections but the expected return structure is not declared in tool metadata. Error handling is present but generic (DevCdpError wrapper). Parameter descriptions are present but some lack format/constraint details (e.g., 'expression' in console_eval lacks timeout guidance). Tool composition is excellent, each tool has a single responsibility and output includes chaining IDs (e.g., tabId for session management).
Clear the console message history for the current page.
Execute JavaScript in the page context and return the result. Useful for inspecting variables, calling functions, or running arbitrary code.
Read console messages (log, warn, error, info, debug) from the current page. Returns messages in chronological order with timestamps and severity levels.
Evaluate an expression in the current debugger context (at the paused location).
Get the local and closure scopes at the current debugger position.
Get the current call stack when the debugger is paused.
List all active breakpoints in the current debugging session.
Pause execution of the page's JavaScript.
Output schemas not documented in tool metadata. While compact() projections exist in code, the expected return structure (fields, types, pagination) is not declared in tool definitions visible to clients. LLMs cannot plan downstream calls without knowing what fields to extract.
Parameter constraints lack format/range details. 'expression' in console_eval, 'query' in source_search, and 'pattern' in discover_apis have no min/max length, regex pattern, or format guidance. LLMs may pass oversized or malformed inputs.
Error handling is generic. DevCdpError wrapper exists but visible error messages in tool descriptions do not include recovery guidance (e.g., 'If connection fails, call devtools_connect() first'). Agents cannot self-correct without explicit hints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Remove a breakpoint by its ID.
Resume execution of the page's JavaScript after a pause.
Set a breakpoint at a specific line in a script. The breakpoint will pause execution when that line is reached.
Step into the next function call in the debugger.
Step out of the current function in the debugger.
Step over the next statement in the debugger (execute the current line and stop at the next).
Attach to a Chrome browser instance via the Chrome DevTools Protocol. Opens a new tab if no browser is running. Returns the page URL, browser version, and connection details.
Detach from the browser and release any claimed tabs. Clears the session state and closes the DevTools connection.
Get or set DevCDP configuration settings such as timeouts, response size limits, and retry behavior.
Check the current connection status to the browser and page. Returns whether a browser is attached, the current page URL, and any active debugging session.
Discover available APIs and global objects on the current page.
Click a DOM element matched by CSS selector.
Get the HTML content of the current page or a specific element.
Query the DOM using CSS selectors and return matching elements with their attributes, text content, and structure.
Remove an attribute from a DOM element matched by CSS selector.
Set an attribute on a DOM element matched by CSS selector.
Set the text content of a DOM element matched by CSS selector.
Type text into a form input or textarea element matched by CSS selector.
Get guidance on how to use DevCDP effectively, including best practices and common patterns.
List all open tabs in the browser, including their URLs, titles, and IDs.
Capture a heap snapshot of the page's JavaScript memory usage.
Get current memory usage statistics for the page.
Clear the network request history for the current page.
Read network requests and responses from the current page. Returns details including URL, method, status, headers, and timing information.
Navigate to a URL in the current page.
Reload the current page.
Take a screenshot of the current page and return it as a base64-encoded PNG image.
Claim a specific tab for this DevCDP session. Only one session can claim a tab at a time.
Get a log of user interactions with the page during this session (clicks, typing, etc.).
Release the currently claimed tab from this DevCDP session.
Get the source code of a script or stylesheet by URL or script ID.
Search for text in all loaded scripts and stylesheets. Returns matching files, line numbers, and context.
devtools_settings tool is ambiguous. Description does not clarify whether it gets or sets (or both), what settings are available, or what values are valid. Parameter 'setting' lacks an enum or list of valid options.
No pagination guidance in list tools. console_log, network_log, source_search, and dom_query accept 'limit' but do not document total count, next_cursor, or how to fetch remaining results. Large result sets may exhaust context.