Playwright Universal MCP
by xkiranj
A universal Model Context Protocol (MCP) server for browser automation that works reliably in containerized environments with limited privileges. It provides browser control capabilities to AI assistants like Claude, GPT-4, etc.
Last updated: N/A
Playwright Universal MCP
A universal Model Context Protocol (MCP) server for browser automation that works reliably in containerized environments with limited privileges. It provides browser control capabilities to AI assistants like Claude, GPT-4, etc.
Features
- 🌐 Multi-browser support: Choose between Chromium, Chrome, Microsoft Edge, Firefox, or WebKit
- 🐳 Container-friendly: Works in environments with limited privileges (like Docker containers)
- 👁️ Headless/Headful modes: Run in headless mode for server environments or headful mode for debugging
- 🛠️ Extensive browser control: Navigate, click, type, take screenshots, and more
- 📄 Multiple page support: Create and manage multiple browser pages/tabs
Installation
Option 1: Install with pipx (recommended)
# Install the MCP Python SDK
pip install git+https://github.com/microsoft/mcp-python-sdk.git
# Install the MCP server globally
pipx install playwright-universal-mcp
# Install the required browsers
playwright install chromium
# Optional: install other browsers
playwright install firefox webkit msedge chrome
Option 2: Install in a Python virtual environment
# Create and activate a virtual environment
python -m venv playwright-mcp-venv
source playwright-mcp-venv/bin/activate
# Install the MCP Python SDK
pip install git+https://github.com/microsoft/mcp-python-sdk.git
# Install the package
pip install playwright-universal-mcp
# Install browsers
playwright install chromium
Option 3: Install from source
# Clone the repository
git clone https://github.com/xkiranj/playwright-universal-mcp.git
cd playwright-universal-mcp
# Install the MCP Python SDK
pip install git+https://github.com/microsoft/mcp-python-sdk.git
# Install the package
pip install -e .
# Install browsers
playwright install chromium
Usage
Command Line Options
playwright-universal-mcp --help
usage: playwright-universal-mcp [-h] [--browser {chromium,firefox,webkit,msedge,chrome}] [--headless] [--headful] [--debug] [--browser-arg BROWSER_ARG]
Universal Playwright MCP server with multi-browser support
options:
-h, --help show this help message and exit
--browser {chromium,firefox,webkit,msedge,chrome}, -b {chromium,firefox,webkit,msedge,chrome}
Browser to use (default: chromium)
--headless Run browser in headless mode (default: true)
--headful Run browser in headful mode (with GUI)
--debug Enable debug logging
--browser-arg BROWSER_ARG
Additional browser arguments (can be specified multiple times)
Basic Examples
# Start with default options (Chromium in headless mode)
playwright-universal-mcp
# Use Microsoft Edge
playwright-universal-mcp --browser msedge
# Use Firefox in headful mode (visible browser window)
playwright-universal-mcp --browser firefox --headful
# Enable debug logging
playwright-universal-mcp --debug
# Pass additional arguments to the browser
playwright-universal-mcp --browser-arg="--disable-gpu" --browser-arg="--window-size=1920,1080"
MCP Configuration
To use this MCP server with Claude Desktop or other MCP-enabled applications, add the following configuration:
Claude Desktop Configuration
Add the following to your ~/.config/Claude/claude_desktop_config.json
file:
{
"mcpServers": {
"browser": {
"command": "playwright-universal-mcp",
"args": ["--browser", "msedge", "--headless"]
}
}
}
Running as a PM2 Service
To run the MCP server as a persistent service with PM2:
- Create a PM2 configuration file:
cat > ~/playwright-universal-mcp.config.js << 'EOF'
module.exports = {
apps: [{
name: "playwright-universal-mcp",
script: "playwright-universal-mcp",
args: "--browser msedge --headless",
watch: false,
autorestart: true,
restart_delay: 3000
}]
}
EOF
- Start the service:
pm2 start ~/playwright-universal-mcp.config.js
- Save the PM2 process list:
pm2 save
Containerized Usage
This MCP server works well in containerized environments. Here's a simple Dockerfile example:
FROM python:3.10-slim
# Install dependencies
RUN apt-get update && apt-get install -y \
wget \
gnupg \
&& rm -rf /var/lib/apt/lists/*
# Install the package
RUN pip install playwright-universal-mcp
# Install browsers (install the ones you need)
RUN playwright install chromium
# Run the MCP server
ENTRYPOINT ["playwright-universal-mcp", "--headless"]
Available Browser Tools
The MCP server provides the following tools:
navigate
: Navigate to a URLclick
: Click on an element by selector or texttype
: Type text into an input elementget_text
: Get text content from an elementget_page_content
: Get the current page HTML contenttake_screenshot
: Take a screenshot of the current pagenew_page
: Create a new browser pageswitch_page
: Switch to a different browser pageget_pages
: List all available browser pageswait_for_selector
: Wait for an element to be visible on the pageget_browser_info
: Get information about the current browser session
License
MIT License
Acknowledgments
This project builds upon:
- Playwright for browser automation
- Model Context Protocol (MCP) for the connection standard
- MCP Python SDK for the MCP implementation