Fourth Playwright MCP Server
Playwright Web MCP
General-purpose web automation MCP server built on FastMCP v3 and @playwright/mcp.
Gives Claude browser automation capabilities over HTTP — navigate websites, fill forms, extract data, and interact with any web application.
Architecture
Claude.ai / Cowork Plugin
│ Streamable HTTP
▼
FastMCP v3 (Python)
│
├── 70+ playwright_* tools (proxied via subprocess)
├── 19 web_* orchestration tools
├── 1 browser_wait_for wrapper
└── Skills (MCP resources)Tools
Web Automation (custom orchestration)
Tool | Purpose |
| Navigate to login page, discover form fields (auto_fill option) |
| Check if user is authenticated |
| Navigate + SPA-aware content waiting |
| Wait for page content after any action |
| Identify menus, tabs, pagination |
| Extract table data (rows/csv/markdown, DOM mode) |
| Extract targeted page content |
| Extract links via DOM (structured data) |
| Identify form fields, types, refs |
| Batch-fill form fields |
| Search Google/DuckDuckGo with filters |
| Search + multi-page content extraction |
| Clean article text via DOM parsing |
| Page metadata (OG, JSON-LD, meta tags) |
| Save page as PDF |
| Save browser session state |
| Restore saved session |
| Run JavaScript with error handling |
| CSS selector-based data extraction |
Playwright Primitives (proxied)
All 70+ @playwright/mcp tools are available with a playwright_ prefix:
playwright_browser_navigate, playwright_browser_snapshot, playwright_browser_click, playwright_browser_type, playwright_browser_take_screenshot, and more.
Utility
Tool | Purpose |
| Type-safe wrapper for |
Deployment
Railway (production)
The server deploys to Railway via Dockerfile. Set these environment variables:
Variable | Required | Default | Description |
| No | Set by Railway | HTTP port |
| No |
| Bind address |
| No | — | OAuth client ID (omit to disable auth) |
| No | — | OAuth client secret |
| No | Google OIDC | Authorization endpoint |
| No | Google OIDC | Token endpoint |
| No |
| Server public URL (for OAuth redirects) |
Local development
# Install dependencies
uv sync
# Start server
uv run python src/server.py
# → http://localhost:8000/healthDocker
docker build -t playwright-web-mcp .
docker run -p 8000:8000 playwright-web-mcpUsage
Claude.ai Custom Connector
Add as a Custom Connector in Claude.ai Project settings:
URL:
https://<your-app>.railway.app/mcpAuth: OAuth 2.1 (if configured)
Cowork Plugin
Reference the MCP endpoint in your plugin's .mcp.json:
{
"mcpServers": {
"web": {
"url": "https://<your-app>.railway.app/mcp"
}
}
}Development
# Run tests
uv run pytest
# Lint
uv run ruff check src/
# Type check
uv run ruff format --check src/License
Internal use — Fourth Enterprises.