Chrome DevTools MCP chrome_devtools 1.12.0: our test log
Chrome DevTools MCP 1.12.0 exposed 32 tools and opened a page in headless Chrome in 136.6 ms median; our first navigate_page call was rejected for a missing pageId.
Tested by us on 2026-10-25. Local open-weight model, not the vendor's hosted models. A smoke test on a CPU-only box, not a benchmark.
Result at a glance
| Field | Value |
|---|---|
| Result | Passed |
| Version tested | chrome_devtools 1.12.0 |
| Date and time | 2026-10-25, 22:39 CDT (America/Chicago) |
| Task | A small Python client written with the official MCP Python SDK (2.3.0) spawns the server as a child process over stdio, times the initialize handshake (cold start: spawn to initialize result), times one tools/list, then times 10 sequential tools/call requests (the count differs per test; this one used 10) and reports the median and 95th percentile. Numbers are milliseconds on the rig described on the methodology page. |
| Model used | none (no language model involved) |
| Hardware | Linux x86_64 virtual machine (Debian 13), 8 vCPU (Intel Xeon, 1 thread per core), 15 GiB RAM, no GPU |
| First attempt: navigate_page without pageId | cold start 535 ms; tools/list 12.8 ms (32 tools); 10 x navigate_page: median 1.2 ms, p95 1.5 ms [tool returned an error] |
| new_page to a local page | cold start 565 ms; tools/list 14.1 ms (32 tools); 10 x new_page: median 136.6 ms, p95 256.6 ms |
What we found
- 32 tools; new_page took 136.6 ms median (p95 256.6 ms, 10 calls) and cold start was 565 ms.
- Our first attempt used navigate_page with only a URL. The server answered at once with 'Input validation error: Invalid arguments for tool navigate_page: pageId: Invalid input: expected number, received undefined'. The 1.2 ms in that row is the time to fail, not a navigation. We kept the row and then timed new_page instead.
- The install is a single package (15 MB, 1 package) and starts quickly because it uses the system Chrome.
What we ran, step by step
| Step | Wall time | Exit code | Notes |
|---|---|---|---|
| npm install on Node 20.19.2 (cold) | 0.8 s | 0 | Resolved 1.12.0; 15 MB in 1 packages; load 2.91. |
| npm install on Node 24.22.1 (cold) | 0.5 s | 0 | Resolved 1.12.0; 15 MB in 1 packages; load 2.40. |
| Latency run: First attempt: navigate_page without pageId | n/a | 0 | chrome_devtools 1.12.0 (protocol 2025-11-25). cold start 535 ms; tools/list 12.8 ms (32 tools); 10 x navigate_page: median 1.2 ms, p95 1.5 ms [tool returned an error]. Load 1.71. |
| Latency run: new_page to a local page | n/a | 0 | chrome_devtools 1.12.0 (protocol 2025-11-25). cold start 565 ms; tools/list 14.1 ms (32 tools); 10 x new_page: median 136.6 ms, p95 256.6 ms. Load 1.65. |
# npm install on Node 20.19.2 (cold)
npm install --no-audit --no-fund --cache /tmp/npmcache chrome-devtools-mcp
# npm install on Node 24.22.1 (cold)
npm install --no-audit --no-fund --cache /tmp/npmcache chrome-devtools-mcp
# Latency run: First attempt: navigate_page without pageId
node work/npm/chrome-devtools-mcp/node_modules/.bin/chrome-devtools-mcp --headless --isolated --executablePath /usr/bin/google-chrome --chromeArg=--no-sandbox --usageStatistics=false --performanceCrux=false
# Latency run: new_page to a local page
node work/npm/chrome-devtools-mcp/node_modules/.bin/chrome-devtools-mcp --headless --isolated --executablePath /usr/bin/google-chrome --chromeArg=--no-sandbox --usageStatistics=false --performanceCrux=falseRaw output (excerpts)
navigate_page({"type": "url", "url": "http://127.0.0.1:8099/test.html"})
Input validation error: Invalid arguments for tool navigate_page: pageId: Invalid input: expected number, received undefinedGotchas and things that broke
- Tools that act on a page need a pageId from list_pages or new_page; a model that skips that step gets a validation error.
- We set --usageStatistics=false and --performanceCrux=false to avoid sending usage data or Chrome UX Report queries during the test; the defaults were not measured.
What we did not test
- Remote (HTTP) transport, authentication and concurrent clients: only local stdio with one client was measured.
- Large payloads: calls used tiny inputs, so these latencies are protocol and process overhead, not throughput.
- Anything about answer quality: no model was involved in the latency numbers.
- These are single smoke-test runs; it is not a benchmark. The machine was shared with other jobs.
- Performance traces, network and console inspection, emulation: only page creation was timed.
Reproduce it
Versions change. These commands install whatever is latest on the day you run them unless a version is pinned, so expect different results later. The version we measured is in the table above.
npm install chrome-devtools-mcp
node node_modules/.bin/chrome-devtools-mcp --headless --isolated --executablePath /usr/bin/google-chrome --chromeArg=--no-sandbox --usageStatistics=false --performanceCrux=falseHow to read this test
Every number on this page was measured on this one machine, which also ran other jobs, so timings are indicative and vary run to run. A pass means our small task worked once or as stated, a fail means it did not work as we ran it; neither says how the tool behaves with a vendor's frontier model, on a GPU, or at scale. Where a tool could not run without an account or a GPU, we say so instead of guessing.
See the testing rig for the hardware, the local model and the rules we follow, and the test hub for every other test.
Related tests: mcp servers and tooling
- Context7 MCP: Context7 MCP 4.4.4 started locally in 462 ms but its tool calls go to a hosted API: resolve-library-id took about 1.2 s per call and returned React documentation matches.
- FastMCP 4.1.3 and the official MCP Python SDK 2.3.0 (server side): The same three-tool server written with FastMCP 4.1.3 and with the official MCP Python SDK 2.3.0 answered calls equally fast (about 1 ms); FastMCP started in 643 to 735 ms against 461 to 516 ms for the SDK on repeats.
- GitHub MCP Server: GitHub MCP Server 2.0.3 started over stdio in a median 266 ms and listed 46 tools in a median 15 ms; we did not make any authenticated call.
- MCP Everything (reference) server: MCP Everything (reference) server answered over stdio in 356 ms cold (v1.0.0, Node 20) and 252 ms (v2.0.1, Node 24); median call 0.5 to 0.4 ms.
- MCP Fetch server: The MCP Fetch server 2026.10.24 refused to fetch a local test page by default (a deliberate loopback block); with --allow-private-ips it fetched it in 698.3 ms median.
- MCP Filesystem server: MCP Filesystem server answered over stdio in 279 ms cold (v1.0.0, Node 20) and 187 ms (v2.0.1, Node 24); median call 0.8 to 1.0 ms.
Sources
- Chrome DevTools MCP repository (fetched 2026-10-25)
Related
Markdown version for agents: /tests/chrome-devtools-mcp.md