BROWSER AUTOMATION / Microsoft
Playwright MCP
Gives an assistant persistent browser tools for inspecting page structure, interacting with controls and collecting browser evidence.
“A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright.”
01 / THE REASONING
Why this made the selection.
- Structured accessibility snapshots support inspecting page controls without making screenshots the only interaction channel.
- The documented tool inventory exposes both observation and mutation, allowing browser work to be reviewed at the action level.
- The pinned README drives a browser from the accessibility tree instead of screenshots, which is the path it recommends when the agent needs a persistent page.
- It also says the server is not a security boundary, and that unrestricted file access is only a convenience check.
02 / THE REVIEW RECORD
What we actually inspected.
Source review has boundaries.
A clear record is more useful than a “safe” badge.
Material inspected
- README.md setup, configuration and operating-limit sections at b8b4183e099f136cbec0388a6088d4aa2f6b9685
- LICENSE at the same revision
- package.json
- cli.js
- README.md
- LICENSE
- Round 2 reread of acquired publisher setup and permission evidence; see immutable wave review.
Our findings
- The inspected package requires Node.js >=18; the README documents isolated sessions, storage-state input and persistent-profile contention.
- The example combines documented --isolated and --headless options without importing the visitor’s existing browser session.
- The server gives an LLM Playwright actions through structured accessibility snapshots and says vision models are not required.
- Playwright MCP is not a security boundary, and allowUnrestrictedFileAccess is described as a guardrail that a deliberate path escape can bypass.
- The browser network option defaults to allowing all origins, and the Docker setup in this README supports only headless Chromium.
- Allowed-origin request filtering does not cover redirects, and browser automation can retain persistent session state.
Not established by this review
- Server startup, authentication and live tool calls were not tested.
- Published package/container parity with the inspected source commit and security isolation were not tested.
- The server was not started and its tools were not called.
- A pin does not verify transitive dependencies.
The review applies to the material and revision named here. A newer upstream release can change its behavior.
03 / PUT IT TO WORK
Connect a server deliberately.
DOCUMENTED COMMAND
npx @playwright/mcp@latest Copying does not execute this command. It may retrieve a newer version than the reviewed source.
- Add the documented stdio configuration to an MCP client; adapt the configuration wrapper to that client.
- Choose a dedicated browser profile or isolated context and grant only the browser permissions needed for the task.
Before you start
- Node.js meeting the official package engine requirement.
- Browser installation and OS dependencies required by Playwright.
Documented configuration example
Use the client and authentication context described in the setup guidance. Configuration formats vary between hosts.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
} 04 / FOLLOW THE EVIDENCE
The source trail.
Our notes are separate from the original resource.
Check upstream before adopting a new version.
https://github.com/microsoft/playwright-mcp/blob/b8b4183e099f136cbec0388a6088d4aa2f6b9685/README.md
Supports: summary, upstreamDescription, install, configExample, access, limitations, bestFor, review
https://github.com/microsoft/playwright-mcp/blob/b8b4183e099f136cbec0388a6088d4aa2f6b9685/LICENSE
Supports: license
https://github.com/microsoft/playwright-mcp/blob/b8b4183e099f136cbec0388a6088d4aa2f6b9685/package.json
Supports: review, install, language
https://github.com/microsoft/playwright-mcp/blob/b8b4183e099f136cbec0388a6088d4aa2f6b9685/cli.js
Supports: review, install, language