Playwright MCP Playwright 1.64.0-alpha-1790635538000: our test log

Playwright MCP 0.0.83 exposed 25 tools and navigated a headless Chrome to a local page in 40.5 ms median (cold start 383 ms).

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

Playwright MCP test record
FieldValue
ResultPassed
Version testedPlaywright 1.64.0-alpha-1790635538000
Date and time2026-10-25, 22:39 CDT (America/Chicago)
TaskA 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 usednone (no language model involved)
HardwareLinux x86_64 virtual machine (Debian 13), 8 vCPU (Intel Xeon, 1 thread per core), 15 GiB RAM, no GPU
Playwright MCP 0.0.83: browser_navigate to a local pagecold start 383 ms; tools/list 10.1 ms (25 tools); 10 x browser_navigate: median 40.5 ms, p95 51.8 ms

What we found

  • The package installs in about 1 s and 19 MB because it does not bundle a browser; we pointed it at the machine's existing Google Chrome with --browser chrome --executable-path /usr/bin/google-chrome.
  • browser_navigate returned a page-snapshot reference and the page title ('Fixture page') in 40.5 ms median over 10 calls, p95 51.8 ms.
  • 25 tools are advertised, which is a large chunk of a model's context window; that cost was not measured here.

What we ran, step by step

Commands run, wall-clock time and exit code
StepWall timeExit codeNotes
npm install on Node 20.19.2 (cold)1.3 s0Resolved 0.0.83; 19 MB in 3 packages; load 3.16.
npm install on Node 24.22.1 (cold)1 s0Resolved 0.0.83; 19 MB in 3 packages; load 2.17.
Latency run: Playwright MCP 0.0.83: browser_navigate to a local pagen/a0Playwright 1.64.0-alpha-1790635538000 (protocol 2025-11-25). cold start 383 ms; tools/list 10.1 ms (25 tools); 10 x browser_navigate: median 40.5 ms, p95 51.8 ms. Load 1.16.
Exact commands (paths shortened)
# npm install on Node 20.19.2 (cold)
npm install --no-audit --no-fund --cache /tmp/npmcache @playwright/mcp

# npm install on Node 24.22.1 (cold)
npm install --no-audit --no-fund --cache /tmp/npmcache @playwright/mcp

# Latency run: Playwright MCP 0.0.83: browser_navigate to a local page
node work/npm/playwright-mcp/node_modules/.bin/playwright-mcp --headless --isolated --browser chrome --executable-path /usr/bin/google-chrome --no-sandbox

Raw output (excerpts)

Output of the timed call (Playwright MCP 0.0.83: browser_navigate to a local page), first 300 characters
browser_navigate({"url": "http://127.0.0.1:8099/test.html"})
### Ran Playwright code
```js
await page.goto('http://127.0.0.1:8099/test.html');
```
### Page
- Page URL: http://127.0.0.1:8099/test.html
- Page Title: Fixture page
### Snapshot
- [Snapshot](.playwright-mcp/page-2026-10-26T03-39-23-508Z.yml)

Gotchas and things that broke

  • Run as root or in a container, Chrome needs --no-sandbox; we passed it. Do not do that on a machine that browses untrusted pages.
  • The version string reports a Playwright alpha build number.

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.
  • Clicking, typing, screenshots and snapshot-based element selection: only navigation 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 @playwright/mcp
node node_modules/.bin/playwright-mcp --headless --isolated --browser chrome --executable-path /usr/bin/google-chrome --no-sandbox

How 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.

  • Sentry MCP server: Sentry MCP server 0.42.0 (@sentry/mcp-server) started over stdio in a median 1134 ms and listed 9 tools in a median 13 ms; we did not make any authenticated call.
  • Supabase MCP server: Supabase MCP server 0.14.0 (@supabase/mcp-server-supabase) started over stdio in a median 468 ms and listed 19 tools in a median 363 ms; we did not make any authenticated call.
  • Chrome DevTools MCP: 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.
  • 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.

All test logs · How we test

Sources

Markdown version for agents: /tests/playwright-mcp.md