A server for browser automation using Playwright, providing powerful tools for web scraping, testing, and automation.
A comprehensive MCP (Model Context Protocol) server for browser automation using Playwright. This server provides 21 powerful tools for web scraping, testing, and automation.
Tool | Description | Required Parameters |
---|---|---|
openBrowser | Launch browser instance | headless?: boolean, debug?: boolean |
navigate | Navigate to URL | url: string |
click | Click element | selector: string |
type | Type text into element | selector: string, text: string |
moveMouse | Move mouse to coordinates | x: number, y: number |
scroll | Scroll page with feedback | x: number, y: number, smooth?: boolean |
screenshot | Take screenshot | path: string, type?: string, selector?: string |
getPageSource | Get HTML source | None |
getPageText | Get text content | None |
getPageTitle | Get page title | None |
getPageUrl | Get current URL | None |
getScripts | Get JavaScript code | None |
getStylesheets | Get CSS stylesheets | None |
getMetaTags | Get meta tags | None |
getLinks | Get all links | None |
getImages | Get all images | None |
getForms | Get all forms | None |
getElementContent | Get element content | selector: string |
getElementHierarchy | Get DOM hierarchy | selector?: string, maxDepth?: number, includeText?: boolean, includeAttributes?: boolean |
executeJavaScript | Run JavaScript | script: string |
closeBrowser | Close browser | None |
Prerequisites
Clone and Setup
git clone <repository-url>
cd PlayMCP
npm install
npm run build
Install Playwright Browsers
npx playwright install
This downloads the necessary browser binaries (Chromium, Firefox, Safari).
Verify Installation
npm run start
You should see "Browser Automation MCP Server starting..." if everything is working.
git clone <repository-url>
cd PlayMCP
npm install && npm run build && npx playwright install
Add to your MCP configuration file:
Standard MCP Configuration:
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["./dist/server.js"],
"cwd": "/path/to/PlayMCP",
"description": "Browser automation server using Playwright"
}
}
}
Alternative Configuration (works with VS Code GitHub Copilot):
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/PlayMCP/dist/server.js"]
}
}
}
For Windows users:
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["C:\\path\\to\\PlayMCP\\dist\\server.js"]
}
}
}
This MCP server is fully compatible with VS Code GitHub Copilot. After adding the configuration above to your MCP settings, you can use all browser automation tools directly within VS Code.
Claude Desktop (config.json location):
%APPDATA%\Claude\config.json
~/Library/Application Support/Claude/config.json
~/.config/Claude/config.json
VS Code MCP Extension: Add to your VS Code settings.json or MCP configuration file.
Example Full Configuration:
{
"mcpServers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["/Users/username/PlayMCP/dist/server.js"],
"description": "Browser automation with Playwright"
}
}
}
Basic Web Scraping:
// Open browser and navigate
await openBrowser({ headless: false, debug: true })
await navigate({ url: "https://example.com" })
// Extract content
const title = await getPageTitle()
const links = await getLinks()
const forms = await getForms()
Form Automation:
// Fill out a form
await click({ selector: "#login-button" })
await type({ selector: "#username", text: "user@example.com" })
await type({ selector: "#password", text: "password123" })
await click({ selector: "#submit" })
Page Interaction:
// Enhanced scrolling with feedback
await scroll({ x: 0, y: 500, smooth: false })
// Returns: { before: {x: 0, y: 0}, after: {x: 0, y: 500}, scrolled: {x: 0, y: 500} }
// Smooth scrolling
await scroll({ x: 0, y: 300, smooth: true })
// Mouse interaction
await moveMouse({ x: 100, y: 200 })
await click({ selector: ".dropdown-menu" })
DOM Structure Analysis:
// Get page hierarchy (3 levels deep)
await getElementHierarchy({ maxDepth: 3 })
// Get detailed hierarchy with text and attributes
await getElementHierarchy({
selector: "#main-content",
maxDepth: -1,
includeText: true,
includeAttributes: true
})
// Get basic structure of a specific section
await getElementHierarchy({ selector: ".sidebar", maxDepth: 2 })
Advanced JavaScript Execution:
// Run custom JavaScript
await executeJavaScript({
script: "document.querySelectorAll('h1').length"
})
// Modify page content
await executeJavaScript({
script: "document.body.style.backgroundColor = 'lightblue'"
})
// Extract complex data
await executeJavaScript({
script: `
Array.from(document.querySelectorAll('article')).map(article => ({
title: article.querySelector('h2')?.textContent,
summary: article.querySelector('p')?.textContent
}))
`
})
Screenshot and Documentation:
// Take screenshots
await screenshot({ path: "./full-page.png", type: "page" })
await screenshot({ path: "./element.png", type: "element", selector: "#main-content" })
Install and setup:
git clone <repo-url> && cd PlayMCP
npm install && npm run build && npx playwright install
Add to your MCP client configuration
Start automating:
await openBrowser({ debug: true })
await navigate({ url: "https://news.ycombinator.com" })
const links = await getLinks()
console.log(`Found ${links.length} links`)
// Analyze page structure
const hierarchy = await getElementHierarchy({ maxDepth: 2 })
console.log('Page structure:', hierarchy)
npx playwright install
"Browser not initialized" error
openBrowser
before other browser operationsPlaywright installation fails
# Try manual browser installation
npx playwright install chromium
# Or install all browsers
npx playwright install
Permission errors on Linux/macOS
# Make sure the script is executable
chmod +x dist/server.js
Path issues in MCP configuration
C:\\path\\to\\PlayMCP\\dist\\server.js
node /path/to/PlayMCP/dist/server.js
Browser crashes or timeouts
headless: false
for debugging# Test the server directly
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node ./dist/server.js
You should see a JSON response listing all available tools.
MIT License
Hyperbrowser is the next-generation platform empowering AI agents and enabling effortless, scalable browser automation.
A server for browser automation using Google Chrome, based on the MCP framework.
Access YouTube video transcripts and translations using the YouTube Translate API.
Fetch YouTube subtitles
A server for web research that brings real-time information into AI models and researches any topic.
Enable AI agents to get structured data from unstructured web with AgentQL.
Easy web data access. Simplified retrieval of information from websites and online sources.
Fast, token-efficient web content extraction that converts websites to clean Markdown. Features Mozilla Readability, smart caching, polite crawling with robots.txt support, and concurrent fetching with minimal dependencies.
Secure fetch to prevent access to local resources
Fetches and converts website content to Markdown with AI-powered cleanup, OpenAPI support, and stealth browsing.