From playwright
Runs Playwright MCP server for Claude Code browser automation via accessibility tree tools. Enables navigation, clicks, forms, screenshots, content extraction for blocked sites or local UI testing.
npx claudepluginhub vinnie357/claude-skills --plugin playwrightThis skill uses the workspace's default tool permissions.
The Playwright MCP server gives Claude Code agents direct browser control through 50+ tools that operate on the accessibility tree rather than screenshots. This enables fast, structured web interaction — navigating pages, clicking elements, filling forms, extracting content, and taking screenshots — without requiring vision models.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
The Playwright MCP server gives Claude Code agents direct browser control through 50+ tools that operate on the accessibility tree rather than screenshots. This enables fast, structured web interaction — navigating pages, clicking elements, filling forms, extracting content, and taking screenshots — without requiring vision models.
Activate when:
# Default: bunx (preferred)
claude mcp add playwright -- bunx @playwright/mcp@latest
# Fallback: npx
claude mcp add playwright -- npx @playwright/mcp@latest
Verify the MCP server is connected by running /mcp in a Claude Code session.
Bun or Node.js 18+ must be available. Add to your project or global mise.toml:
[tools]
bun = "latest"
See templates/mise.toml for the full template.
Add to ~/.claude.json to make Playwright available in every Claude Code session:
{
"mcpServers": {
"playwright": {
"command": "bunx",
"args": ["@playwright/mcp@latest"]
}
}
}
Add to .mcp.json in the project root for project-scoped configuration:
{
"mcpServers": {
"playwright": {
"command": "bunx",
"args": ["@playwright/mcp@latest"]
}
}
}
Pass flags after the package name in the args array or on the CLI:
claude mcp add playwright -- bunx @playwright/mcp@latest --headless --browser chromium
| Flag | Default | Description |
|---|---|---|
--browser | chrome | Browser engine: chrome, firefox, webkit, msedge |
--headless | off (headed) | Run without visible browser window |
--allowed-origins | none | Semicolon-separated trusted origins |
--blocked-origins | none | Semicolon-separated blocked origins |
--proxy-server | none | HTTP proxy (e.g., http://proxy:3128) |
--viewport-size | browser default | Window size (e.g., 1280x720) |
--device | none | Emulate device (e.g., iPhone 15) |
--timeout-action | 5000 | Action timeout in ms |
--timeout-navigation | 60000 | Navigation timeout in ms |
--user-data-dir | none | Persistent browser profile path |
--isolated | off | Use in-memory profile only |
--storage-state | none | Load saved session state (cookies, localStorage) |
--caps | core only | Enable optional capabilities (see below) |
--config | none | Path to configuration file |
--cdp-endpoint | none | Connect to existing Chrome DevTools Protocol |
All flags support environment variable alternatives (e.g., PLAYWRIGHT_MCP_HEADLESS=true).
The MCP server provides core tools by default. Enable additional capabilities with --caps:
claude mcp add playwright -- bunx @playwright/mcp@latest --caps "network,vision,pdf,testing"
| Capability | Flag | Description |
|---|---|---|
| Core | always on | Navigation, clicking, typing, snapshots, screenshots, tabs, dialogs |
| Network | network | Monitor requests, set up routes, intercept traffic |
| Storage | storage | Cookie/localStorage/sessionStorage CRUD, save/restore state |
| DevTools | devtools | Tracing, video recording, console access |
| Vision | vision | Coordinate-based mouse interaction (click/move/drag by x,y) |
pdf | Save pages as PDF files | |
| Testing | testing | Locator generation, element/text/value assertions |
{
"mcpServers": {
"playwright": {
"command": "bunx",
"args": [
"@playwright/mcp@latest",
"--headless",
"--caps",
"network,vision,pdf,testing"
]
}
}
}
Navigate to a URL and extract content when curl or fetch would be blocked:
Use browser_navigate to go to the URL, then browser_snapshot to read the page content.
Take screenshots of web applications or local dev servers:
Use browser_navigate to the target URL, then browser_take_screenshot to capture the page.
For local dev servers, navigate to http://localhost:<port>.
Automate login flows, data entry, or form submission:
Use browser_snapshot to identify form elements, browser_click to focus inputs,
browser_type to enter values, then browser_click to submit.
Connect to a running local development server for UI verification:
Navigate to http://localhost:3000 (or your dev server port).
Use browser_snapshot to inspect the rendered page structure.
Use testing capability tools for assertions (requires --caps testing).
Core tools are always available. Optional tools require --caps flags.
| Category | Representative Tools | Capability |
|---|---|---|
| Navigation | browser_navigate, browser_navigate_back, browser_navigate_forward | core |
| Interaction | browser_click, browser_type, browser_select_option, browser_hover, browser_drag | core |
| Input | browser_press_key, browser_file_upload, browser_handle_dialog | core |
| Inspection | browser_snapshot, browser_take_screenshot, browser_console_messages | core |
| JavaScript | browser_evaluate | core |
| Tabs | browser_tab_new, browser_tab_list, browser_tab_select, browser_tab_close | core |
| Page | browser_resize, browser_wait_for, browser_close | core |
| Network | browser_network_requests, browser_route, browser_unroute | network |
| Storage | cookie/localStorage/sessionStorage CRUD, browser_storage_state | storage |
| DevTools | browser_start_tracing, browser_stop_tracing, browser_start_video, browser_stop_video | devtools |
| Vision | browser_mouse_click_xy, browser_mouse_move_xy, browser_mouse_drag_xy | vision |
browser_pdf_save | ||
| Testing | browser_generate_locator, browser_verify_element_visible, browser_verify_text_visible | testing |
For the full tool catalog with parameters and descriptions, see references/tools-reference.md.
bun --version or node --version--headless flag for environments without a displaybunx playwright install chromium/mcp in Claude Code to verify the server is listed and connected--allowed-origins to explicitly allow localhost: --allowed-origins "http://localhost:*"--timeout-navigation for slow-loading pages (default: 60000ms)--timeout-action for slow element interactions (default: 5000ms)--caps vision) adds coordinate-based interaction for elements not in the accessibility tree/mcp before claiming Playwright tools are available--caps configurationbrowser_snapshot output, not expected contentcore:anti-fabrication for full validation requirements--headless for CI, automated contexts, and agent workflows--allowed-origins to restrict navigation scope when working with sensitive applications/mcp before attempting browser operationsbrowser_snapshot (accessibility tree) over browser_take_screenshot (image) when extracting text content--storage-state to save and restore session cookies