PlayMCP Browser Automation Server
Un servidor para la automatización de navegadores usando Playwright, que proporciona herramientas potentes para web scraping, pruebas y automatización.
Documentación
Servidor de Automatización de Navegador PlayMCP
Un servidor MCP (Protocolo de Contexto de Modelo) integral para automatización de navegador usando Playwright. Este servidor proporciona 38 herramientas potentes para extracción web, pruebas y automatización.
Características
🚀 Automatización Principal del Navegador (21 herramientas)
- Navegación:
navigate,goForward,goBack(mediante desplazamiento) - Interacción:
click,type,hover,dragAndDrop,selectOption - Control del Ratón:
moveMouse,mouseMove,mouseClick,mouseDrag - Teclado:
pressKey - Espera:
waitForText,waitForSelector - Capturas de Pantalla:
screenshot,takeScreenshot(mejoradas) - Información de la Página:
getPageSource,getPageText,getPageTitle,getPageUrl - Análisis de Elementos:
getElementContent,getElementHierarchy - Scripts y Estilos:
getScripts,getStylesheets,getMetaTags
🔍 Extracción Avanzada de Datos (7 herramientas)
- Enlaces e Imágenes:
getLinks,getImages - Formularios:
getForms - Monitoreo de Consola:
getConsoleMessages - Monitoreo de Red:
getNetworkRequests - Ejecución de JavaScript:
executeJavaScript,evaluateWithReturn
📁 Operaciones de Archivos (2 herramientas)
- Carga de Archivos:
uploadFiles - Manejo de Diálogos:
handleDialog
⚙️ Gestión del Navegador (8 herramientas)
- Control del Navegador:
openBrowser,closeBrowser - Gestión de Viewport:
resize - Manipulación de Páginas:
scroll(mejorada con retroalimentación) - Jerarquía de Elementos: Análisis profundo del DOM con profundidad configurable
- Capturas de Pantalla Mejoradas: Página completa, elementos específicos, rutas personalizadas
- Coordenadas del Ratón: Control del ratón con precisión de píxel
- Condiciones de Espera: Espera inteligente para elementos y texto
Inicio Rápido
Instalación
# Clone the repository
git clone https://github.com/jomon003/PlayMCP.git
cd PlayMCP
# Install dependencies
npm install
# Build the project
npm run build
# Test the server
npm test
Uso Básico
// Start the server
node ./dist/server.js
// Send MCP commands via JSON-RPC
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
Categorías de Herramientas
🎯 Navegación e Interacción
- navigate: Ir a cualquier URL
- goForward: Navegar hacia adelante en el historial del navegador
- click: Hacer clic en elementos con resolución inteligente de selectores
- type: Escribir texto con simulación realista de teclado
- hover: Pasar el cursor sobre elementos para tooltips e interacciones
- dragAndDrop: Arrastrar elementos entre ubicaciones
- selectOption: Elegir opciones de listas desplegables y selecciones múltiples
- pressKey: Enviar teclas específicas del teclado (Enter, Escape, etc.)
⏱️ Espera Inteligente
- waitForText: Esperar a que aparezca texto específico
- waitForSelector: Esperar a que los elementos se carguen
- Tiempos de espera integrados y manejo de errores
🖱️ Control Preciso del Ratón
- mouseMove: Moverse a coordenadas exactas
- mouseClick: Hacer clic en píxeles específicos
- mouseDrag: Arrastrar entre puntos de coordenadas
- moveMouse: Posicionamiento mejorado del ratón
📊 Extracción de Datos
- getElementHierarchy: Análisis profundo de la estructura del DOM
- getConsoleMessages: Monitorear la salida de la consola del navegador
- getNetworkRequests: Rastrear solicitudes y respuestas HTTP
- getLinks: Extraer todos los enlaces de la página con metadatos
- getImages: Obtener todas las imágenes con atributos
- getForms: Analizar estructuras y campos de formularios
🎬 Visual y Multimedia
- screenshot: Captura de pantalla básica
- takeScreenshot: Capturas de pantalla avanzadas (página completa, elementos, rutas personalizadas)
- resize: Controlar las dimensiones del viewport
📁 Operaciones de Archivos y Diálogos
- uploadFiles: Manejar cargas de archivos de entrada
- handleDialog: Gestionar alertas, confirmaciones y avisos
⚙️ Ejecución de JavaScript
- executeJavaScript: Ejecutar código JavaScript
- evaluateWithReturn: Ejecutar JS con valores de retorno
Controles Principales del Navegador
- openBrowser - Lanzar una nueva instancia del navegador con modo headless opcional
- navigate - Navegar a cualquier URL
- click - Hacer clic en elementos usando selectores CSS
- type - Escribir texto en campos de entrada
- moveMouse - Mover el ratón a coordenadas específicas
- scroll - Desplazar la página por cantidades especificadas con retroalimentación mejorada y soporte de desplazamiento suave
- screenshot - Tomar capturas de pantalla de la página, viewport o elementos específicos
- closeBrowser - Cerrar la instancia del navegador
Extracción de Contenido de Página
- getPageSource - Obtener el código fuente HTML completo
- getPageText - Obtener el contenido de texto (sin HTML)
- getPageTitle - Obtener el título de la página
- getPageUrl - Obtener la URL actual
- getScripts - Extraer todo el código JavaScript de la página
- getStylesheets - Extraer todas las hojas de estilo CSS
- getMetaTags - Obtener todas las metaetiquetas con sus atributos
- getLinks - Obtener todos los enlaces con href, texto y título
- getImages - Obtener todas las imágenes con src, alt y dimensiones
- getForms - Obtener todos los formularios con sus campos y atributos
- getElementContent - Obtener contenido HTML y de texto de elementos específicos
- getElementHierarchy - Obtener la estructura jerárquica del DOM con relaciones padre-hijo
Capacidades Avanzadas
- executeJavaScript - Ejecutar código JavaScript arbitrario en la página y devolver resultados
Referencia de Herramientas Disponibles
| Herramienta | Descripción | Parámetros Requeridos |
|---|---|---|
openBrowser | Lanzar instancia del navegador | headless?: boolean, debug?: boolean |
navigate | Navegar a URL | url: string |
click | Hacer clic en elemento | selector: string |
type | Escribir texto en elemento | selector: string, text: string |
moveMouse | Mover ratón a coordenadas | x: number, y: number |
scroll | Desplazar página con retroalimentación | x: number, y: number, smooth?: boolean |
screenshot | Tomar captura de pantalla | path: string, type?: string, selector?: string |
getPageSource | Obtener fuente HTML | Ninguno |
getPageText | Obtener contenido de texto | Ninguno |
getPageTitle | Obtener título de página | Ninguno |
getPageUrl | Obtener URL actual | Ninguno |
getScripts | Obtener código JavaScript | Ninguno |
getStylesheets | Obtener hojas de estilo CSS | Ninguno |
getMetaTags | Obtener metaetiquetas | Ninguno |
getLinks | Obtener todos los enlaces | Ninguno |
getImages | Obtener todas las imágenes | Ninguno |
getForms | Obtener todos los formularios | Ninguno |
getElementContent | Obtener contenido de elemento | selector: string |
getElementHierarchy | Obtener jerarquía del DOM | selector?: string, maxDepth?: number, includeText?: boolean, includeAttributes?: boolean |
executeJavaScript | Ejecutar JavaScript | script: string |
closeBrowser | Cerrar navegador | Ninguno |
Instalación
Pasos Completos de Instalación
-
Requisitos previos
- Node.js 16+ (descargar de nodejs.org)
- Git (para clonar el repositorio)
-
Clonar y Configurar
git clone <repository-url> cd PlayMCP npm install npm run build -
Instalar Navegadores de Playwright
npx playwright installEsto descarga los binarios necesarios del navegador (Chromium, Firefox, Safari).
-
Verificar la Instalación
npm run startDeberías ver "Browser Automation MCP Server starting..." si todo funciona correctamente.
Instalación Rápida
git clone <repository-url>
cd PlayMCP
npm install && npm run build && npx playwright install
Uso
Como Servidor MCP
Agrega a tu archivo de configuración MCP:
Configuración MCP Estándar:
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["./dist/server.js"],
"cwd": "/path/to/PlayMCP",
"description": "Browser automation server using Playwright"
}
}
}
Configuración Alternativa (funciona con VS Code GitHub Copilot):
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/PlayMCP/dist/server.js"]
}
}
}
Para usuarios de Windows:
{
"servers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["C:\\path\\to\\PlayMCP\\dist\\server.js"]
}
}
}
Integración con VS Code GitHub Copilot
Este servidor MCP es totalmente compatible con VS Code GitHub Copilot. Después de agregar la configuración anterior a tu configuración MCP, puedes usar todas las herramientas de automatización del navegador directamente dentro de VS Code.
Ejemplos de Configuración
Claude Desktop (ubicación de config.json):
- Windows:
%APPDATA%\Claude\config.json - macOS:
~/Library/Application Support/Claude/config.json - Linux:
~/.config/Claude/config.json
Extensión MCP de VS Code: Agrega a tu settings.json de VS Code o archivo de configuración MCP.
Ejemplo de Configuración Completa:
{
"mcpServers": {
"playmcp-browser": {
"type": "stdio",
"command": "node",
"args": ["/Users/username/PlayMCP/dist/server.js"],
"description": "Browser automation with Playwright"
}
}
}
Ejemplos de Herramientas
Extracción Web Básica:
// 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()
Automatización de Formularios:
// 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" })
Interacción con la Página:
// 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" })
Análisis de Estructura del DOM:
// 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 })
Ejecución Avanzada de JavaScript:
// 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
}))
`
})
Captura de Pantalla y Documentación:
// Take screenshots
await screenshot({ path: "./full-page.png", type: "page" })
await screenshot({ path: "./element.png", type: "element", selector: "#main-content" })
Inicio Rápido
-
Instalar y configurar:
git clone <repo-url> && cd PlayMCP npm install && npm run build && npx playwright install -
Agregar a la configuración de tu cliente MCP
-
Comenzar a automatizar:
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)
Desarrollo
- src/server.ts - Implementación principal del servidor MCP
- src/controllers/playwright.ts - Controlador del navegador Playwright
- src/mcp/ - Implementación del protocolo MCP
- src/types/ - Definiciones de tipos TypeScript
Requisitos
Requisitos del Sistema
- Node.js 16+ (versión LTS recomendada)
- Sistema Operativo: Windows, macOS o Linux
- Memoria: Al menos 2GB de RAM (4GB+ recomendado para uso intensivo)
- Espacio en Disco: ~500MB para binarios del navegador y dependencias
Dependencias
- Playwright: Maneja la automatización del navegador (instalado automáticamente)
- TypeScript: Para compilación (dependencia de desarrollo)
- Binarios del Navegador: Descargados mediante
npx playwright install
Solución de Problemas
Problemas Comunes
-
Error de "Browser not initialized"
- Asegúrate de llamar a
openBrowserantes de otras operaciones del navegador - Verifica que la versión de Node.js sea 16 o superior
- Asegúrate de llamar a
-
La instalación de Playwright falla
# Try manual browser installation npx playwright install chromium # Or install all browsers npx playwright install -
Errores de permisos en Linux/macOS
# Make sure the script is executable chmod +x dist/server.js -
Problemas de rutas en la configuración MCP
- Usa rutas absolutas en la configuración
- En Windows, usa dobles barras invertidas:
C:\\path\\to\\PlayMCP\\dist\\server.js - Verifica que la ruta exista:
node /path/to/PlayMCP/dist/server.js
-
El navegador se bloquea o expira
- Intenta ejecutar con
headless: falsepara depuración - Aumenta la memoria del sistema si ejecutas múltiples instancias del navegador
- Verifica si el software antivirus está bloqueando los procesos del navegador
- Intenta ejecutar con
Probando tu Instalación
# Test the server directly
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node ./dist/server.js
Deberías ver una respuesta JSON que enumera todas las herramientas disponibles.
Licencia
Licencia MIT