文件历史

提交图

334 次代码提交

作者 SHA1 备注 提交日期
Nikolay Vitkov f4d7b49bb1 feat: support stable id for network requests (#375)
This is part 1, we just expose the uid here, in a follow up PR we will
be used for finding the request.
2025-10-14 12:45:16 +02:00
Nikolay Vitkov 76d5e9416d refactor: dispose listeners on page destroyed (#318) 2025-10-13 18:38:23 +02:00
browser-automation-bot dced0f0e22 chore(main): release chrome-devtools-mcp 0.8.1 (#371)
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.8.1](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.8.0...chrome-devtools-mcp-v0.8.1)
(2025-10-13)


### Bug Fixes

* add an option value to the snapshot
([#362](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/362))
([207137e](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/207137edd6d8af2f49277d88a30d8afa51671631))
* improve navigate_page_history error messages
([#321](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/321))
([0624029](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/0624029e0f8735345d202d29dde446b8869d9561))
* return the default dialog value correctly
([#366](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/366))
([f08f808](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/f08f8080d0be1074a48e5c2ab0a6533f01f65928))
* update puppeteer to 24.24.1
([#370](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/370))
([477eef4](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/477eef481a2e6241121ee4aaaed34e8342a8b347))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
2025-10-13 14:46:53 +00:00
Alex Rudenko 2082641cc7 refactor: simplify snapshot generation (#369)
the only difference is that checked/pressed are only included if the
element was checked/pressed.

Refs: https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/363
2025-10-13 13:51:49 +00:00
Alex Rudenko 477eef481a fix: update puppeteer to 24.24.1 (#370)
Fixes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/322
via https://github.com/puppeteer/puppeteer/pull/14304
Fixes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/292
via https://github.com/puppeteer/puppeteer/pull/14307 and
https://github.com/puppeteer/puppeteer/pull/14306
2025-10-13 15:46:00 +02:00
Alex Rudenko f08f8080d0 fix: return the default dialog value correctly (#366)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/364 
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/361

---------

Co-authored-by: Nikolay Vitkov <34244704+Lightning00Blade@users.noreply.github.com>
2025-10-13 11:46:18 +00:00
Alina Varkki 207137edd6 fix: add an option value to the snapshot (#362)
Fixes #185 

The standard selector value is not included in the AXNode, so add it
separately.
2025-10-13 13:25:48 +02:00
Mithun Gowda B 0624029e0f fix: improve navigate_page_history error messages (#321) 2025-10-13 09:46:09 +02:00
Alex Rudenko a4b5cb65d1 refactor: sort tools alphabetically (#346) 2025-10-12 14:23:35 +00:00
Nikolay Vitkov b1d239ece1 refactor: use release-please to bump version in files (#349) 2025-10-12 11:14:27 +00:00
Alex Rudenko e1b5363653 feat: support passing args to Chrome (#338)
Drive-by: removes custom devtools frontend as a dedicated argument.

Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/261
2025-10-10 15:05:41 +00:00
Alex Rudenko 2982195ec9 chore: experimental devtools-on-devtools support (#51)
Allows using the MCP server for the devtools development.
2025-10-10 14:17:00 +00:00
Alex Rudenko 9ad7cbb2de fix: document that console and requests are since the last nav (#335)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/240
2025-10-10 13:51:36 +00:00
Jack Franklin 2d4484a123 fix: ordering of information in performance trace summary (#334)
Fixes a bug where the output contained "this is a high level summary"
before then outputting the call frame / network format information
before then outputting the trace summary.

With this commit, we now output the summary & insights before ending
with the format information.
2025-10-10 12:52:16 +00:00
iamitesh 139ce60781 feat: Add offline network emulation support to emulate_network command (#326)
https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/320
Issue:
It would be very useful to have the ability to simulate offline network
conditions directly through the MCP emulate_network command, similar to
how it's possible in DevTools.
Currently, the command doesn’t support an Offline state, which limits
testing for PWA and offline-first web applications. Adding this option
would make it easier to automate and validate offline behavior through
MCP scripts or tools that rely on this API.

Solution
- Add 'Offline' option to throttlingOptions for simulating offline
network conditions
- Update emulate_network tool to handle offline mode with proper network
conditions
- Update documentation to include offline option and usage instructions
- Add test coverage for offline network emulation functionality
- Enable testing of PWA and offline-first web applications through MCP
2025-10-10 09:22:16 +02:00
Nikolay Vitkov a525f19945 fix: use default ProtocolTimeout (#315)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/271
2025-10-08 17:15:43 +02:00
Nicholas Roscino dd3c14336e feat: add request and response body (#267)
This PR adds the request and response bodies into the context if they
are available and in a readable format.

---------

Co-authored-by: Nicholas Roscino <nroscino@chromium.org>
Co-authored-by: Nikolay Vitkov <34244704+Lightning00Blade@users.noreply.github.com>
2025-10-08 11:22:10 +02:00
Alex Rudenko 357db65d18 fix: change default screen size in headless (#299)
Sets the screen size in headless to be 3840x2160px to allow resize tool
to work correctly for most use cases.

Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/294
2025-10-07 13:27:23 +00:00
Alex Rudenko 098a904b36 fix(cli): tolerate empty browser URLs (#298)
it seems some clients default to empty default values for args. We can
accept that and do not error for these.

Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/264
2025-10-07 14:33:59 +02:00
leslie liu 8200194c80 fix: guard performance_stop_trace when tracing inactive (#295)
PR Description

- Fix the stop-trace guard to call context.isRunningPerformanceTrace()
so we skip page.tracing.stop() when nothing is recording, avoiding the
Puppeteer error that bubbled up
    to users.
- Extend the “does nothing” test to stub tracing.stop() and assert it
stays untouched, guaranteeing the guard path is covered.
2025-10-07 12:04:41 +00:00
Nikolay Vitkov 9b4cd8e340 chore: provide better Error message 2025-10-03 16:15:34 +02:00
Nikolay Vitkov 2714158eb3 docs: fix typos (#260)
This also implements the suggestion from
https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/244
but that includes other parts that I am not sure we would want for now.
2025-10-02 16:59:09 +02:00
Mithun Gowda B 574ff4efc2 refactor: remove onRelease functionality from Mutex (#252)
This PR Fixes #249 

The `onRelease` functionality in the `Mutex` class was unused.
This change removes the `onRelease` callback from the `acquire`
method and the `Guard` class, simplifying the implementation.
2025-10-02 15:26:49 +02:00
Nikolay Vitkov 9af943176e refactor: extract the pagination logic (#242) 2025-10-02 10:01:49 +00:00
Nikolay Vitkov 74c6d6d649 refactor: use context agnostic write to file (#250)
Similar to the write to temporary file we should hide the implementation
behind the Context
2025-10-02 09:50:47 +00:00
Nikolay Vitkov 0412878bf5 fix: PageCollector subscribing multiple times (#241)
We were setting the storage inside the first collect callback which mean
that we double subscribed to the events.

This affected Network request and Console messages
2025-10-01 16:33:55 +02:00
Nikolay Vitkov d61e151dd2 chore: miscellaneous fixes (#234) 2025-10-01 16:31:56 +02:00
Nikolay Vitkov 73f0aecd8a fix(network): show only selected request (#236) 2025-10-01 14:12:41 +02:00
Alex Rudenko 36e64d5ae2 feat: support timeouts in wait_for and navigations (#228)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/223
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/116
2025-10-01 10:48:53 +02:00
Alex Rudenko efb106dc94 feat: support --accept-insecure-certs CLI (#231)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/155

Exposes the Puppeteer option only for the instances launched by the MCP
to avoid changing behavior for instances started by other means.
2025-10-01 10:21:05 +02:00
Alex Rudenko dfacc75ee9 feat: support --proxy-server CLI (#230)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/155
2025-10-01 10:15:32 +02:00
Alex Rudenko ef61a08707 feat: support initial viewport in the CLI (#229)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/165

This PR uses page_resize logic to set the initial viewport size. Not
using the emulation because it looks buggy in headful which is our
default mode.
2025-10-01 10:11:35 +02:00
Coquinate 03e02a2d76 feat(screenshot): add WebP format support with quality parameter (#220)
## Summary

This PR adds WebP format support to the screenshot tool, providing
superior compression compared to JPEG while maintaining image quality.

## Problem

Currently, the Chrome DevTools MCP only supports PNG and JPEG formats
for screenshots. This leads to:
- Missing out on WebP's superior compression (25-34% better than JPEG at
equivalent quality)
- Larger file sizes than necessary for AI assistants with image size
limits
- No access to a modern format that offers both better compression and
transparency support
- Bug: `saveTemporaryFile` always saved files with `.png` extension
regardless of the specified format

## Solution

Added WebP as a supported format in the screenshot tool schema and
extended the quality parameter to work with WebP (0-100 range, same as
JPEG). Also fixed the file extension bug in `saveTemporaryFile`.

## Changes

-  Added `webp` to screenshot format enum alongside `png` and `jpeg`
-  Extended quality parameter description to include WebP support
-  Updated `saveTemporaryFile` to properly handle WebP MIME type and
file extension
-  Fixed bug where all screenshots were saved as `.png` regardless of
format
-  Updated type definitions in `ToolDefinition.ts` for WebP support
-  Updated documentation via `npm run docs`

## Testing

Puppeteer 24.22.3 (used by this project) has full WebP support including
quality parameter. Expected compression improvements based on WebP
benchmarks:
- **PNG (baseline):** 128 KB
- **JPEG quality 50:** 84 KB (34% reduction vs PNG)
- **WebP quality 50:** ~60 KB (53% reduction vs PNG, 29% better than
JPEG)
- **WebP quality 75:** ~90 KB (optimal quality/size balance)

All existing tests pass (131/131).

## Impact

This change is **backward compatible** - WebP is an optional format that
doesn't affect existing PNG/JPEG usage. It particularly helps with:
- AI assistants that have image size limits
- Reducing bandwidth when capturing many screenshots  
- Providing transparency support with better compression than PNG
- Offering a modern, universally-supported image format (Chrome,
Firefox, Safari, Edge)

## Example Usage

```javascript
// High quality WebP
await take_screenshot({
  format: 'webp',
  quality: 85,
  fullPage: false
})

// Optimized for size
await take_screenshot({
  format: 'webp',
  quality: 50,  // ~29% smaller than JPEG quality 50
  fullPage: true
})
```

## Checklist

- [x] Code follows conventional commits
- [x] Documentation updated with `npm run docs`
- [x] All tests passing (131/131)
- [x] Backward compatible
- [x] Bug fix included (file extension handling)
- [ ] CLA signed (will complete if needed)

Fixes #[issue-number] (if applicable)

---------

Co-authored-by: aberemia24 <aberemia@gmail.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2025-10-01 10:11:04 +02:00
James Doyle f03072698d feat(screenshot): adds ability to output screenshot to a specific pat… (#172)
…h. Closes #152. Closes #153
2025-09-30 19:56:46 +02:00
Alina Varkki ce356f2565 fix: snapshot does not capture Iframe content (#217)
Closes: #186
2025-09-30 09:38:08 +02:00
Alex Rudenko b31e64713e fix: update package.json engines to reflect node20 support (#210) 2025-09-29 14:34:03 +00:00
Alex Rudenko 205eef5cdf fix: reference to handle_dialog tool (#209) 2025-09-29 14:12:05 +00:00
Coquinate 139cfd135c feat(screenshot): add JPEG quality parameter support (#184)
## Summary

This PR adds support for the `quality` parameter when taking JPEG
screenshots, allowing users to control compression levels and
significantly reduce file sizes.

## Problem

Currently, the Chrome DevTools MCP doesn't expose the `quality`
parameter that Puppeteer natively supports. This leads to:
- Large screenshot file sizes (especially problematic for AI assistants
with image size limits)
- No control over JPEG compression 
- Inability to optimize screenshots for different use cases

## Solution

Added the `quality` parameter (0-100) to the screenshot tool schema and
passed it through to Puppeteer's screenshot method.

## Changes

-  Added `quality` parameter to screenshot schema with proper
validation (0-100 range)
-  Pass quality parameter to Puppeteer's `screenshot()` method
-  Added `optimizeForSpeed` flag for improved encoding performance
-  Updated documentation via `npm run docs`

## Testing

Tested locally with various quality settings:
- **PNG (baseline):** 128 KB
- **JPEG quality 100:** 245 KB
- **JPEG quality 50:** 84 KB (35% reduction)
- **JPEG quality 30:** 66 KB (49% reduction)

## Impact

This change is **backward compatible** - the quality parameter is
optional and doesn't affect existing usage. It particularly helps with:
- AI assistants that have image size limits (e.g., 8000px max dimension
errors)
- Reducing bandwidth when capturing many screenshots
- Optimizing storage for screenshot-heavy workflows

## Example Usage

```javascript
// New capability - control JPEG quality
await take_screenshot({
  format: 'jpeg',
  quality: 50,  // New parameter!
  fullPage: false
})
```

## Checklist

- [x] Code follows conventional commits
- [x] Documentation updated with `npm run docs`
- [x] Tested locally
- [x] Backward compatible
- [ ] CLA signed (will complete if needed)

Fixes #[issue-number] (if applicable)

Co-authored-by: aberemia24 <aberemia@gmail.com>
2025-09-29 14:00:36 +00:00
Alex Rudenko d9f77f8509 fix: do not error if the dialog was already handled (#208)
users report that the MCP client gets stuck if the dialog was closed
manually as the MCP state never updates.
2025-09-29 13:53:25 +00:00
Alex Rudenko 13613b4a33 fix: support node20 (#52)
Initially, we started with the support of Node22+ but since Node20 is an
LTS that is still in the maintenance mode it makes sense to support it.
2025-09-29 13:43:35 +00:00
Alex Rudenko 7765bb381a fix: update tool reference in an error (#205)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/170 
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/169
2025-09-29 13:11:17 +00:00
Oz Tamir 59d81a3325 feat: add network request filtering by resource type (#162)
### Summary
This PR build upon #145 to also adds filtering by resource type to
`list_network_requests` (Also see: #137 and #107).

### Motivation
Agents often need specific request types (e.g., scripts, stylesheets,
images). Filtering reduces noise and improves performance.

### Changes
- **New parameter**: `resourceType` (array) to filter by resource types
- **Supported types**: all resource types supported by Puppeteer
- **Backward compatible**: when omitted, returns all requests

Filtering runs before pagination, so pagination applies to the filtered
results.
2025-09-26 13:17:58 +00:00
Jack Franklin 6cfc9774f4 fix: add core web vitals to performance_start_trace description (#168)
Fixes #124 and #159. People have reported that when asked for CWV
metrics, the AI will use `evaluate_script` to inject some code into the
page to gather them. But, we want to encourage it to record a trace
instead and use those values.

After some testing locally, adding CWV explicitly to the description
makes it much more reliable that the AI will reach for trace recording
when asked about CWVs.
2025-09-26 13:14:27 +00:00
Jack Franklin 869dd4273e fix: add data format information to trace summary (#166)
This CL adds the descriptions of the call frame format and the network
request format to the summary so that as the AI sees these responses it
can fully parse them.
2025-09-26 14:12:00 +01:00
Alex Rudenko 22ec7ee45c fix: expose --debug-file argument (#164) 2025-09-26 09:00:04 +00:00
Jack Franklin 2dbdd2de4f chore: roll latest chrome-devtools-frontend (#163)
This includes a better fix for the circular dependency problem and makes
the changes in the MCP server based on the upstream DevTools
implementation changes.
2025-09-26 09:44:03 +01:00
Nikolay Vitkov 6d9cd17714 chore: unblock uses with Deno and Bun (#151)
I wanna test more NodeJS versions to see that this does not cause other
issues.

Deno test command: 
```sh
npx @modelcontextprotocol/inspector deno --allow-env --allow-read ./build/src/index.js 
```

Bun test command:
```sh
npx @modelcontextprotocol/inspector bun ./build/src/index.js 
```
2025-09-26 08:31:41 +02:00
Alex Rudenko 90f686e5df fix: typo in the disclaimers (#156) 2025-09-25 21:32:11 +02:00
Alex Rudenko 03b59f0bca fix: do not set channel if executablePath is provided (#150)
Fixes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/148
2025-09-25 18:44:31 +02:00
Jack Franklin b2e1e3944c fix: roll latest DevTools to handle Insight errors (#149)
This commit updates DevTools to the latest release. This most
importantly includes a fix for #124 and other reported issues where
Insights that were actually errors were not handled correctly. They are
now formatted correctly on the DevTools side and now will not break
performance traces in the MCP server.
2025-09-25 18:25:35 +02:00