Playwright MCP Server logo

Playwright MCP Server

CommunityPopular
executeautomation

Playwright Model Context Protocol Server - Tool to automate Browsers and APIs in Claude Desktop, Cline, Cursor IDE and More šŸ”Œ

Publisherexecuteautomation
Repositorymcp-playwright
LanguageTypeScript
Forks
538
Stars
5.7K
Available tools
33
Transport typestdio
Categories
LicenseMIT
Links
  • Connect tools to AI workflows

    Playwright MCP Server exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 33 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    5.7K stars and 538 forks from the linked repository.

Playwright MCP Server šŸŽ­

Trust Score smithery badge

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.

✨ What's New in v1.0.10

šŸŽÆ Device Emulation with 143 Real Device Presets!

Test your web applications on real device profiles with a simple command:

javascript
// Test on iPhone 13 with automatic user-agent, touch support, and device pixel ratio
await playwright_resize({ device: "iPhone 13" });

// Switch to iPad with landscape orientation
await playwright_resize({ device: "iPad Pro 11", orientation: "landscape" });

// Test desktop view
await playwright_resize({ device: "Desktop Chrome" });

Natural Language Support for AI Assistants:

  • "Test on iPhone 13"
  • "Switch to iPad view"
  • "Rotate to landscape"

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

Screenshot

Playwright + Claude

Documentation | API reference

Installation

You can install the package using either npm, mcp-get, or Smithery:

Using npm:

bash
npm install -g @executeautomation/playwright-mcp-server

Using mcp-get:

bash
npx @michaellatman/mcp-get@latest install @executeautomation/playwright-mcp-server

Using Smithery

To install Playwright MCP for Claude Desktop automatically via Smithery:

bash
npx @smithery/cli install @executeautomation/playwright-mcp-server --client claude

Using Claude Code:

bash
claude mcp add --transport stdio playwright npx @executeautomation/playwright-mcp-server

Installation in VS 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:

bash
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@executeautomation/playwright-mcp-server"]}'
bash
# For VS Code Insiders
code-insiders --add-mcp '{"name":"playwright","command":"npx","args":["@executeautomation/playwright-mcp-server"]}'

After installation, the ExecuteAutomation Playwright MCP server will be available for use with your GitHub Copilot agent in VS Code.

Browser Installation

Automatic Installation (Recommended)

The Playwright MCP Server automatically installs browser binaries when you first use it. When the server detects that a browser is missing, it will:

  1. Automatically download and install the required browser (Chromium, Firefox, or WebKit)
  2. Display installation progress in the console
  3. Retry your request once installation completes

No manual setup required! Just start using the server, and it handles browser installation for you.

Manual Installation (Optional)

If you prefer to install browsers manually or encounter any issues with automatic installation:

bash
# Install all browsers
npx playwright install

# Or install specific browsers
npx playwright install chromium
npx playwright install firefox
npx playwright install webkit

Browser Storage Location

Browsers are installed to:

  • Windows: %USERPROFILE%\AppData\Local\ms-playwright
  • macOS: ~/Library/Caches/ms-playwright
  • Linux: ~/.cache/ms-playwright

Configuration to use Playwright Server

Standard Mode (stdio)

This is the recommended mode for Claude Desktop.

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

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.

HTTP Mode (Standalone Server)

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.

Starting the HTTP Server

bash
# Using npx
npx @executeautomation/playwright-mcp-server --port 8931

# Or after global installation
playwright-mcp-server --port 8931

The server will start and display available endpoints:

==============================================
Playwright MCP Server (HTTP Mode)
==============================================
Port: 8931

ENDPOINTS:
- SSE Stream:     GET  http://localhost:8931/sse
- Messages:       POST http://localhost:8931/messages?sessionId=<id>
- MCP (unified):  GET  http://localhost:8931/mcp
- MCP (unified):  POST http://localhost:8931/mcp?sessionId=<id>
- Health Check:   GET  http://localhost:8931/health
==============================================

Client Configuration for HTTP Mode

āš ļø CRITICAL: The "type": "http" field is REQUIRED for HTTP/SSE transport!

For VS Code GitHub Copilot:

json
{
  "github.copilot.chat.mcp.servers": {
    "playwright": {
      "url": "http://localhost:8931/mcp",
      "type": "http"
    }
  }
}

For Custom MCP Clients:

json
{
  "mcpServers": {
    "playwright": {
      "url": "http://localhost:8931/mcp",
      "type": "http"
    }
  }
}

Important: Without "type": "http", the connection will fail.

For Claude Desktop: Use stdio mode instead (see Standard Mode above)

Use Cases for HTTP Mode

  • Running headed browsers on systems without display (e.g., remote servers)
  • Integrating with VS Code GitHub Copilot
  • Running the server as a background service
  • Accessing the server from multiple clients
  • Debugging with the /health endpoint
  • Custom MCP client integrations

Monitoring: 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.

Troubleshooting

"No transport found for sessionId" Error

Symptom: 400 error with message "Bad Request: No transport found for sessionId"

Solution:

  1. Check configuration includes "type": "http"

    json
    {
      "url": "http://localhost:8931/mcp",
      "type": "http"  // ← This is REQUIRED!
    }
  2. Verify server logs show connection:

    bash
    # Should see these in order:
    # 1. "Incoming request" - GET /mcp
    # 2. "Transport registered" - with sessionId
    # 3. "POST message received" - with same sessionId
  3. Restart both server and client

Connection Issues

  • Server not starting: Check if port 8931 is available
  • External access blocked: This is by design (security). Server binds to localhost only
  • For remote access: Use SSH tunneling:
    bash
    ssh -L 8931:localhost:8931 user@remote-server

Testing

This project uses Jest for testing. The tests are located in the src/__tests__ directory.

Running Tests

You can run the tests using one of the following commands:

bash
# Run tests using the custom script (with coverage)
node run-tests.cjs

# Run tests using npm scripts
npm test           # Run tests without coverage
npm run test:coverage  # Run tests with coverage
npm run test:custom    # Run tests with custom script (same as node run-tests.cjs)

The test coverage report will be generated in the coverage directory.

Running evals

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.

bash
OPENAI_API_KEY=your-key  npx mcp-eval src/evals/evals.ts src/tools/codegen/index.ts

Contributing

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.

Star History

Star History Chart

Installation

TypingMind
{
  "mcpServers": {
    "mcp-playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@executeautomation/playwright-mcp-server"
      ]
    }
  }
}

Available Tools

  • start_codegen_session

    Start a new code generation session to record Playwright actions

  • end_codegen_session

    End a code generation session and generate the test file

  • get_codegen_session

    Get information about a code generation session

  • clear_codegen_session

    Clear a code generation session without generating a test

  • playwright_navigate

    Navigate to a URL

  • playwright_screenshot

    Take a screenshot of the current page or a specific element

  • playwright_click

    Click an element on the page

  • playwright_iframe_click

    Click an element in an iframe on the page

  • playwright_iframe_fill

    Fill an element in an iframe on the page

  • playwright_fill

    fill out an input field

  • playwright_select

    Select an element on the page with Select tag

  • playwright_hover

    Hover an element on the page

  • playwright_upload_file

    Upload a file to an input[type='file'] element on the page

  • playwright_evaluate

    Execute JavaScript in the browser console

  • playwright_console_logs

    Retrieve console logs from the browser with filtering options

  • playwright_resize

    Resize the browser viewport using manual dimensions or device presets. Supports 143+ device presets including iPhone, iPad, Android devices, and desktop browsers with proper user-agent and touch emulation.

  • playwright_close

    Close the browser and release all resources

  • playwright_get

    Perform an HTTP GET request

  • playwright_post

    Perform an HTTP POST request

  • playwright_put

    Perform an HTTP PUT request

  • playwright_patch

    Perform an HTTP PATCH request

  • playwright_delete

    Perform an HTTP DELETE request

  • playwright_expect_response

    Ask Playwright to start waiting for a HTTP response. This tool initiates the wait operation but does not wait for its completion.

  • playwright_assert_response

    Wait for and validate a previously initiated HTTP response wait operation.

  • playwright_custom_user_agent

    Set a custom User Agent for the browser

  • playwright_get_visible_text

    Get the visible text content of the current page

  • playwright_get_visible_html

    Get the HTML content of the current page. By default, all tags are removed from the output unless removeScripts is explicitly set to false.

  • playwright_go_back

    Navigate back in browser history

  • playwright_go_forward

    Navigate forward in browser history

  • playwright_drag

    Drag an element to a target location

  • playwright_press_key

    Press a keyboard key

  • playwright_save_as_pdf

    Save the current page as a PDF file

  • playwright_click_and_switch_tab

    Click a link and switch to the newly opened tab

Use Playwright MCP Server MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once Playwright MCP Server is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add Playwright MCP Server as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the Playwright MCP Server MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "mcp-playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@executeautomation/playwright-mcp-server"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the Playwright MCP Server MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the Playwright MCP Server MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use Playwright MCP Server to help me with this task?
Playwright MCP Server
Sure. I read it.
Here is what I found using Playwright MCP Server.

Frequently asked questions

What is the Playwright MCP Server MCP server used for?

Playwright MCP Server is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use Playwright MCP Server MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use Playwright MCP Server with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use Playwright MCP Server MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With Playwright MCP Server connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect Playwright MCP Server MCP to TypingMind?

Playwright MCP Server runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does Playwright MCP Server MCP provide in TypingMind?

Playwright MCP Server exposes 33 MCP tools that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use Playwright MCP Server MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If Playwright MCP Server requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Browser console logs

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter šŸ‘‡