This page is what happened when we ran it. The project itself — code, maintenance, community — has its own review: full repo review →
Playwright MCP
Playwright MCP is Microsoft's browser-automation server for the Model Context Protocol. It gives a model a real Chromium session and 24 tools for driving it: navigate, click, type, fill forms, upload files, read console messages and network requests, take screenshots, and run arbitrary page code. It talks to the browser through Playwright's accessibility snapshot rather than pixels.
How we started it
npx -y @playwright/mcpUse it, and expect to pay for it in context. When we booted it the server came up on its own, no keys, no config file, and every tool did what its name says. The cost is 24 tool definitions sitting in the prompt for the whole session, plus a browser binary download the first time and a real Chromium process for as long as the session lives. If the model only needs page text, a fetch server does that for a fraction of the tax; Playwright earns its weight when the page needs to be clicked.
Use it if
Skip it if
The bill for your context window
| Tool | Est. tokens | Described? | Required params |
|---|---|---|---|
| browser_take_screenshot | ~398 | yes (123 chars) | 1 |
| browser_fill_form | ~289 | yes (25 chars) | 1 |
| browser_drop | ~272 | yes (135 chars) | 1 |
| browser_find | ~262 | yes (340 chars) | 0 |
| browser_click | ~238 | yes (27 chars) | 1 |
| browser_type | ~235 | yes (31 chars) | 2 |
| browser_network_request | ~233 | yes (149 chars) | 1 |
| browser_drag | ~229 | yes (42 chars) | 2 |
The tools/list payload is 18502 bytes, about 4626 tokens by the chars/4 estimate, measured 2026-08-19. That is a lot of standing furniture, but it is spread thin rather than concentrated: the heaviest tool, browser_take_screenshot, is roughly 398 tokens, and the lightest, browser_close, about 74. The weight is in schemas, not prose, since several descriptions are almost nothing (browser_click carries 27 characters of description). Nothing here is obviously deletable if you want a working browser, but a read-only agent can safely drop the mutation half of the list and keep snapshot, find and console.
Setup reality
There is nothing to configure. We started it with npx and @playwright/mcp under a clean environment, no secrets, and the harness scraped zero env-var hints out of stderr because it never complained. Init took 5383 ms, which is slower than most servers in this directory and is mostly npx resolving the package. The browser itself is a separate concern: Playwright downloads its Chromium build on first use, so the first real navigation on a fresh machine is slower than the boot number suggests, and on a bare Linux box you will need the usual system libraries. It reported protocol 2025-06-18 and identified itself as version 1.63.0-alpha-2026-08-05.
Questions people ask
Does Playwright MCP need an API key?
No. We started it with a clean environment containing no secrets and it initialized normally, and the harness found no environment-variable hints in its output. The only external dependency is the browser binary Playwright installs for itself.
How much context does Playwright MCP use?
Its tool list is 18502 bytes, roughly 4626 tokens on a chars/4 estimate, measured 2026-08-19 with 24 tools registered. That is charged on every request of the session, not per browser action.
Can I reduce the number of tools it exposes?
The README documents capability flags for trimming the tool set, and most MCP clients also let you disable individual tools. Turning off the drag, drop, file-upload and code-execution tools removes a meaningful slice of the payload for agents that only read pages.
Is browser_run_code_unsafe as bad as it sounds?
It runs code the model wrote inside the page context, so it is exactly as trustworthy as the model plus the site it is visiting. Fine on a dev machine against your own app. Not something to expose to an agent browsing arbitrary URLs.
Other browsers servers we started
| Server | Vendor | Boots | Context tax |
|---|---|---|---|
| Browserbase | Browserbase | ✓ | ~393 tokens |
| Puppeteer (archived) | Anthropic (archived) | ✓ | ~612 tokens |
How this page is made: the server is spawned as an unprivileged user with a clean environment and no credentials, then asked for its tools, resources and prompts over stdio. Token figures are estimates at four characters per token, not a tokenizer count. One run, one machine. Corrections: contact the desk.