Suggest a server AI tools directory →

Playwright MCP server

Last verified: 2026-09

Microsoft's browser automation MCP for Chromium, Firefox, and WebKit.

Community Browser & search No API key Claude Desktop, Cursor, Windsurf, Claude Code

What it does

Microsoft's browser MCP. The model drives a real Chromium (or the browser you configure) with accessibility snapshots, not screenshots-as-pixels. Use it when Fetch is not enough because the page needs JavaScript, a login, or a click path.

It sits in Browser & search: Three different jobs get mixed up here.

Good for

  • Snapshot a JS-heavy app as an accessibility tree, not a screenshot.
  • Click, type, and fill a form the model cannot see via Fetch.
  • Run the same flow in Chromium, Firefox, or WebKit.
  • Take a screenshot only when the snapshot is not enough.

Tools

  • browser_navigate — Open a URL.
  • browser_snapshot — Accessibility tree of the current page.
  • browser_click / browser_type / browser_fill_form — Interact with the page.
  • browser_take_screenshot — Picture when the snapshot is not enough.
  • browser_evaluate / browser_tabs / browser_close — JS, tab control, teardown.

Config (Claude Desktop / Cursor / Windsurf)

Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets. Windows paths look like C:\\Users\\you\\project, not /path/to. Host-side steps →

Claude Desktop

OSConfig file
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json (usually C:\Users\<you>\AppData\Roaming\Claude\)
Linux~/.config/Claude/claude_desktop_config.json

Cursor

ScopemacOS / LinuxWindows
This project.cursor/mcp.json in the repo root
This user~/.cursor/mcp.json %USERPROFILE%\.cursor\mcp.json

Windsurf

OSConfig file
macOS / Linux~/.codeium/windsurf/mcp_config.json
Windows%USERPROFILE%\.codeium\windsurf\mcp_config.json
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp"
      ]
    }
  }
}

Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.

One-liner: npx -y @playwright/mcp

Secrets it wants: none

Source repo →

How to get started

  1. npx @playwright/mcp@latest. First run downloads the browser.
  2. Restart the host. Ask it to open a public URL and snapshot the page.
  3. For a logged-in site, prefer a dedicated profile — the session cookies are in that browser.

Access risk

A session that is already logged in can click 'delete' or submit forms. Treat it as an unsupervised intern with your cookies.

When to skip it

Skip it for a public HTML article (Fetch) or a paid crawl API (Firecrawl / Exa). Do not point it at your daily-driver browser profile.

Instead: Fetch, Puppeteer, Firecrawl.

Vs alternatives

ServerOfficial?Needs a secret?Best for
PlaywrightNoNoMicrosoft's browser automation MCP for Chromium, Firefox, and WebKit.
FetchYesYesFetch a URL and turn the page into readable text.
PuppeteerYesNoDrive a headless Chrome: click, type, screenshot.
FirecrawlNoYesCrawl and scrape sites into clean markdown.

More in Browser & search

All 11 in this category →

FAQ

Do I need to install browsers myself?

npx @playwright/mcp@latest downloads them on first run. GUI apps on macOS often miss Homebrew's PATH — that is the usual spawn failure.

Why snapshots instead of screenshots?

The accessibility tree is cheaper in tokens and less ambiguous than pixels. Screenshot when you need layout.

Playwright MCP or Playwright CLI?

Microsoft now also pushes a CLI + skills path as more token-efficient. Use MCP when the host only speaks MCP.

Can I use my logged-in profile?

You can. You should not, unless that profile is a dedicated throwaway.