chrome-devtools-mcp
No description published.
npm · fingerprint b054ed7afdd47162254101d8 · repository · RSS
32tools
3recorded versions
23dtracked
changed 7d ago
What changed
Changed 2026-10-23 11:21 UTC
1 description rewritten, 2 schema or annotation changes with the description left byte-identical.
--- pinned/list_console_messages +++ observed/list_console_messages { "annotations": { "category": "debugging", - "description": "Page number to return (0-based). When omitted, returns the first page.", + "description": "Page number to return (0-based). When omitted, returns the first page. Ignored unless pageSize is set.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" - "description": "Filter messages to only return messages of the specified service worker.", + "description": "Filter messages by the service worker ID shown by list_pages (sw-N).", "type": "string" }, "types": {
--- pinned/list_network_requests +++ observed/list_network_requests { "annotations": { "category": "network", - "description": "Page number to return (0-based). When omitted, returns the first page.", + "description": "Page number to return (0-based). When omitted, returns the first page. Ignored unless pageSize is set.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" - "websocket", "manifest", "signedexchange", "ping",
--- pinned/wait_for +++ observed/wait_for { "annotations": { "category": "navigation", - "description": "Wait for the specified text to appear on the selected page.", + "description": "Wait for the specified text to appear on the selected page. By default, hidden text is also matched. Set visible to true to wait until the matched text is visible.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, + }, + "visible": { + "default": false, + "description": "If true, wait until the matching text is visible. By default, hidden text also counts.", + "type": "boolean" } }, "required": [
Changed 2026-10-16 11:06 UTC
4 descriptions rewritten, 26 schema or annotation changes with the description left byte-identical, 2 tools added.
--- pinned/click +++ observed/click { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "dblClick": { "description": "Set to true for double clicks. Default is false.",
--- pinned/close_page +++ observed/close_page { "annotations": { "category": "navigation", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "pageId": { "description": "The ID of the page to close. Call list_pages to list pages.",
--- pinned/drag +++ observed/drag { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "from_uid": { "description": "The uid of the element to drag",
--- pinned/emulate +++ observed/emulate { "annotations": { "category": "emulation", - "description": "Emulates various features on the target page.", + "description": "Emulates various features on the target page. Each call replaces all emulation settings (except extraHttpHeaders), so pass all desired settings in a single call.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "colorScheme": { - "description": "Emulate the dark or the light mode. Set to \"auto\" to reset to the default.", + "description": "Emulate the dark or the light mode. Omit or set to \"auto\" to reset to the default.", "enum": [ "dark", "light", + "forcedColors": { + "description": "Emulate the `forced-colors` CSS media feature. Omit or set to \"auto\" to reset to the default.", + "enum": [ + "active", + "none", + "auto" + ], + "type": "string" + }, "geolocation": { "description": "Geolocation (`<latitude>,<longitude>`) to emulate. Latitude between -90 and 90. Longitude between -180 and 180. Omit to clear the geolocation override.", "type": "string" + "prefersContrast": { + "description": "Emulate the `prefers-contrast` CSS media feature. Omit or set to \"auto\" to reset to the default.", + "enum": [ + "more", + "less", + "custom", + "no-preference", + "auto" + ], + "type": "string" + }, + "prefersReducedMotion": { + "description": "Emulate the `prefers-reduced-motion` CSS media feature. Omit or set to \"auto\" to reset to the default.", + "enum": [ + "reduce", + "no-preference", + "auto" + ], + "type": "string" + }, "userAgent": { - "description": "User agent to emulate. Set to empty string to clear the user agent override.", + "description": "User agent to emulate. Omit or set to empty string to clear the user agent override.", "type": "string" }, "viewport": { - "description": "Emulate device viewports '<width>x<height>x<devicePixelRatio>[,mobile][,touch][,landscape]'. 'touch' and 'mobile' to emulate mobile devices. 'landscape' to emulate landscape mode.", + "description": "Emulate device viewports '<width>x<height>x<devicePixelRatio>[,mobile][,touch][,landscape]'. 'touch' and 'mobile' to emulate mobile devices. 'landscape' to emulate landscape mode. Omit to clear the viewport override.", "type": "string" } },
--- pinned/evaluate_script +++ observed/evaluate_script { "annotations": { "category": "debugging", - "description": "Evaluate a JavaScript function inside the target page. Returns the response as JSON, so returned values have to be JSON-serializable.", + "description": "Evaluate JavaScript inside the target page. The source can be provided inline or loaded from a local file. Returns the response as JSON, so returned values have to be JSON-serializable.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "args": { - "description": "An optional list of arguments to pass to the function.", + "description": "An optional list of arguments (element uids from the page content snapshot) to pass to the function.", "items": { "description": "The uid of an element on the page from the page content snapshot", "type": "string" + "format": { + "description": "How to interpret the source. \"function\" treats it as a function declaration and supports args. \"script\" evaluates it as classic JavaScript and does not support args. Defaults to \"function\". ECMAScript modules are not supported.", + "enum": [ + "function", + "script" + ], + "type": "string" + }, "function": { - "description": "A JavaScript function declaration to be executed by the tool in the target page.\nExample without arguments: `() => document.title` or `async () => await fetch(\"example.com\")`.\nExample with arguments: `(el) => el.innerText`\n", + "description": "JavaScript source to execute in the target page. Provide either this or sourcePath, but not both. The source is interpreted according to format.\nExample without arguments: `() => document.title` or `async () => await fetch(\"example.com\")`.\nExample with arguments: `(el) => el.innerText`\n", "type": "string" }, "pageId": { + "sourcePath": { + "description": "The absolute or relative path to a JavaScript file on the MCP server's local filesystem. Provide either this or function, but not both.", + "type": "string" + }, "waitForStableDom": { "description": "Whether to wait for the DOM to settle. Pass false if the script only reads data. Defaults to true.", "type": "boolean" - "pageId", - "function" + "pageId" ], "type": "object" },
--- pinned/fill +++ observed/fill { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "includeSnapshot": { "description": "Whether to include a snapshot in the response. Default is false.",
--- pinned/fill_form +++ observed/fill_form { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "elements": { "description": "Elements from snapshot to fill out.",
--- pinned/get_console_message +++ observed/get_console_message { "annotations": { "category": "debugging", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "msgid": { "description": "The msgid of a console message on the page from the listed console messages",
--- pinned/get_css_styles +++ observed/get_css_styles { "annotations": { "category": "debugging", - "description": "Retrieve matched CSS rules, inline styles, inherited styles, and cascade information for an element identified by its UID.\nUse this tool to debug why specific CSS properties are applied, overridden, or conflicting. Results are paginated and return 10 rules per page by default; use pageIdx to page through the remaining rules. Requires a UID from take_snapshot.", + "description": "Retrieve matched CSS rules, inline styles (element.style), inherited styles, custom properties, and cascade wrappers (@layer, @media, @container, @scope) for an element identified by its UID.\nRules are ordered from highest to lowest cascade precedence and include source line numbers (e.g. index:196). Active (winning) declarations have no prefix tag, while (losing) overridden declarations are prefixed with [overloaded].\nTreat the output as authoritative and complete.\nResults are paginated (10 rules per page by default); use pageIdx to page through the remaining rules. Requires a UID from take_snapshot.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "pageId": { "description": "Targets a specific page by ID.",
--- pinned/get_network_request +++ observed/get_network_request { "annotations": { "category": "network", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "pageId": { "description": "Targets a specific page by ID.",
--- pinned/handle_dialog +++ observed/handle_dialog { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "action": { "description": "Whether to dismiss or accept the dialog",
--- pinned/hover +++ observed/hover { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "includeSnapshot": { "description": "Whether to include a snapshot in the response. Default is false.",
--- pinned/lighthouse_audit +++ observed/lighthouse_audit { "annotations": { "category": "debugging", - "description": "Get Lighthouse score and reports for accessibility, SEO, best practices, and agentic browsing. This excludes performance. For performance audits, run performance_start_trace", + "description": "Get Lighthouse scores, failing audits, and the DOM nodes they flag for accessibility, SEO, best practices, and agentic browsing. Full reports are saved to disk. This excludes performance. For performance audits, run performance_start_trace", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "device": { "default": "desktop",
--- pinned/list_console_messages +++ observed/list_console_messages { "annotations": { "category": "debugging", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "includePreservedMessages": { "default": false,
--- pinned/list_network_requests +++ observed/list_network_requests { "annotations": { "category": "network", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "includePreservedRequests": { "default": false,
--- pinned/list_pages +++ observed/list_pages { "annotations": { "category": "navigation", - "additionalProperties": {}, + "additionalProperties": false, "properties": {}, "type": "object" },
--- pinned/navigate_page +++ observed/navigate_page { "annotations": { "category": "navigation", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "handleBeforeUnload": { "description": "Whether to auto accept or beforeunload dialogs triggered by this navigation. Default is accept.",
--- pinned/new_page +++ observed/new_page { "annotations": { "category": "navigation", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "background": { "description": "Whether to open the page in the background without bringing it to the front. Default is false (foreground).",
--- pinned/performance_analyze_insight +++ observed/performance_analyze_insight { "annotations": { "category": "performance", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "insightName": { "description": "The name of the Insight you want more information on. For example: \"DocumentLatency\" or \"LCPBreakdown\"",
--- pinned/performance_start_trace +++ observed/performance_start_trace { "annotations": { "category": "performance", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "autoStop": { "default": true, + "ignoreCache": { + "description": "Whether to bypass the HTTP cache when reloading the page, to measure a cold page load. Only applies if reload is true.", + "type": "boolean" + }, "pageId": { "description": "Targets a specific page by ID.", "type": "number"
--- pinned/performance_stop_trace +++ observed/performance_stop_trace { "annotations": { "category": "performance", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "filePath": { "description": "The absolute file path, or a file path relative to the current working directory, to save the raw trace data. For example, trace.json.gz (compressed) or trace.json (uncompressed).",
--- pinned/press_key +++ observed/press_key { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "includeSnapshot": { "description": "Whether to include a snapshot in the response. Default is false.",
--- pinned/resize_page +++ observed/resize_page { "annotations": { "category": "emulation", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "height": { "description": "Page height", - "type": "number" + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" }, "pageId": { "description": "Targets a specific page by ID.", - "type": "number" + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" } }, "required": [
+ tool added: screencast_start
+ tool added: screencast_stop
--- pinned/select_page +++ observed/select_page { "annotations": { "category": "navigation", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "bringToFront": { "description": "Whether to focus the page and bring it to the top.",
--- pinned/take_heapsnapshot +++ observed/take_heapsnapshot { "annotations": { "category": "memory", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "filePath": { "description": "A path to a .heapsnapshot file to save the heapsnapshot to.",
--- pinned/take_screenshot +++ observed/take_screenshot { "annotations": { "category": "debugging", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "filePath": { "description": "The absolute path, or a path relative to the current working directory, to save the screenshot to instead of attaching it to the response.",
--- pinned/take_snapshot +++ observed/take_snapshot { "annotations": { "category": "debugging", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "filePath": { "description": "The absolute path, or a path relative to the current working directory, to save the snapshot to instead of attaching it to the response.",
--- pinned/type_text +++ observed/type_text { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "pageId": { "description": "Targets a specific page by ID.",
--- pinned/upload_file +++ observed/upload_file { "annotations": { "category": "input", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "filePaths": { "description": "One or more files paths to upload. File paths have to be local to the browser instance (not the MCP).",
--- pinned/wait_for +++ observed/wait_for { "annotations": { "category": "navigation", - "additionalProperties": {}, + "additionalProperties": false, "properties": { "pageId": { "description": "Targets a specific page by ID.",
Current tools
Show all 32 tool fingerprints
click
close_page
drag
emulate
evaluate_script
fill
fill_form
get_console_message
get_css_styles
get_network_request
handle_dialog
hover
lighthouse_audit
list_console_messages
list_network_requests
list_pages
navigate_page
new_page
performance_analyze_insight
performance_start_trace
performance_stop_trace
press_key
resize_page
screencast_start
screencast_stop
select_page
take_heapsnapshot
take_screenshot
take_snapshot
type_text
upload_file
wait_for
Watch this server yourself
If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.
npx -y mcp-pin@0.2.3 -- <your chrome-devtools-mcp command>
Or subscribe to this page's RSS feed to be told when it changes.
Badge
The badge states one fact about time and nothing else. It never claims a server is safe.
[](https://mcp-pin.gautamkhosla.com/servers/9d552d76d512d9f8.html)