The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Playwright MCP Server listing page.
A Model Context Protocol server that provides browser automation capabilities using Playwright. This server enables LLMs to interact with web pages, take screenshots, generate test code, web scrapes the page and execute JavaScript in a real browser environment.
Test your web applications on real device profiles with a simple command:
Natural Language Support for AI Assistants:
Supports 143 devices: iPhone, iPad, Pixel, Galaxy, and Desktop browsers with proper emulation of viewport, user-agent, touch events, and device pixel ratios.
📚 View Device Quick Reference | Prompt Guide

You can install the package using either npm, mcp-get, or Smithery:
Using npm:
Using mcp-get:
Using Smithery
To install Playwright MCP for Claude Desktop automatically via Smithery:
Using Claude Code:
Install the Playwright MCP server in VS Code using one of these buttons:
Alternatively, you can install the Playwright MCP server using the VS Code CLI:
After installation, the ExecuteAutomation Playwright MCP server will be available for use with your GitHub Copilot agent in VS Code.
The Playwright MCP Server automatically installs browser binaries when you first use it. When the server detects that a browser is missing, it will:
No manual setup required! Just start using the server, and it handles browser installation for you.
If you prefer to install browsers manually or encounter any issues with automatic installation:
Browsers are installed to:
%USERPROFILE%\AppData\Local\ms-playwright~/Library/Caches/ms-playwright~/.cache/ms-playwrightThis is the recommended mode for Claude Desktop.
Note: In stdio mode, logging is automatically directed to files only (not console) to maintain clean JSON-RPC communication. Logs are written to ~/playwright-mcp-server.log.
When running headed browser on systems without display or from worker processes of IDEs, you can run the MCP server as a standalone HTTP server:
Note for Claude Desktop Users: Claude Desktop currently requires stdio mode (command/args configuration). HTTP mode is recommended for VS Code, custom clients, and remote deployments. See CLAUDE_DESKTOP_CONFIG.md for details.
The server will start and display available endpoints:
⚠️ CRITICAL: The
"type": "http"field is REQUIRED for HTTP/SSE transport!
For VS Code GitHub Copilot:
For Custom MCP Clients:
Important: Without "type": "http", the connection will fail.
For Claude Desktop: Use stdio mode instead (see Standard Mode above)
/health endpointMonitoring: The server includes a monitoring system that starts on a dynamically allocated port (avoiding conflicts). Check the console output for the actual port.
Note: For Claude Desktop, continue using stdio mode (Standard Mode above) for now.
Symptom: 400 error with message "Bad Request: No transport found for sessionId"
Solution:
Check configuration includes "type": "http"
Verify server logs show connection:
Restart both server and client
This project uses Jest for testing. The tests are located in the src/__tests__ directory.
You can run the tests using one of the following commands:
The test coverage report will be generated in the coverage directory.
The evals package loads an mcp client that then runs the index.ts file, so there is no need to rebuild between tests. You can load environment variables by prefixing the npx command. Full documentation can be found here.
When adding new tools, please be mindful of the tool name length. Some clients, like Cursor, have a 60-character limit for the combined server and tool name (server_name:tool_name).
Our server name is playwright-mcp. Please ensure your tool names are short enough to not exceed this limit.