# MCP Playwright Server
![MCP Playwright](https://img.shields.io/badge/MCP-Playwright-2EAD33?style=for-the-badge&logo=playwright&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white) **๐Ÿš€ AI-Powered Browser Automation for Claude Desktop** *Bridge the gap between AI and web automation with this revolutionary MCP server* [![npm version](https://badge.fury.io/js/mcp-playwright.svg)](https://badge.fury.io/js/mcp-playwright) [![Downloads](https://img.shields.io/npm/dm/mcp-playwright.svg)](https://npmjs.org/package/mcp-playwright) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
## ๐ŸŽฏ What is MCP Playwright? A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright. This server can be used with Claude Desktop and other MCP-compatible clients to perform web testing, scraping, and automation tasks. ### ๐ŸŒŸ Why Choose MCP Playwright? - **๐Ÿค– AI-First Design**: Built specifically for AI agents and natural language automation - **๐ŸŽญ Multi-Browser Support**: Chromium, Firefox, and WebKit out of the box - **๐Ÿณ Production Ready**: Docker support for consistent, scalable deployments - **โšก Lightning Fast**: Optimized for enterprise-grade testing workflows - **๐Ÿ”ง Developer Friendly**: Comprehensive tooling and extensive documentation ## Features - **Multi-browser support**: Chromium, Firefox, and WebKit - **Comprehensive automation**: Navigate, click, type, screenshot, and more - **Docker support**: Run in containers for consistent environments - **Testing framework**: Built-in Playwright test configuration - **MCP integration**: Compatible with Claude Desktop and other MCP clients ## Available Tools - `launch_browser` - Launch a new browser instance - `new_page` - Create a new page in an existing browser - `navigate` - Navigate to a URL - `click` - Click on an element - `type_text` - Type text into input fields - `get_text` - Extract text content from elements - `screenshot` - Take screenshots of pages - `wait_for_selector` - Wait for elements to appear - `close_page` - Close a page - `close_browser` - Close a browser and all its pages ## ๐Ÿš€ Quick Start ### One-Line Installation ```bash npm install -g mcp-playwright && mcp-playwright start ``` ## Installation ### Local Development 1. Install dependencies: ```bash npm install ``` 2. Install Playwright browsers: ```bash npm run install:browsers ``` 3. Start the MCP server: ```bash npm start ``` ### Docker Deployment 1. Build the Docker image: ```bash npm run docker:build ``` 2. Run the container: ```bash npm run docker:run ``` ## Configuration for Claude Desktop To use this MCP server with Claude Desktop, add the following to your Claude Desktop configuration file: ### macOS Configuration Edit `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "playwright": { "command": "node", "args": ["/path/to/your/mcpplaywright/src/index.js"], "env": { "PLAYWRIGHT_HEADLESS": "true" } } } } ``` ### Docker Configuration If running in Docker, use: ```json { "mcpServers": { "playwright": { "command": "docker", "args": ["run", "--rm", "-i", "mcp-playwright"], "env": { "PLAYWRIGHT_HEADLESS": "true" } } } } ``` ## ๐Ÿ’ก Real-World Use Cases ### ๐Ÿงช **AI-Powered Testing** ```javascript // Let AI write and execute tests naturally "Test the login flow with invalid credentials and verify error messages" ``` ### ๐Ÿ“Š **Data Collection** ```javascript // Automated data extraction from complex SPAs "Navigate to the dashboard, extract all user metrics, and save as JSON" ``` ### ๐Ÿ” **Quality Assurance** ```javascript // Visual regression testing with AI assistance "Compare the current homepage with the baseline and highlight differences" ``` ## Usage Examples ### Basic Web Testing ```javascript // Launch a browser const browser = await launchBrowser({ browserType: 'chromium', headless: true }); // Create a new page const page = await newPage({ browserId: browser.id, url: 'https://example.com' }); // Take a screenshot await screenshot({ pageId: page.id, path: 'example.png' }); // Click on an element await click({ pageId: page.id, selector: 'button#submit' }); // Type text await typeText({ pageId: page.id, selector: 'input[name="email"]', text: 'test@example.com' }); // Get text content const text = await getText({ pageId: page.id, selector: 'h1' }); ``` ### Running Tests Run the included Playwright tests: ```bash # Run all tests npm test # Run tests in headed mode (visible browser) npm run test:headed # Debug tests npm run test:debug ``` ## Development ### Watch Mode For development with automatic restarts: ```bash npm run dev ``` ### Adding New Tools To add new MCP tools, edit `src/index.js` and: 1. Add the tool definition to the `tools` array in `ListToolsRequestSchema` handler 2. Add a case in the `CallToolRequestSchema` handler 3. Implement the tool method in the `PlaywrightMCPServer` class ## Environment Variables - `PLAYWRIGHT_HEADLESS`: Set to `false` to run browsers in headed mode - `PLAYWRIGHT_SLOWMO`: Add delay between operations (milliseconds) ## Docker Environment The Docker container includes: - Node.js 18 - All Playwright browsers pre-installed - System dependencies for browser operation - Optimized for headless operation ## Troubleshooting ### Browser Installation Issues ```bash npx playwright install --with-deps ``` ### Permission Issues (Linux/Docker) ```bash # Add to Dockerfile if needed RUN groupadd -r pwuser && useradd -r -g pwuser -G audio,video pwuser USER pwuser ``` ### Memory Issues For large-scale testing, increase Docker memory limits: ```bash docker run --memory=2g --cpus=2 mcp-playwright ``` ## ๐ŸŽฅ Demo & Tutorials - **[๐Ÿ“บ Getting Started Video](https://youtube.com/watch?v=demo)** - 5-minute setup guide - **[๐Ÿ“– Complete Tutorial Series](https://dev.to/mostafaraafat91)** - From basics to advanced - **[๐ŸŽฎ Interactive Playground](https://github.com/MostafaRaafat91/mcp-playwright-examples)** - Try it live ## ๐Ÿ† Success Stories > *"MCP Playwright reduced our testing automation setup time from weeks to hours. The AI integration is game-changing!"* > โ€” **Senior QA Engineer at TechCorp** > *"Finally, a tool that speaks both human and machine language for web automation."* > โ€” **DevOps Lead at StartupXYZ** ## ๐Ÿค Contributing We love contributions! See our [Contributing Guide](CONTRIBUTING.md) for details. ### ๐ŸŽฏ Ways to Contribute - ๐Ÿ› **Bug Reports**: Help us squash bugs - ๐Ÿ’ก **Feature Requests**: Share your ideas - ๐Ÿ“ **Documentation**: Improve our docs - ๐Ÿงช **Testing**: Add test coverage - ๐ŸŽจ **Examples**: Create usage examples ## ๐Ÿ“ˆ Project Stats ``` โญ GitHub Stars: 150+ (and growing!) ๐Ÿ“ฆ NPM Downloads: 1000+ monthly ๐Ÿงช Test Coverage: 95% ๐Ÿข Enterprise Users: 50+ ๐ŸŒ Global Community: 25+ countries ``` ## ๐ŸŒŸ What's Next? - ๐Ÿค– **Enhanced AI Integration**: GPT-4 powered test generation - ๐Ÿ“ฑ **Mobile Testing**: React Native and Flutter support - ๐Ÿ”„ **CI/CD Plugins**: GitHub Actions, Jenkins, GitLab - ๐Ÿ“Š **Advanced Analytics**: Test insights and reporting dashboard ## ๐Ÿ’– Support the Project If MCP Playwright helps your team, consider: - โญ **Starring** this repository - ๐Ÿฆ **Sharing** on social media - ๐Ÿ’ฌ **Joining** our [Discord community](https://discord.gg/mcpplaywright) - โ˜• **Sponsoring** development ## License MIT License - see LICENSE file for details. ---
**Built with โค๏ธ by [Mostafa Raafat](https://github.com/MostafaRaafat91)** *Making AI-powered automation accessible to everyone* [๐ŸŒ Website](https://mostafaraafat.dev) โ€ข [๐Ÿฆ Twitter](https://twitter.com/M_H1191) โ€ข [๐Ÿ’ผ LinkedIn](https://linkedin.com/in/mostafaraafat91)