Playwright
Multi-browser automation via Playwright — Chrome, Firefox, WebKit; richer than Puppeteer.
37,595 stars 3,196 forks Last commit 2d ago Language TypeScript License MIT
Install
npm install -g @playwright/mcp Maintain this server? Add the badge
Show your README readers it's in a curated directory — and give them a one-click path to install docs and config.
Markdown
[](https://prismix.dev/mcp/playwright) Theme-aware version (auto dark/light on GitHub) →
<a href="https://prismix.dev/mcp/playwright"><picture><source media="(prefers-color-scheme: dark)" srcset="https://prismix.dev/api/badge/mcp/playwright.svg?theme=dark"><img alt="Listed on Prismix" src="https://prismix.dev/api/badge/mcp/playwright.svg"></picture></a> Claude Desktop / Cursor config
Drop into your claude_desktop_config.json or Cursor MCP settings. Replace the ${…} placeholders with your own values.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}
} About
Microsoft's official Playwright-based MCP server. Same shape as the Puppeteer reference server but with multi-browser support (Chrome, Firefox, WebKit), proper iframe + popup handling, and built-in trace recording for debugging.
Recent releases (5)
All releases →- v0.0.82 Latest Sep 18, 2026
## ✨ Highlights - **🎬 Smooth 60 fps, styleable videos** — `browser_start_video` (opt-in via `--caps=devtools`) takes `fps`, so `fps: 60` records smooth 60 fps videos instead of the default 25, and `cursor: true` renders an animated mouse cursor that travels to each action point and stays visible between actions. `browser_video_show_actions` takes a `style` with `point`, `highlight` and `title` CSS declarations; the action point marker and the target highlight are now only shown when styled. ([microsoft/playwright#42752](https://github.com/microsoft/playwright/pull/42752), [microsoft/playwright#42758](https://github.com/microsoft/playwright/pull/42758)) - **🧰 WebMCP tools become real MCP tools** — the tools a page registers through the [WebMCP](https://webmachinelearning.github.io/webmcp/) API now show up right in the tool list as `webmcp_<tool>`, with the page's own input schema and annotations, so an agent can call them directly and let the page do the work instead of driving its UI. The list follows the current tab, and clients get a `tools/list_changed` notification when it changes. This replaces `browser_webmcp_list` / `browser_webmcp_call` from v0.0.81, which are no longer exposed over MCP. Tool names, descriptions, schemas and results come from the page, so treat them as untrusted input. Pass `--no-webmcp` (config `webmcp: false`, env `PLAYWRIGHT_MCP_WEBMCP=false`) to opt out. WebMCP is experimental, see [WebMCP in Chrome](https://developer.chrome.com/docs/ai/webmcp) for how to enable it. ([microsoft/playwright#42671](https://github.com/microsoft/playwright/pull/42671)) - **🌗 Switch between light and dark color scheme** ([microsoft/playwright#42243](https://github.com/microsoft/playwright/issues/42243)) — an agent working on a dark theme had no way to see it mid-session. The new **`browser_emulate_media`** tool emulates media features on the fly: `colorScheme`, `reducedMotion`, `forcedColors`, `contrast` and the `media` type (screen / print). Omitted parameters are left unchanged, `null` clears an override. ([microsoft/playwright#42668](https://github.com/microsoft/playwright/pull/42668)) - **📁 Absolute paths in results** ([microsoft/playwright#42497](https://github.com/microsoft/playwright/issues/42497)) — links to snapshots, screenshots, console logs and downloads are relative to the workspace root, which a client without one cannot resolve. Pass `--file-paths=absolute` (config `filePaths: "absolute"`, env `PLAYWRIGHT_MCP_FILE_PATHS=absolute`) to get absolute paths instead. ([microsoft/playwright#42673](https://github.com/microsoft/playwright/pull/42673)) ## 🐛 Fixes - `fix(mcp): keep upload modal and reject bad headers` — a failed `browser_file_upload` (e.g. a missing file) reports the error and keeps the file chooser open so it can be retried, and `browser_route` (opt-in via `--caps=network`) returns an error for a header that is not in the `Name: Value` form instead of setting a header named `""`. ([microsoft/playwright#42713](https://github.com/microsoft/playwright/pull/42713)) - `fix(chromium): bypass service workers on the storage state page` — `browser_storage_state` (opt-in via `--caps=storage`) no longer runs the site's own scripts, or fails when they redirect, for origins with an active service worker ([microsoft/playwright#42656](https://github.com/microsoft/playwright/issues/42656)). ([microsoft/playwright#42664](https://github.com/microsoft/playwright/pull/42664), [microsoft/playwright#42741](https://github.com/microsoft/playwright/pull/42741)) ## 📦 Upgrading Configs that use `@playwright/mcp@latest` pick this release up on the next client restart. To pin it: ```bash npx @playwright/[email protected] ```
View on GitHub ↗ - v0.0.81 Sep 14, 2026
## What's New ### 🎉 New Tools - **`browser_webmcp_list` / `browser_webmcp_call`** — List and call the tools a page registers through the [WebMCP](https://webmachinelearning.github.io/webmcp/) API, letting the page do the work instead of driving its UI. When a page has WebMCP tools, the page status reports how many are available ([#42613](https://github.com/microsoft/playwright/pull/42613)). WebMCP is experimental, see [WebMCP in Chrome](https://developer.chrome.com/docs/ai/webmcp) for how to enable it. ### Other Changes - New `--profile-dir-name <name>` option (env `PLAYWRIGHT_MCP_PROFILE_DIR_NAME`) selects the Chrome profile to connect to in extension mode when the extension is installed in several profiles, for example `"Profile 1"` ([#42527](https://github.com/microsoft/playwright/pull/42527)) - Headless browsers launched by the server are now closed after one hour without tool calls; the next tool call launches a new one. Use `--idle-timeout <ms>` (config `timeouts.idle`, env `PLAYWRIGHT_MCP_IDLE_TIMEOUT`) to change the timeout, `0` disables it. Headed and attached browsers are not closed unless a timeout is set explicitly ([#42663](https://github.com/microsoft/playwright/pull/42663), [#42676](https://github.com/microsoft/playwright/pull/42676)) - `--image-responses` accepts `only`: a response that carries an image consists of the image parts alone, without the text part ([#42672](https://github.com/microsoft/playwright/pull/42672)) ## Bug Fixes - `browser_close` returns an error when the browser context is shared (`--shared-browser-context`) instead of breaking the calling client's session. This supersedes the v0.0.80 change that dropped the backend after `browser_close` ([#42495](https://github.com/microsoft/playwright/pull/42495)) - With `--shared-browser-context`, `browser_start_recording` / `browser_stop_recording` (opt-in via `--caps=devtools`) keep each client's recording separate instead of delivering one client's recorded actions to another ([#42622](https://github.com/microsoft/playwright/pull/42622), [#42627](https://github.com/microsoft/playwright/pull/42627)) - The file access check follows symlinks, so a symlink inside the workspace can no longer be used to read or write files outside the allowed roots ([#42628](https://github.com/microsoft/playwright/pull/42628)) - Explicitly named output files in a nested directory (e.g. `sub/shot.png`) no longer fail with `ENOENT`; `browser_file_upload` and `browser_drop` resolve relative paths against the workspace root ([#42540](https://github.com/microsoft/playwright/pull/42540)) - In extension mode with `PLAYWRIGHT_MCP_EXTENSION_TOKEN` set, a connection that never completes (e.g. the token belongs to another Chrome profile) now fails after 30 seconds with a hint instead of hanging the tool call forever ([#42525](https://github.com/microsoft/playwright/pull/42525)) - Disable the Chromium sandbox by default on Linux for the bundled Chromium build, which lacks the setuid sandbox helper ([#42490](https://github.com/microsoft/playwright/pull/42490))
View on GitHub ↗ - v0.0.80 Sep 1, 2026
## What's New ### New Tools - **`browser_start_recording` / `browser_stop_recording`** (opt-in via `--caps=devtools`) — Record actions that the user performs manually in the browser and return them as Playwright code. Useful when the user wants to demonstrate a flow instead of describing it ([#42359](https://github.com/microsoft/playwright/pull/42359)) ## Bug Fixes - The default `--codegen` language is inferred from the environment ([#42150](https://github.com/microsoft/playwright/pull/42150)) - Honor `--user-data-dir` in extension mode ([#42190](https://github.com/microsoft/playwright/pull/42190)) - Do not treat orphaned browser preferences entries as an installed extension ([#42224](https://github.com/microsoft/playwright/pull/42224)) - `browser_take_screenshot` returns the original screenshot bytes instead of silently downscaling them to model-specific limits ([#42406](https://github.com/microsoft/playwright/pull/42406)) - Drop the cached browser backend after `browser_close` with a shared browser context, so subsequent tool calls from the same client no longer fail ([#42365](https://github.com/microsoft/playwright/pull/42365)) - When connected to a remote endpoint, `browserInfo` reports the browser actually running remotely instead of the configured one ([#42228](https://github.com/microsoft/playwright/pull/42228)) - Do not clobber the `chromiumSandbox` setting from the config file ([#42288](https://github.com/microsoft/playwright/pull/42288)) - Do not run the heartbeat for HTTP clients that have not opened an event stream ([#42189](https://github.com/microsoft/playwright/pull/42189)) - The internal `/killkillkill` endpoint is no longer registered outside of tests ([#42133](https://github.com/microsoft/playwright/pull/42133))
View on GitHub ↗ - v0.0.79 Aug 6, 2026
## What's New ### Tool Improvements - **`browser_take_screenshot` — WebP format** — New `type` option to pick the image format (`png`, `jpeg` or `webp`); when unset, the format is inferred from the filename extension ([#41152](https://github.com/microsoft/playwright/pull/41152)) - **`--codegen` — more languages** — Code generation now supports `python`, `java` and `csharp` in addition to `typescript` ([#42106](https://github.com/microsoft/playwright/pull/42106)) - **Configurable settle delay** — New `--timeout-settle` flag (and `timeouts.settle` config option) to control how long to wait after each action for triggered work (navigations, requests) to settle, defaults to 500ms ([#41924](https://github.com/microsoft/playwright/pull/41924)) ## Fixes - Aria snapshot capture is skipped when the response discards it ([#41923](https://github.com/microsoft/playwright/pull/41923)) - New `--snapshot-boxes` flag (and `snapshot.boxes` config option) to enable bounding boxes in snapshots globally — previously this was only available per command ([#42102](https://github.com/microsoft/playwright/pull/42102)) - Reconnect to the browser after a disconnect ([#41966](https://github.com/microsoft/playwright/pull/41966)) - Report malformed JSON config instead of silently falling back to INI parsing ([#41909](https://github.com/microsoft/playwright/pull/41909)) - Clear the dialog modal state when a dialog is closed out of band ([#42032](https://github.com/microsoft/playwright/pull/42032)) - Detect downloads via the download event instead of guessing from `net::ERR_ABORTED` navigation errors ([#41933](https://github.com/microsoft/playwright/pull/41933)) - Surface the missing executable path when a browser isn't installed ([#41941](https://github.com/microsoft/playwright/pull/41941)) - Escape user input in codegen output ([#41962](https://github.com/microsoft/playwright/pull/41962)) - Removed the stale `--output-mode` CLI option ([#41833](https://github.com/microsoft/playwright/pull/41833)) ### Browser Extension - Validate `Host` and `Origin` headers on CDP relay WebSocket upgrades ([#42103](https://github.com/microsoft/playwright/pull/42103)) - Launch the Chrome profile that has the extension installed ([#41939](https://github.com/microsoft/playwright/pull/41939)) - Pass `noDefaults` for extension CDP connections ([#42119](https://github.com/microsoft/playwright/pull/42119)) - Mention `PLAYWRIGHT_MCP_EXECUTABLE_PATH` in the error shown when the browser executable is not found ([#42122](https://github.com/microsoft/playwright/pull/42122)) - Removed support for extension protocol v1 ([#41857](https://github.com/microsoft/playwright/pull/41857))
View on GitHub ↗ - v0.0.78 Jul 9, 2026
## What's New ### New Tools - **`browser_find`** — Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref ([#41605](https://github.com/microsoft/playwright/pull/41605), [#41654](https://github.com/microsoft/playwright/pull/41654)) ### Tool Improvements - **Less verbose snapshots** — Accessibility snapshots are distilled to reduce noise and token usage ([#41604](https://github.com/microsoft/playwright/pull/41604)) - **Mobile & device emulation** — New `--mobile` flag and `--device` option to emulate mobile devices from the CLI ([#41657](https://github.com/microsoft/playwright/pull/41657)) - **Navigation status** — `browser_navigate` now surfaces non-2xx navigation status codes ([#41589](https://github.com/microsoft/playwright/pull/41589)) ## Bug Fixes - `browser_navigate` no longer crashes the response when navigation closes the last tab (e.g. privileged pages like `chrome://`) ([#41675](https://github.com/microsoft/playwright/pull/41675)) - Await page initialization before taking a screenshot immediately after opening ([#41646](https://github.com/microsoft/playwright/pull/41646)) - Enable the chromium sandbox for the default browser ([#41652](https://github.com/microsoft/playwright/pull/41652)) - Preserve the configured output directory for additional tab videos ([#41680](https://github.com/microsoft/playwright/pull/41680)) - Always pass `noDefaults` for CDP connections so attaching no longer applies unwanted default context options ([#41676](https://github.com/microsoft/playwright/pull/41676)) - Close the isolated HTTP client context on disconnect ([#41560](https://github.com/microsoft/playwright/pull/41560)) - Wait for the client event stream before sending server→client requests ([#41559](https://github.com/microsoft/playwright/pull/41559))
View on GitHub ↗
Discussion (0)
Sign in to comment →No comments yet. Sign in to start the discussion.