Playwright Automation MCP Server

Playwright Automation MCP Server

Enables AI-powered browser automation controlled through natural language, integrating Playwright with the Model Context Protocol to perform web interactions like navigation, form filling, and screenshots.

Category
Visit Server

README

๐ŸŒŸ AI-Powered Web Automation with MCP

Playwright + Model Context Protocol: Intelligent Browser Automation ๐Ÿค–

Transform your testing workflow with AI-driven automation! Combine Playwright's robust browser automation with MCP (Model Context Protocol) for intelligent, natural language-controlled testing.

Playwright TypeScript MCP

๐ŸŒŸ Overview

Experience the future of web automation where AI understands your testing intentions! Simply describe what you want to test in natural language, and watch as AI orchestrates complex browser interactions automatically.

๐Ÿ”Œ What is MCP (Model Context Protocol)?

MCP is an open protocol that standardizes how applications provide context to LLMs, acting like a "USB-C port for AI applications" that provides a standardized way to connect AI models to different data sources and tools. It enables seamless communication between AI assistants (like Claude) and your local automation tools, making complex web testing as simple as having a conversation.

๐ŸŽฏ What Makes This Revolutionary

  • ๐Ÿ—ฃ๏ธ Natural Language Control: "Register a new user and add items to cart"
  • ๐Ÿง  AI-Powered Execution: Smart element detection, timing, and error handling
  • ๐ŸŽฒ Dynamic Test Data: Automatically generates realistic user data
  • ๐Ÿ”„ Self-Healing Tests: Adapts to UI changes intelligently
  • ๐ŸŒ Cross-Platform: Works with Claude Desktop, Cursor IDE, and other MCP clients

โœจ Natural Language Examples

"Navigate to the website and create a new user account"
โ†’ AI automatically generates user data and completes registration

"Browse women's clothing and add a blue dress to the cart"
โ†’ AI navigates categories, finds products, and manages cart

"Login with the account we just created and verify it worked"
โ†’ AI remembers credentials and validates successful authentication

"Take a screenshot of the current page"
โ†’ AI captures and saves the current browser state

๐Ÿ—๏ธ Architecture & Execution Flow

๐Ÿ”„ Complete Execution Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  You (Human User)   โ”‚    โ”‚   Cloud AI Service  โ”‚    โ”‚  Your Local Machine โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚    โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Claude Desktopโ”‚  โ”‚โ—„โ”€โ”€โ–บโ”‚  โ”‚ Claude AI     โ”‚  โ”‚โ—„โ”€โ”€โ–บโ”‚  โ”‚ MCP Server    โ”‚  โ”‚
โ”‚  โ”‚      or       โ”‚  โ”‚    โ”‚  โ”‚  Assistant    โ”‚  โ”‚    โ”‚  โ”‚ (Node.js)     โ”‚  โ”‚
โ”‚  โ”‚ Cursor IDE    โ”‚  โ”‚    โ”‚  โ”‚               โ”‚  โ”‚    โ”‚  โ”‚               โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚    โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                                 โ”‚
                                                                 โ–ผ
                                                       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                                       โ”‚ Playwright Engine   โ”‚
                                                       โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
                                                       โ”‚ โ”‚ Real Browser    โ”‚ โ”‚
                                                       โ”‚ โ”‚ (Chromium)      โ”‚ โ”‚
                                                       โ”‚ โ”‚                 โ”‚ โ”‚
                                                       โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
                                                       โ”‚ โ”‚ โ”‚Real Website โ”‚ โ”‚ โ”‚
                                                       โ”‚ โ”‚ โ”‚Interactions โ”‚ โ”‚ โ”‚
                                                       โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
                                                       โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
                                                       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽฏ Detailed Execution Flow

๐Ÿ“‹ Step-by-Step Process:

1. ๐Ÿ’ฌ Human Input (You)
   โ†“
   "Register a new user and add items to cart"
   
2. ๐ŸŒ Client Application (Claude Desktop/Cursor)
   โ†“
   Sends request to Claude AI service over HTTPS
   
3. ๐Ÿง  Claude AI (Anthropic's Cloud)
   โ†“
   โ€ข Understands natural language intent
   โ€ข Decides which automation functions to call
   โ€ข Generates parameters (random user data, etc.)
   
4. ๐Ÿ“ก MCP Protocol Communication
   โ†“
   Claude connects to your local MCP server via JSON-RPC
   
5. ๐Ÿ–ฅ๏ธ Your Local MCP Server (Node.js)
   โ†“
   โ€ข Receives function calls from Claude
   โ€ข Validates parameters
   โ€ข Executes Playwright scripts
   
6. ๐ŸŽญ Playwright Engine (Local)
   โ†“
   โ€ข Launches real browser (Chromium)
   โ€ข Performs actual web interactions
   โ€ข Manages browser state and timing
   
7. ๐ŸŒ Real Website Interaction
   โ†“
   โ€ข Actual HTTP requests to automationexercise.com
   โ€ข Real form submissions and user account creation
   โ€ข Genuine e-commerce interactions
   
8. โฌ…๏ธ Results Flow Back
   โ†“
   Website โ†’ Browser โ†’ Playwright โ†’ MCP Server โ†’ Claude AI โ†’ You

๐Ÿ” What Happens Behind the Scenes

When You Say: "Register a new user"

๐Ÿง  Claude AI Processing:

// Claude's internal decision making:
1. Parse intent: "User wants to register on the website"
2. Identify required function: register_new_user
3. Generate realistic test data:
   - email: "testuser_1734721171547@example.com" 
   - password: "AutoPass2025!"
   - name: "John Smith"
   - address: "123 Main Street"
4. Send MCP function call to your local server

๐Ÿ–ฅ๏ธ Your Local MCP Server Execution:

// Actual Playwright code that executes:
async function registerNewUser(params) {
    // 1. Navigate to signup page
    await page.goto('https://automationexercise.com');
    await page.click('a[href="/login"]');
    
    // 2. Fill initial signup form
    await page.fill('input[data-qa="signup-name"]', params.name);
    await page.fill('input[data-qa="signup-email"]', params.email);
    await page.click('button[data-qa="signup-button"]');
    
    // 3. Fill detailed registration form
    await page.fill('input[data-qa="first_name"]', params.firstName);
    await page.fill('input[data-qa="password"]', params.password);
    await page.selectOption('select[data-qa="country"]', params.country);
    // ... more form filling
    
    // 4. Submit registration
    await page.click('button[data-qa="create-account"]');
    
    // 5. Return success result
    return { success: true, email: params.email };
}

๐ŸŒ Real Browser Actions:

  • ๐ŸŒ Chromium browser window opens (headless by default)
  • ๐Ÿ“„ Actual page loads from automationexercise.com
  • ๐Ÿ–ฑ๏ธ Real mouse clicks and keyboard typing
  • ๐Ÿ“ Form data submitted to real servers
  • โœ… Actual user account created in their database

๐Ÿ–ฅ๏ธ Platform-Specific Execution

๐Ÿ–ฅ๏ธ Claude Desktop Flow:

Your Computer:
โ”œโ”€โ”€ Claude Desktop App (Electron)
โ”‚   โ”œโ”€โ”€ Connects to Anthropic's Claude AI
โ”‚   โ””โ”€โ”€ MCP client built-in
โ”œโ”€โ”€ Local MCP Server (Node.js process)
โ”‚   โ”œโ”€โ”€ Receives MCP calls from Claude
โ”‚   โ””โ”€โ”€ Executes Playwright scripts
โ””โ”€โ”€ Browser Process (Chromium)
    โ””โ”€โ”€ Real web interactions

โŒจ๏ธ Cursor IDE Flow:

Your Computer:
โ”œโ”€โ”€ Cursor IDE (VS Code fork)
โ”‚   โ”œโ”€โ”€ MCP extension/integration
โ”‚   โ””โ”€โ”€ Connects to Claude AI via API
โ”œโ”€โ”€ Local MCP Server (Node.js process)
โ”‚   โ”œโ”€โ”€ Started via npm start
โ”‚   โ””โ”€โ”€ Listens for MCP connections
โ””โ”€โ”€ Browser Process (Chromium)
    โ””โ”€โ”€ Automated by Playwright

๐Ÿ” Security & Isolation

  • Local Execution: All browser automation happens on your machine
  • Data Privacy: Test data never leaves your system
  • Network Isolation: Only connects to specified test websites
  • Process Isolation: Each browser session is isolated
  • Credential Safety: Login details stored locally only

๐Ÿ’ก Key Technical Points

  1. No Remote Browser: Browser runs locally, not in cloud
  2. Real Interactions: Actual website calls, not mocked responses
  3. MCP Protocol: Standard communication between AI and tools
  4. Persistent Sessions: Browser state maintained across function calls
  5. Error Handling: Both AI and local server handle failures gracefully

๐Ÿš€ Quick Start

๐Ÿ“‹ Prerequisites

  • Node.js 18+ installed
  • npm or yarn package manager
  • Git for cloning the repository

๐Ÿ“ฆ Installation

# 1. Clone the repository
git clone https://github.com/yourusername/playwright-automation-mcp.git
cd playwright-automation-mcp

# 2. Install dependencies
npm install

# 3. Install Playwright browsers
npx playwright install

# 4. Build the project
npm run build

โš™๏ธ MCP Server Configuration

๐Ÿ”‘ Important: The MCP server runs locally on your machine, not in the cloud. Claude AI connects to your local server to execute automation.

๐Ÿ”ง Understanding the Setup:

  • Claude AI: Runs in Anthropic's cloud, understands your requests
  • MCP Server: Runs locally on your machine, executes Playwright
  • Browser: Launches locally, performs real web interactions

Option 1: Claude Desktop

  1. Install Claude Desktop from claude.ai

  2. Locate config file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  3. Create/edit the config file:

{
  "mcpServers": {
    "playwright-automation": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/absolute/path/to/your/playwright-automation-mcp"
    }
  }
}
  1. Start your local MCP server:
cd /path/to/playwright-automation-mcp
npm run build
npm start
  1. Verification Steps:
    • โœ… MCP server shows: "Playwright Automation MCP Server started"
    • โœ… Restart Claude Desktop completely
    • โœ… In Claude, try: "Can you navigate to the automation exercise website?"

Option 2: Cursor IDE

  1. Install Cursor from cursor.sh

  2. Configure MCP in your project:

# In your project root
mkdir -p .cursor
  1. Create .cursor/mcp.json:
{
  "mcpServers": {
    "playwright-automation": {
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "."
    }
  }
}
  1. Start MCP server separately:
npm run build
npm start
  1. In Cursor, enable MCP integration:
    • Open Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
    • Search for "MCP" settings
    • Ensure MCP integration is enabled

๐Ÿ”ง Configuration Troubleshooting:

# 1. Verify your project is built
ls -la dist/index.js  # Should exist

# 2. Test MCP server manually
npm start  # Should show "Server started" message

# 3. Check for port conflicts
lsof -i :3000  # Default MCP port

# 4. Kill any existing MCP processes
pkill -f "dist/index.js"

โœ… Connection Verification:

When properly configured, you should be able to:

๐Ÿ–ฅ๏ธ In Claude Desktop:

You: "Can you help me test a website?"
Claude: "I can help you with web automation! I have access to Playwright tools..."

โŒจ๏ธ In Cursor:

You: @mcp Can you list available automation functions?
Cursor: Shows list of playwright-automation functions

๐ŸŽฏ Verification

Start the MCP server to test your setup:

npm start

You should see:

โœ… Playwright Automation MCP Server started
๐Ÿš€ Server ready for MCP connections
๐ŸŽญ Playwright browsers initialized

๐ŸŽฎ Usage

๐Ÿค– With AI Assistants (Recommended)

Simply chat with your AI assistant naturally:

You: "Can you test the user registration flow on the automation exercise website?"

AI Assistant: I'll help you test the registration flow. Let me:
1. Navigate to the website
2. Register a new user with random data
3. Verify the registration was successful

[Executes automation automatically...]

โœ… Successfully registered user: testuser_1734721171547@example.com
โœ… Account creation confirmed
โœ… User can login with new credentials

๐Ÿ”ง Direct MCP Commands (Advanced)

For advanced users or debugging:

// Navigate to website
playwright-automation:navigate_to_automation_exercise

// Register new user (AI generates data automatically)
playwright-automation:register_new_user
{
  "name": "John Doe",
  "email": "john.doe@example.com",
  "password": "SecurePass123!",
  "firstName": "John",
  "lastName": "Doe",
  "company": "Tech Corp",
  "address": "123 Main St",
  "city": "San Francisco",
  "state": "California",
  "zipCode": "94102",
  "country": "United States",
  "mobileNumber": "555-123-4567"
}

// Browse products by category
playwright-automation:browse_products
{
  "category": "Women"
}

// Add product to cart
playwright-automation:add_product_to_cart
{
  "productName": "Blue Top"
}

๐Ÿ› ๏ธ Available Functions

Function Description Parameters
navigate_to_automation_exercise Launch AutomationExercise website None
register_new_user Register new account with full details User details object
login_user Login with existing credentials email, password
logout_user Logout current user None
browse_products Browse product catalog category (optional)
add_product_to_cart Add specific product to cart productName
view_cart Display cart contents None
take_screenshot Capture current page filename (optional)
click_continue Click continue button None
close_browser Close browser and cleanup None

๐Ÿงช Testing Scenarios

๐ŸŽฏ Complete User Journey

1. Website Navigation โœ…
2. User Registration โœ…
3. Account Verification โœ…
4. Product Browsing โœ…
5. Shopping Cart โœ…
6. User Authentication โœ…
7. Session Management โœ…

๐ŸŽฒ Dynamic Test Data

The system automatically generates:

  • Unique email addresses with timestamps
  • Realistic names and addresses
  • Valid phone numbers
  • Secure passwords
  • Random but valid form data

๐Ÿ”ง Development

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ index.ts                 # MCP server entry point
โ”œโ”€โ”€ playwright-automation.ts # Core automation functions
โ”œโ”€โ”€ config.ts               # Configuration management
โ”œโ”€โ”€ demo.ts                 # Demonstration flows
โ””โ”€โ”€ utils/
    โ”œโ”€โ”€ helpers.ts          # Utility functions
    โ”œโ”€โ”€ page-objects.ts     # Page object models
    โ””โ”€โ”€ test-data.ts        # Test data generators

๐Ÿ› ๏ธ Available Scripts

npm start          # Start MCP server
npm run dev        # Development mode with auto-reload
npm run build      # Build TypeScript to JavaScript
npm run demo       # Run demonstration automation
npm test           # Execute test suite
npm run test:ui    # Run tests with Playwright UI
npm run codegen    # Generate Playwright code

๐Ÿ› Debugging

Enable debug mode:

# Debug MCP communication
DEBUG=mcp:* npm start

# Debug Playwright actions
DEBUG=pw:api npm start

# Debug everything
DEBUG=* npm start

๐Ÿšจ Troubleshooting

Common Issues & Solutions

โŒ MCP Server Not Connecting

# Check if server is running
ps aux | grep "dist/index.js"

# Kill existing instances
pkill -f "dist/index.js"

# Rebuild and restart
npm run build && npm start

โŒ Browser Not Launching

# Reinstall Playwright browsers
npx playwright install --force

# Check system dependencies (Linux)
npx playwright install-deps

โŒ Configuration Issues

  • Verify absolute paths in config files
  • Ensure dist/index.js exists after building
  • Check file permissions
  • Restart AI client after config changes

โŒ Function Calls Failing

  • Confirm MCP server is running
  • Check browser is properly initialized
  • Verify website is accessible
  • Review error messages in server logs

๐Ÿ” Health Check

Test your setup:

# Verify server health
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{"method": "tools/list"}'

๐ŸŽฏ Target Application & Website

This automation targets AutomationExercise, which provides:

  • ๐Ÿ‘ค User Management: Registration, login, logout flows
  • ๐Ÿ›๏ธ Product Catalog: Categories, search, product details
  • ๐Ÿ›’ Shopping Cart: Add/remove items, checkout process
  • ๐Ÿ“ฑ Responsive Design: Mobile and desktop layouts
  • ๐Ÿงช Rich Test Scenarios: Perfect for automation practice

๐Ÿค Contributing & Development

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a Pull Request

๐Ÿ™‹ Support

๐Ÿ“š Documentation & Resources

๐Ÿ‘จโ€๐Ÿ’ป Author

Devendra Singh - Quality Engineering Specialist, AI & Automation Enthusiast

  • ๐Ÿ”— LinkedIn Profile - Connect for professional opportunities and collaboration
  • ๐Ÿ™ GitHub Profile - View other projects and contributions
  • ๐Ÿ“ง Contact - Reach out through LinkedIn or GitHub for questions and partnerships

<div align="center">

๐ŸŒŸ Transform Your Testing with AI-Powered Automation! ๐ŸŒŸ

</div>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured