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
| Field | Value |
|---|---|
| Result | Passed |
| Version tested | Playwright 1.64.0-alpha-1790635538000 |
| 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 |
| Playwright MCP 0.0.83: browser_navigate to a local page | cold 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
| Step | Wall time | Exit code | Notes |
|---|---|---|---|
| npm install on Node 20.19.2 (cold) | 1.3 s | 0 | Resolved 0.0.83; 19 MB in 3 packages; load 3.16. |
| npm install on Node 24.22.1 (cold) | 1 s | 0 | Resolved 0.0.83; 19 MB in 3 packages; load 2.17. |
| Latency run: Playwright MCP 0.0.83: browser_navigate to a local page | n/a | 0 | Playwright 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. |
# 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-sandboxRaw output (excerpts)
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-sandboxHow 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
- 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.
Sources
- Playwright MCP repository (fetched 2026-10-25)
Related
Markdown version for agents: /tests/playwright-mcp.md