文件历史

提交图

514 次代码提交

作者 SHA1 备注 提交日期
Alex Rudenko 9ef4479bec refactor: types for JSON output of IssueFormatter (#1007)
- makes the id required in types
- requires toString(), toStringDetailed() to use the JSON
representation.
2026-02-23 08:03:09 +00:00
Dobes Vandermeer 33446d457e feat: add experimental screencast recording tools (#941)
## Summary

Adds `screencast_start` and `screencast_stop` MCP tools that allow
agents to record a video of a page using Puppeteer's `page.screencast()`
API.

Only enabled if the command line option `--experimental-screencast` is
provided

Closes #878.

## New Tools

### `screencast_start`
Starts recording a screencast (video) of the selected page in mp4
format.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `path` | string (optional) | temp file | Output file path |

### `screencast_stop`
Stops the active recording and reports the saved file path.

## Design

- **Start/stop pair** following the `performance_start_trace` /
`performance_stop_trace` pattern
- **State management** via `getScreenRecorder()` / `setScreenRecorder()`
on the Context interface
- **Category**: `DEBUGGING` (alongside `take_screenshot`)
- **ffmpeg dependency**: Clear error message when ffmpeg is not
installed
- **Temp file fallback**: When no `path` is provided, creates a temp
file with the correct extension

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-02-20 13:15:48 +00:00
Alex Rudenko 5696cce035 test: do not suppress uncaught errors in tests (#1008)
We want to suppress uncaught errors in production because we do not want
to crash the entire server. But it might be useful in tests.
2026-02-20 13:10:24 +00:00
Alex Rudenko 0d78685a5b refactor: cleanup string and structured console formatters (#1005)
- typed JSON objects for structured output
- same source is used for text formatting
2026-02-20 11:43:35 +00:00
Alex Rudenko bc3c40e8f9 refactor: move emulation settings to context (#1000)
- reduces boilerplate 
- allows easily to restore emulation settings

This is in preparation for the integration with Lighthouse.
2026-02-20 11:36:14 +00:00
browser-automation-bot 0c4f211317 chore(main): release chrome-devtools-mcp 0.17.3 (#998)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.17.3](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.17.2...chrome-devtools-mcp-v0.17.3)
(2026-02-19)


### 🛠️ Fixes

* remove clean from prepare
([#997](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/997))
([2016b98](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/2016b98217bf5aa8d65c6668b1e46c8a3400276f))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-02-19 18:01:19 +01:00
browser-automation-bot 34882a28af chore(main): release chrome-devtools-mcp 0.17.2 (#981)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.17.2](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.17.1...chrome-devtools-mcp-v0.17.2)
(2026-02-19)


### 🛠️ Fixes

* check that combobox is actually a select element before filling out
options
([#979](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/979))
([d2bc489](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/d2bc489e4351551ba62a104433839c4198ecae84))
* handle network request pagination correctly
([#980](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/980))
([0d9f422](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/0d9f422201538aa847a50417f1ed370e3a6c95b2))


### 📄 Documentation

* Add a note about previously installed server installations
([#982](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/982))
([c0009f7](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/c0009f7ab2f15bedd1c4ceb609db77bcb3c96f2d))
* update codex doc URL
([#987](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/987))
([ebbbea7](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/ebbbea7f9d20e4dea902d06e9b86dfe1cc9b221f))


### ♻️ Chores

* **network:** de-duplicate String and JSON formatters
([#985](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/985))
([1896dbb](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/1896dbb5a7cdc3fc0bcc5e665aee986a1180b014))
* remove text from the status code for Network requests
([#778](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/778))
([327a388](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/327a3884d8443b8591c06ddb3f9081771ae973c3))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-02-19 16:06:55 +00:00
Nikolay Vitkov 327a3884d8 refactor: remove text from the status code for Network requests (#778)
LLM are trained to know the common status code so we can rely on that
when displaying the status code and fall back to text in case of errors
or pending reponse.
2026-02-18 14:23:26 +00:00
Alex Rudenko 1896dbb5a7 refactor(network): de-duplicate String and JSON formatters (#985)
- string formatters should use the same data as the JSON formatters
- removed an extra space in network status
2026-02-18 13:08:29 +00:00
Alex Rudenko d2bc489e43 fix: check that combobox is actually a select element before filling out options (#979)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/975
2026-02-18 09:17:33 +00:00
Alex Rudenko 0d9f422201 fix: handle network request pagination correctly (#980)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/970
2026-02-17 11:29:27 +00:00
browser-automation-bot 5e5b746b66 chore(main): release chrome-devtools-mcp 0.17.1 (#936)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.17.1](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.17.0...chrome-devtools-mcp-v0.17.1)
(2026-02-16)


### 📄 Documentation

* Add 'Progressive Complexity' and 'Reference over Value' design
principles.
([#939](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/939))
([8d765c0](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/8d765c0aef7bbcd476c7e7fbe9ea63ee26cf4fa6))
* add Katalon Studio setup instructions to README
([#929](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/929))
([6cfef24](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/6cfef24ec734ed62221c66bdf03b09ce000f5bfe))
* add MCP config for Claude plugin + docs
([#944](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/944))
([a781da4](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a781da4434c3490901b28017bc7aa40493ef8dcc))
* estimate tokens using tiktoken
([#959](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/959))
([fd0a919](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/fd0a9193b37be4c5cda21dc4904093c7b58d61be))
* improve Claude Code installation instructions
([#947](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/947))
([3ec5b7e](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/3ec5b7e7a2d97c9f0165c5af3317c531a9dc058f))
* Update README with WSL configuration details
([#946](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/946))
([107c46a](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/107c46a4dbd2ba7c7b9217a75ae2b1871d3c7f0d))


### ♻️ Chores

* rename files to have more consistent style
([#935](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/935))
([9e1f9ac](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/9e1f9ac69667ddc3e2917e2c30e5ee940a03d853))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-02-16 11:52:36 +00:00
Alex Rudenko 9e1f9ac696 refactor: rename files to have more consistent style (#935)
rename files to match the style in the rest of the code.
2026-02-11 09:30:41 +00:00
browser-automation-bot 6a3ca9875a chore(main): release chrome-devtools-mcp 0.17.0 (#892)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.17.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.16.0...chrome-devtools-mcp-v0.17.0)
(2026-02-10)


### 🎉 Features

* include Error.cause chain for uncaught errors and logged Errors
([#906](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/906))
([05b01ec](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/05b01ecaba47cf1ce38564636663222c9cab46de))
* Integrate CrUX data into performance trace summaries
([#733](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/733))
([b747f9d](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/b747f9d74a12d2119b6531476b2f88ab66be0ff8))
* show message and stack trace in details when console.log'ging Error
objects
([#902](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/902))
([ffa00da](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/ffa00dab1b65b2eac8db215e0289317b8ed9b725))


### 🛠️ Fixes

* console formatter hides frames from ignored scripts
([#927](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/927))
([8e2380b](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/8e2380b434d9659ffa8a7043d2589261772fa04f))
* limit stack traces to 50 lines
([#923](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/923))
([caea23a](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/caea23a7cf33c87cd4ce426eb2a10724aba3cc71))


### 📄 Documentation

* add macOS Web Bluetooth troubleshooting note
([#930](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/930))
([3c9528b](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/3c9528b43d9bbff166fcfcfee321149ff44ddd21)),
closes
[#917](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/917)

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-02-10 08:27:33 +00:00
Simon Zünd 8e2380b434 fix: console formatter hides frames from ignored scripts (#927)
This PR wires up the default DevTools ignore listing to hide frames from
third party scripts in stack traces. By default, we ignore:

* Scripts with `/node_modules/` in their URL or where the URL starts
with `node:/`
* Scripts that are marked as ignore listed in the source map
* Content scripts from extensions

The PR adds both, unit tests and an e2e test. This is because we allow
the unit test to pass a mocked ignore checker, where-as the e2e uses the
real DevTools one.
2026-02-10 07:24:09 +00:00
Simon Zünd caea23a7cf fix: limit stack traces to 50 lines (#923)
This PR refactors the stack trace formatting logic a bit: We split the
`formatStackTrace` function into 2: One for the top-level stack trace
and the rest for the recursive ones. We also return lines separately so
we can slice the result later.
2026-02-09 12:06:04 +00:00
Simon Zünd 05b01ecaba feat: include Error.cause chain for uncaught errors and logged Errors (#906) 2026-02-06 11:57:33 +00:00
Simon Zünd 9b90564888 chore: implement formatting for Error.cause messages (#905)
A follow-up PR will add actual `cause` property resolving of remote
`Error` objects.
2026-02-06 11:28:40 +00:00
Simon Zünd ffa00dab1b feat: show message and stack trace in details when console.log'ging Error objects (#902)
This PR improves the `get_console_message` tool when logging `Error`
objects. We use the existing `getExceptionDetails` CDP command to
retrieve the structured stack trace, we'll then source map.

Example:

```js
try {
  compute();
} catch (e) {
  console.log('Compute failed', e);
}
```

Before:
```txt
### Arguments
Arg #0: Compute failed
Arg #1: {}
```

After:
```txt
### Arguments
Arg #0: Compute failed
Arg #1: ComputeError: Invariant violation
at compute (foo.ts:1:20)
at <anonymous> (main.ts:2:8)
Note: line and column numbers use 1-based indexing
```

---------

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2026-02-06 09:38:27 +00:00
Simon Zünd 1fad330bad chore: implement formatting of Error console.log arguments (#901)
This PR implements formatting for `SymbolizedError` objects that are
part of "resolved arguments". A follow-up PR will handle the actual
conversion of `Error` remote objects to `SymbolizedError`s.
2026-02-06 08:25:38 +00:00
Simon Zünd d459266414 chore: refactor ConsoleFormatter construction (#896)
This PR shuffles code around in `ConsoleFormatter` so the data flow is
more clear and flexible. Instead of augmenting an existing instance via
`#loadDetailedData` we pass the detailed data (if needed) via
constructor. The overall public API stays exactly the same, only the
internal implementation changed.

This also makes it trivial to inject "resolved arguments for testing",
which we'll need to test `SymbolizedError` instances as part of
`resolvedArgs`.

Drive-by: Make options and message ID mandatory. All call-sites already
passed these so its a no-op to tighten the type here and we can simplify
toString() a bit.
2026-02-05 10:44:22 +00:00
Simon Zünd 8228fbf207 chore: remove unused 'Error' from ConsoleFormatter (#895)
We no longer collect `pageerror` events so we don't need support for
`Error` formatting.
2026-02-05 10:06:53 +00:00
Simon Zünd f4cfd4664e chore: introduce SymbolizedError class (#890)
The "SymbolizedError" class represents a fully resolved error: The stack
trace is fully resolved and (in the future), the full `Error.cause`
chain is also fully resolved.

We'll use the `SymbolizedError` for both "uncaught exceptions" as well
as when logging `Error` objects to the console (e.g. `console.log(new
Error())`. This means the `resolvedArgs` array in `ConsoleFormatter`
will contain one `SymbolizedError` instance for every `Error` object
logged.
2026-02-05 07:57:21 +00:00
Paul Irish b747f9d74a feat: Integrate CrUX data into performance trace summaries (#733)
We upgrade the performance trace tools to include real-user experience
data from the Chrome User Experience Report (CrUX).

https://developer.chrome.com/docs/crux
https://developer.chrome.com/docs/crux/methodology

### Deets

* When a trace is stopped, the server now extracts the primary
navigation URLs from the trace (determined by insightSets).
* It calls the public CrUX API to fetch field metrics (LCP, INP, CLS)
for each unique URL/Origin.
* The formatting of crux data is handled by upstream TraceFormatter, but
it looks like this:

```md
Metrics (field / real users):
  - LCP: 2595 ms (scope: url)
  - LCP breakdown:
    - TTFB: 1273 ms (scope: url)
    - Load delay: 86 ms (scope: url)
    - Load duration: 451 ms (scope: url)
    - Render delay: 786 ms (scope: url)
  - INP: 140 ms (scope: url)
  - CLS: 0.06 (scope: url)
  - The above data is from CrUX–Chrome User Experience Report. It's how the page performs for real users.
  - The values shown above are the p75 measure of all real Chrome users
  - The scope indicates if the data came from the entire origin, or a specific url
  - Lab metrics describe how this specific page load performed, while field metrics are an aggregation of results from real-world users. Best practice is to prioritize metrics that are bad in field data. Lab metrics may be better or worse than fields metrics depending on the developer's machine, network, or the actions performed while tracing.
 ```
 
**Privacy Considerations:**

*   Updates the server README to inform users that performance analysis tools may send trace URLs to the Google CrUX API.
*   Adds a notification message to the server startup logs regarding the CrUX API interaction.


Doc: go/crux-in-bifrost 
Fixes b/446630695

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2026-02-05 07:27:15 +00:00
browser-automation-bot 4f7b068983 chore(main): release chrome-devtools-mcp 0.16.0 (#877)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.16.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.15.1...chrome-devtools-mcp-v0.16.0)
(2026-02-04)


### 🎉 Features

* include source-mapped stack trace for uncaught errors
([#876](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/876))
([ecef712](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/ecef712e70b47ae81eb3364d0aed801ec1c91a70))


### 🛠️ Fixes

* accidental extra typing in the fill tool
([#886](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/886))
([3d6e59d](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/3d6e59dda42be3c6fd97446344a28cbbaa5809b3))
* update evaluateScript description formatting
([#880](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/880))
([24db9dd](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/24db9dd78cd4f054d291322685b4f47601da3f5a))
* use 1-based line/column and fix wasm offsets in stack frames
([#884](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/884))
([7e1ec81](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/7e1ec81fb63ec8b7c6d77dbdc88beef4240243ba))


### 📄 Documentation

* mention source-mapped stack traces in 'Key features'
([#883](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/883))
([579d18a](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/579d18a3f4d1d8d05bf267a39de7f2f53e719b17))
* remove outdated --channel=beta note
([#882](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/882))
([acdb5c9](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/acdb5c9bb3f249c5a9ce1d4a3e84c580af999141))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-02-04 10:00:12 +00:00
kajanl 24db9dd78c fix: update evaluateScript description formatting (#880)
Fix formatting in the description of evaluateScript.

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-02-04 09:51:10 +00:00
Alex Rudenko 3d6e59dda4 fix: accidental extra typing in the fill tool (#886)
Fixes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/881
2026-02-04 09:34:17 +00:00
Simon Zünd 7e1ec81fb6 fix: use 1-based line/column and fix wasm offsets in stack frames (#884)
`UILocation.linkText` does the right thing when formatting a location,
e.g. a wasm location will be formatted as `foo.wasm:0x95`.
2026-02-04 08:15:27 +00:00
Simon Zünd ecef712e70 feat: include source-mapped stack trace for uncaught errors (#876)
Note that we replace the existing "pageerror" handler with our new
`UncaughtError` handler. The latter has a structured stack trace
attached which we can source map via DevTools.

This regresses the current functionality slightly, as we lose
"pageerror"s for workers and oopif.
2026-02-03 12:24:23 +00:00
Simon Zünd a08f550b28 chore: implement formatting for UncaughtError (#875) 2026-02-03 11:42:18 +00:00
Simon Zünd b5369a6c13 chore: include target ID in UncaughtError (#873) 2026-02-03 10:03:06 +00:00
Simon Zünd 613ba24e6d chore: rename PageIssueSubscriber to PageEventSubscriber (#872) 2026-02-03 09:38:28 +00:00
Simon Zünd 67d4b7aab6 chore: emit UncaughtError events for Runtime.exceptionThrown (#871)
Follow-up PRs will implement formatting of `UncaughtError`s and actually
collecting them.
2026-02-03 08:52:49 +00:00
browser-automation-bot 7c25c3adff chore(main): release chrome-devtools-mcp 0.15.1 (#864)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.15.1](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.15.0...chrome-devtools-mcp-v0.15.1)
(2026-01-30)


### 🛠️ Fixes

* disable usage statistics when CI or
CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS env is set
([#862](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/862))
([c0435a2](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/c0435a2d53eb51b7500fc5cce50344520ea164e7))
* respect custom timeouts in navigate tools
([#865](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/865))
([a0aeb97](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a0aeb97693fd5ca641f45ebcd4ce3b4b08ce21b8))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-01-30 09:56:03 +00:00
Alex Rudenko a0aeb97693 fix: respect custom timeouts in navigate tools (#865)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/863
2026-01-30 09:40:48 +00:00
Alex Rudenko c0435a2d53 fix: disable usage statistics when CI or CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS env is set (#862)
When CI or CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS env variables are
set, we override the set cli args and disable the usage statistics.
2026-01-30 07:58:45 +00:00
browser-automation-bot d491d87f21 chore(main): release chrome-devtools-mcp 0.15.0 (#856)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.15.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.14.0...chrome-devtools-mcp-v0.15.0)
(2026-01-28)


### 🎉 Features

* Add ability to inject script to run on page load
([#568](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/568))
([d845ad4](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/d845ad48584a49aa57b11de308beeb17ed0b2e10))
* enable usage statistics by default with opt-out
([#855](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/855))
([7e279f1](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/7e279f1b67c5cfd4ad033a4147c51fe20a7833f7))
* support testing light and dark mode
([#858](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/858))
([5a23a8c](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/5a23a8c201d30d40395e283f4434d933826333fa))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-01-29 12:34:57 +00:00
Alex Rudenko 5a23a8c201 feat: support testing light and dark mode (#858)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/130
2026-01-28 13:57:54 +00:00
Gustav Ernberg von Heijne d845ad4858 feat: Add ability to inject script to run on page load (#568)
Adds a parameter "initScript" to be used to inject a script into the
page load before other scripts execute.

[Page.evaluateOnNewDocument](https://pptr.dev/api/puppeteer.page.evaluateonnewdocument)

See #567

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-01-28 12:29:33 +00:00
Alex Rudenko 7e279f1b67 feat: enable usage statistics by default with opt-out (#855)
## **Usage statistics**

Google collects usage statistics (such as tool invocation success rates,
latency, and environment information) to improve the reliability and
performance of Chrome DevTools MCP.

Data collection is **enabled by default**. You can opt-out by passing
the `--no-usage-statistics` flag when starting the server:

```json
"args": ["-y", "chrome-devtools-mcp@latest", "--no-usage-statistics"]
```

Google handles this data in accordance with the [Google Privacy
Policy](https://policies.google.com/privacy).

Google's collection of usage statistics for Chrome DevTools MCP is
independent from the Chrome browser's usage statistics. Opting out of
Chrome metrics does not automatically opt you out of this tool, and
vice-versa.

The code determining statistics that are collected is in here
https://github.com/ChromeDevTools/chrome-devtools-mcp/tree/main/src/telemetry.
2026-01-28 10:18:10 +00:00
Alex Rudenko d47dc5aee7 chore: add telemetry logging (#850)
Adds logging for debugging
2026-01-28 06:41:41 +00:00
Ergün Erdoğmuş 210bacdb04 chore: Implement ClearcutSender HTTP transport for telemetry disabled by default (#805)
This PR completes the telemetry system by implementing the transport
layer for `ClearcutSender`. It enables actual HTTP communication with
the Clearcut backend, handling event batching, rate limiting, and
reliable delivery, including robust shutdown handling.

**Key Changes:**
* **HTTP Transport**: Implemented `fetch`-based transport sending `POST`
requests to the Clearcut HTTP server.
* **Event Batching**: Events are now buffered and flushed periodically
(default: 15 minutes) or on shutdown.
*   **Reliability & Rate Limiting**:
* **Server-Side Backoff**: Respects `next_request_wait_millis` from
server responses to handle rate limiting dynamically.
* **Transient Error Retries**: Failed requests (5xx, 429) result in
events being requeued for the next flush.
* **Request Timeouts**: Enforced 30s timeout on requests to prevent
hanging processes.
* **Session Rotation**: Automatically rotates session IDs every 24
hours.
*   **Safety & Stability**:
* **Buffer Overflow Protection**: Caps the buffer at 1000 events to
prevent memory leaks, dropping oldest events if necessary.
* **Optimistic Removal**: Prevents race conditions and duplicate events
during shutdown by optimistically removing events from the buffer before
sending.
*   **Testing Improvements**:
* **E2E Robustness**: Updated E2E tests to use a mock web server instead
of relying on the logger to log specific lines.

**Implementation Roadmap:**
These changes finalize the planned telemetry architecture:
1. **CLI & Opt-out Mechanism
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/757))**
2. **Logger Scaffolding & Integration
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/758))**
3. **Persistence Layer
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/766))**
4. **Watchdog Process Architecture
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/769))**
5.  **Transport, Batching & Retries (This PR):**
* Finalized `ClearcutSender` with HTTP transport, batching, and
server-directed backoff strategies.

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-01-27 14:18:33 +00:00
browser-automation-bot def02bd373 chore(main): release chrome-devtools-mcp 0.14.0 (#782)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop*
---


##
[0.14.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.13.0...chrome-devtools-mcp-v0.14.0)
(2026-01-27)


### 🎉 Features

* add a skill for using chrome-devtools-mcp
([#830](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/830))
([aa0a367](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/aa0a3679f59ab441908d31252afee1cd56102da8))
* add background parameter to new_page tool
([#837](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/837))
([d756888](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/d7568881ba4aa0e2c10dc6148fd0ef941fee10d5))
* allow skipping snapshot generation for input tools
([#821](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/821))
([4b8e9f2](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/4b8e9f287572e0a95c30b5ca612acf08bf79595b))
* include stack trace in 'get_console_message' tool
([#740](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/740))
([a3a0021](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a3a00210a30f78045244bc897ee736bdbdc36007))
* support device viewport and user agent emulation
([#798](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/798))
([a816967](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a8169676f920f88965a2574f53affe15c1278b43))
* support filePath for network request and response bodies
([#795](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/795))
([6d0e4ca](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/6d0e4cab28a8498c2783c1c0c6436c655de7b336))


### 🛠️ Fixes

* handle beforeunload dialogs in navigations
([#788](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/788))
([9b21f8b](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/9b21f8b2e972f78f58c6f633851466356330c77d))
* improve error handling for console messages
([#844](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/844))
([dc43ede](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/dc43ede1f20302bd2feb706e63bcf992b4a66a96))
* improve error reporting when retrieving the element
([#845](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/845))
([f7dd003](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/f7dd00340a8ac5af7fbe4922f2a1d27d99d933cc))
* improve performance tool description
([#800](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/800))
([aa9a176](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/aa9a1769568aca2a357f186b2e80b38b2ed76323))
* increase timeouts for long text input
([#787](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/787))
([a83a338](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a83a33835148905b538b39be93f6115774f91696))
* make request and response handling more robust
([#846](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/846))
([695817f](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/695817f6d6da5fcb94934fb1c2be8b006522f53b))
* re-use node ids across snapshots
([#814](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/814))
([a6cd2cd](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a6cd2cd3f2bd823f0e044d7796fd8ff2c100cda3))


### 📄 Documentation

* add a mention of evals into contributing.md
([#773](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/773))
([9a31ac7](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/9a31ac7abab5890d11fec627bbdcbb8051452453))
* document how to add extensions to gemini-cli
([#834](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/834))
([0610d11](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/0610d11aa9add484951b76adef557eed5e2bd275))
* update auto-connect docs
([#779](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/779))
([a106fba](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a106fbadbc1a487ce4c53a9eb783c98e524c0a9e))
* Update README.md to include a link to Android debugging
([#783](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/783))
([6e52e66](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/6e52e66a7a7ebbf1f2e2080a857f72192036eb0c))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2026-01-27 13:15:00 +00:00
Alex Rudenko 695817f6d6 fix: make request and response handling more robust (#846)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/842
2026-01-27 12:35:47 +00:00
Alex Rudenko dc43ede1f2 fix: improve error handling for console messages (#844)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/838
2026-01-27 12:27:10 +00:00
Alex Rudenko f7dd00340a fix: improve error reporting when retrieving the element (#845)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/839
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/840
2026-01-27 12:16:24 +00:00
Natasha Gorshunova 569894d486 chore: Implement reload_extension tool (#847)
Co-authored-by: Natallia Harshunova <nharshunova@chromium.org>
2026-01-27 11:13:03 +00:00
adam jones d7568881ba feat: add background parameter to new_page tool (#837)
## Summary

- Add `background` boolean parameter to the `new_page` tool
- When set to `true`, the new page opens in the background without
bringing it to the front
- Uses Puppeteer's existing `background` option for `browser.newPage()`

Fixes #826

---------

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-01-26 16:06:59 +00:00
Alex Rudenko 849c59071c chore: add structured content for rest of tools (#836)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/689
2026-01-26 14:01:35 +00:00
Natasha Gorshunova 4ad781fee6 chore: implement list_extensions tool for local unpacked extensions (#819)
Co-authored-by: Natallia Harshunova <nharshunova@chromium.org>
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2026-01-26 10:37:13 +00:00