# Playwright MCP (MCP server)

> Playwright MCP is an MCP server that provides browser automation capabilities using Playwright. It has 37,886 GitHub stars, is released under the Apache-2.0 license and runs locally with npx -y @playwright/mcp. It works with Claude Desktop, Claude Code, Cursor and VS Code.

A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright. This server enables LLMs to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually-tuned models.

## Key facts

| Fact | Value |
|---|---|
| Repository | https://github.com/microsoft/playwright-mcp |
| GitHub stars | 37,886 |
| License | Apache-2.0 |
| Language | TypeScript |
| Transport | stdio |
| Packages | npm: @playwright/mcp |
| Remote URL | none |
| Needs API key | no |
| Official | yes |
| Works with | Claude Desktop, Claude Code, Cursor, VS Code |
| Category | Web & browsing |
| Latest release | v0.0.83 (Sep 28, 2026) |
| Last commit | Sep 28, 2026 |
| MCP registry name | io.github.microsoft/playwright-mcp |

## Install

### Claude Desktop (claude_desktop_config.json)

```json
{
  "mcpServers": {
    "playwright-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp"
      ]
    }
  }
}
```

Settings > Developer > Edit Config. macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\. Restart Claude Desktop afterwards.

### Claude Code

```sh
claude mcp add --transport stdio playwright-mcp -- npx -y @playwright/mcp
```

### Cursor (.cursor/mcp.json)

```json
{
  "mcpServers": {
    "playwright-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp"
      ]
    }
  }
}
```

Project file; use ~/.cursor/mcp.json to enable it in every project.

### VS Code (.vscode/mcp.json)

```json
{
  "servers": {
    "playwright-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp"
      ]
    }
  }
}
```

Config formats checked against the official docs on 2026-10-07.

## Tools

- `browser_click`
- `element`: Human-readable element description used to obtain permission to interact with the element
- `target`: Exact target element reference from the page snapshot, or a unique element selector
- `button`: Button to click, defaults to left
- `modifiers`: Modifier keys to press
- `browser_close`
- `browser_console_messages`
- `level`: Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
- `filename`: File name to save the console messages to. Relative file names are resolved against the workspace root.
- `browser_drag`
- `browser_drop`
- `paths`: Absolute paths to files to drop onto the element.
- `data`: Data to drop, as a map of MIME type to string value (e.g. {"text/plain": "hello", "text/uri-list":…
- `browser_emulate_media`
- `contrast`: Emulates the prefers-contrast media feature
- `media`: Changes the CSS media type of the page
- `browser_evaluate`
- `function`: () => { /* code / } or (element) => { / code */ } when element is provided
- `browser_file_upload`
- `browser_fill_form`
- `fields`: Fields to fill in
- `browser_find`
- `text`: Plain text to search for in the page snapshot (case-insensitive substring match).
- `regex`: Regular expression to search for in the page snapshot. Matching is case-sensitive by default; wrap the pattern in…
- `browser_handle_dialog`
- `accept`: Whether to accept the dialog.
- `browser_hover`
- `browser_navigate`
- `browser_navigate_back`
- `browser_network_request`
- `index`: 1-based index of the request, as printed by browsernetworkrequests.
- `part`: Return only this part of the request. Omit to return full details.
- `browser_network_requests`
- `static`: Whether to include successful static resources like images, fonts, scripts, etc. Defaults to false.
- `filter`: Only return requests whose URL matches this regexp (e.g. "/api/.*user").
- `browser_press_key`
- `browser_resize`
- `width`: Width of the browser window
- `height`: Height of the browser window
- `browser_run_code_unsafe`

## Similar MCP servers

- [Browser Use](https://appsgit.com/mcp-servers/browser-use): Control a real Chrome browser to complete any task: fill forms, extract data, book flights. (117,307 stars, MIT, official)
- [Scrapling MCP Server](https://appsgit.com/mcp-servers/scrapling-mcp-server): Web scraping with stealth HTTP, real browsers, and Cloudflare bypass. (86,017 stars, BSD-3-Clause)
- [Chrome DevTools MCP](https://appsgit.com/mcp-servers/chrome-devtools-mcp): MCP server for Chrome DevTools. (53,049 stars, Apache-2.0)
- [Bytedance Browser](https://appsgit.com/mcp-servers/bytedance-browser): MCP server for browser use access. (39,206 stars, Apache-2.0)
- [Bytedance Commands](https://appsgit.com/mcp-servers/bytedance-commands): An MCP server to run arbitrary commands. (39,206 stars, Apache-2.0)
- [Bytedance Search](https://appsgit.com/mcp-servers/bytedance-search): MCP server for web search operations. (39,206 stars, Apache-2.0)

---

Canonical page: https://appsgit.com/mcp-servers/playwright-mcp
Source: appsgit (https://appsgit.com), the app store for github. Data from the GitHub API, refreshed nightly.
Machine access: JSON API https://appsgit.com/api/v1/apps (OpenAPI: https://appsgit.com/openapi.json), MCP server https://mcp.appsgit.com/mcp, full index https://appsgit.com/llms-full.txt.
