Skip to main content

Playwright MCP

A Model Context Protocol server that provides browser automation capabilities using Playwright. Enables LLMs to interact with web pages through structured accessibility snapshots — no vision models required.

Example

You: Navigate to https://demo.playwright.dev/todomvc and add "Buy groceries".

→ browser_navigate { url: "https://demo.playwright.dev/todomvc" }
→ browser_snapshot

- heading "todos" [level=1]
- textbox "What needs to be done?" [ref=e5]

→ browser_type { ref: "e5", text: "Buy groceries", submit: true }
→ browser_snapshot

- heading "todos" [level=1]
- textbox "What needs to be done?" [ref=e5]
- listitem:
- checkbox "Toggle Todo" [ref=e10]
- text: "Buy groceries"
- contentinfo:
- text: "1 item left"

The LLM reads the accessibility snapshot, finds element refs like e5, and uses them to interact — clicking buttons, filling forms, checking checkboxes. No screenshots or coordinate guessing needed.

Key Features

  • Snapshot-based — operates on the accessibility tree, not pixels. Each interactive element gets a unique ref for deterministic interaction
  • LLM-friendly — structured text output that LLMs parse naturally, ~200-400 tokens per snapshot vs thousands for DOM/screenshots
  • Cross-browser — Chrome, Firefox, WebKit, and Edge support
  • Full automation — 40+ tools covering navigation, forms, network mocking, storage, tracing, video, and more
  • Persistent sessions — login state and cookies preserved between sessions by default
  • Works everywhere — VS Code, Cursor, Windsurf, Claude Code, Claude Desktop, and any MCP client

Quick Start

Add the server to your MCP client:

{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}

The browser opens in headed mode by default so you can see what's happening. See Installation for client-specific setup.

Playwright MCP vs Playwright CLI

MCPPlaywright CLI
Best forSpecialized agentic loops, exploratory automationCoding agents (Claude Code, Copilot) working with large codebases
How it worksLLM calls MCP tools with structured parametersAgent runs shell commands
Token costHigher — tool schemas + snapshots in contextLower — concise CLI output, skills loaded on demand
Default modeHeadedHeadless
SetupJSON config in MCP clientnpm install -g @playwright/cli

Available Tools

Core

ToolDescription
browser_navigateNavigate to a URL
browser_navigate_backGo back in history
browser_navigate_forwardGo forward in history
browser_reloadReload the page
browser_snapshotCapture accessibility snapshot
browser_clickClick an element by ref
browser_hoverHover over an element
browser_dragDrag and drop between elements
browser_typeType text into an element
browser_fill_formFill multiple form fields at once
browser_select_optionSelect dropdown option
browser_checkCheck a checkbox or radio
browser_uncheckUncheck a checkbox
browser_press_keyPress a key (Enter, Tab, etc.)
browser_take_screenshotTake a PNG/JPEG screenshot
browser_tabsList, create, close, switch tabs
browser_handle_dialogAccept or dismiss dialogs
browser_file_uploadUpload files
browser_closeClose the browser
browser_resizeResize the browser window
browser_wait_forWait for text, element, or time

Network & Storage

ToolDescription
browser_network_requestsList network requests
browser_routeMock network requests
browser_route_listList active mocked routes
browser_unrouteRemove mocked routes
browser_cookie_list/get/set/delete/clearManage cookies
browser_localstorage_list/get/set/delete/clearManage localStorage
browser_storage_stateSave cookies + localStorage to file
browser_set_storage_stateRestore saved state

Testing & Debugging

ToolDescription
browser_run_codeExecute Playwright code snippets
browser_evaluateEvaluate JavaScript on the page
browser_console_messagesGet console output
browser_generate_locatorGenerate Playwright locator for tests
browser_verify_element_visibleAssert element is visible
browser_verify_text_visibleAssert text is visible
browser_start_tracing / browser_stop_tracingRecord execution traces
browser_start_video / browser_stop_videoRecord session video
browser_pdf_saveExport page as PDF

Vision (optional)

ToolDescription
browser_mouse_move_xyMove mouse to coordinates
browser_mouse_down / browser_mouse_upMouse button press/release
browser_mouse_wheelScroll with mouse wheel