mrkeyoor.com_
Thu 17 Sept 02:09 UTC
AI Toolsevaluationupdated 26 Aug 2026

playwright-mcp review

Playwright MCP is a Model Context Protocol server that lets an AI agent browse and operate websites through Playwright. It sends structured accessibility snapshots to the model, giving the agent named elements and stable references for navigation, forms, screenshots, storage, network work, and test assertions.

+159stars / 7d
Verdict

Our Playwright MCP build took 6 seconds, but its tests stopped in another 6 seconds because the process used Node 18.20.8 and Playwright required Node 20 or newer. Use it when an MCP agent needs persistent, inspectable browser state and you accept the token and credential costs. Coding agents with routine browser tasks should follow Microsoft's own advice and start with Playwright CLI plus skills.

We ran it

Lab card: what happened when we ran playwright-mcpScreenshot of playwright-mcp (www.npmjs.com/package/@playwright/mcp)
Install✓ · 7s112 packages · 48 MB
Build✓ · 6s
Tests✗ · 6sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo35 files~1,360 lines of source · 0.2 MB · 2 CI workflows · Dockerfile · tests dir

Answers from our run

Does playwright-mcp build from source?

Dependencies installed in 7 seconds (112 packages), and the build succeeded in 6 seconds. We cloned commit 16cf228 into a clean Debian container with 3 CPUs and no project-specific setup.

Do playwright-mcp's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does playwright-mcp have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use playwright-mcp?

Coding-agent users optimizing context cost: the project's own README recommends Playwright CLI with skills because MCP tool schemas and accessibility trees consume more tokens.

What are the alternatives to playwright-mcp?

Playwright CLI, browser-use, Puppeteer. Our Playwright MCP build took 6 seconds, but its tests stopped in another 6 seconds because the process used Node 18.

Setup4/5One npx command, with browser and profile choices to secure
Docs4/5Extensive client and tool docs; Node requirement conflicts with tests
Community4/5Current release and active work shared with Playwright
Maturity3/5Useful server, but still on 0.0 releases and shifting boundaries

Discussed on

  1. hnShow HN: Playwright Skill for Claude Code – Less context than playwright-MCP189 points
  2. hnPlaywright Tools for MCP181 points
  3. hnPlaywright MCP Server – Snapshot based – faster and more reliable than images6 points
  4. hnPlaywright MCP3 points

Who it’s for

MCP client users who need an agent to inspect and operate web pages over several turns.
Teams building exploratory browser agents that benefit from a persistent profile and structured page state.
Developers who want browser actions exposed to VS Code, Claude Desktop, Cursor, Codex, or another MCP client.
Test engineers who need Playwright-backed assertions, traces, storage controls, or network inspection inside an agent loop.

Who it’s NOT for

Coding-agent users optimizing context cost: the project's own README recommends Playwright CLI with skills because MCP tool schemas and accessibility trees consume more tokens.
Anyone treating origin allowlists as containment: the documentation says allowed and blocked origins are convenience controls, do not cover redirects, and are not a security boundary.
Operators who cannot isolate browser credentials: the default profile persists login state, and connecting through the extension exposes an existing Chrome or Edge session.
Multi-user services sharing one profile: the README says a persistent profile can be used by only one browser instance at a time.
Teams expecting the Docker path to cover every browser: the documented container supports headless Chromium only.

Setup reality

Our sandbox installed 112 npm packages in 7 seconds and used 48 MB, then built in 6 seconds. Tests failed in 6 seconds before running: the log reported Node.js 18.20.8 and said Playwright requires Node.js 20 or higher. The named lab image was Node 22, but we do not know why the test process saw Node 18. The npm audit found 0 known vulnerabilities.

A client can start the published server through npx, then choose a persistent profile, an isolated session, or an existing Chrome or Edge browser through the extension. Logged-in state and secret files need protection. Remote HTTP deployment adds authentication and network exposure, while allowlists are explicitly not security controls. The README says Node 18 or newer, which conflicts with the Node 20 minimum observed by our test command.

Accessibility snapshots give agents named controls

Playwright MCP turns a page into structured text with roles, names, and element references. An agent can see a button by its accessible name, click its reference, fill a textbox, inspect a console message, or save a screenshot. This usually gives language models clearer targets than guessing coordinates from pixels. The server is still Playwright underneath, so browser contexts, navigation, storage, network events, traces, and assertions follow a well-known automation engine.

The approach works best on accessible websites. A canvas application, visual editor, map, game, or poorly labeled control may not expose enough structure. Coordinate actions are available through an opt-in vision capability, but enabling them changes the text-first advantage. Test actual pages before deciding that an accessibility tree can carry the workflow.

Microsoft now prefers the CLI for coding agents

The README makes an unusually direct product distinction. MCP suits loops that need persistent browser state, detailed introspection, and repeated reasoning over page structure. Playwright CLI with skills is recommended for coding agents because commands avoid loading large tool schemas and verbose accessibility trees into the model's context. That advice comes from the project itself and should shape the first trial.

A coding agent that opens a site, checks one flow, and takes 2 screenshots may get more done with the CLI. An agent that explores an unfamiliar application over many turns, reuses login state, observes requests, and changes tactics may benefit from MCP's persistent tool interface. Protocol support alone is not a reason to choose the server. Estimate how much page state the model must repeatedly read and how long the browser needs to stay alive.

What happened when we ran it

Our sandbox installed 112 packages in 7 seconds, occupying 48 MB, and built the 35-file repository in 6 seconds. The checkout contained about 1,360 lines of source. The npm audit found 0 known vulnerabilities across critical, high, moderate, and low severities. The repository also had 2 CI workflow files, a Dockerfile, and a tests directory.

Tests stopped after 6 seconds without executing the suite. The output said the process was running Node.js 18.20.8 and that Playwright requires Node.js 20 or higher. Our harness named its image lab-node:22, which makes the observed runtime surprising, but the log does not explain the mismatch. We report both facts and do not blame the package, image, shell, or test runner without evidence.

There is also a documentation conflict worth fixing: the current README states Node.js 18 or newer, while the test command rejected Node 18.20.8. A new user following the written minimum can therefore hit the same immediate stop. Until those two sources agree, use Node 20 or newer and verify the version in the exact process that launches the server.

Profiles decide where browser credentials live

The default mode uses a persistent profile, retaining cookies and logged-in state between sessions. Isolated mode keeps the profile in memory and drops state when the browser closes; it can preload a storage-state file. The extension connects to an existing Chrome or Edge browser and can reuse open tabs and login state. Each option answers a different convenience and trust question.

A persistent profile can serve only 1 browser instance at a time, according to the README. Parallel clients need isolated mode or separate user-data directories. Storage-state files, dotenv secret files, and persistent profiles are credentials even when they look like test artifacts. Keep them outside repositories, narrow file permissions, and give each user or job its own browser boundary. Connecting an agent to a personal browser profile exposes far more than a test account.

Origin flags do not contain a hostile page

Configuration includes allowed hosts, allowed origins, blocked origins, workspace-root file restrictions, service-worker blocking, proxy settings, and secret files. Those controls help prevent accidental access. The README explicitly says origin lists are not a security boundary and do not affect redirects. The standalone server section repeats that Playwright MCP itself is not a security boundary.

That warning matters because a browser agent consumes untrusted page text and can act with stored credentials. A page can try to redirect the browser, instruct the model, or induce a sensitive action. Client-level tool permissions, network isolation, separate accounts, human confirmation for consequential steps, and short-lived credentials must do the security work. Remote HTTP mode needs authentication and a restricted audience; exposing it as a general browser service is a poor default.

The tool surface is broad and mostly optional

Core actions cover navigation, tabs, clicks, typing, forms, uploads, dialogs, snapshots, screenshots, console messages, and network requests. Optional capabilities add PDF generation, coordinate input, DevTools, network controls, storage operations, configuration changes, and test assertions. A Chrome extension can attach to a running browser. The Docker recipe offers a contained start, though its documented browser support is headless Chromium only.

Do not enable every capability because it exists. File upload, PDF output, storage export, network mocking, and DevTools each widen what the agent can read or alter. Start with the smallest tool set that completes a known workflow. Add one capability when a test demonstrates the need, then log its use. This also reduces schema weight, which is central to the project's own case for choosing CLI over MCP in many coding tasks.

Current maintenance is active but the package is young

Version 0.0.79 was released on 2026-08-06, and the repository was pushed on 2026-08-21. GitHub listed 6 open issues and pull requests combined. Recent activity included dependency updates, a tracing archive report after page crashes, documentation about a client guard, and a standing direction to file shared Playwright problems in the main repository.

The Apache 2.0 license, compact source, official Microsoft ownership, and Playwright foundation are reassuring. The 0.0 version line and fast-moving division between MCP and CLI still call for version pinning. Playwright MCP is a good fit for persistent exploratory browser agents. For ordinary coding-agent checks, Microsoft's CLI recommendation is more convincing, cheaper in model context, and easier to contain.

Alternatives

ProjectWhat it isPick it when
Playwright CLIA browser command line shaped for coding agents and installable skills.pick this instead when agent context is scarce and concise commands are more useful than persistent MCP tools.
browser-use gh↗A Python framework for agents that reason over and act in web browsers.pick this instead when you want to build the entire browser-agent loop in Python rather than expose Playwright through MCP.
Puppeteer gh↗A direct JavaScript browser automation library for Chrome and Firefox.pick this instead when deterministic application code should own browser actions without an MCP or model layer.

Sources

  1. Playwright MCP README
  2. Playwright MCP repository
  3. Playwright MCP v0.0.79
  4. Tracing archive issue
  5. Playwright CLI

More ai tools reviews

eve · MemOS · LongCat-Video · Concat · DLSS5-Feeder · Concat · the whole board →