Playwright Server

Un servidor para la automatización de navegadores utilizando la librería Playwright.

Documentación

Servidor Playwright MCP

Un servidor MCP basado en Playwright que proporciona capacidades de automatización del navegador

Playwright Server MCP server

Componentes

Recursos

El servidor implementa un sistema simple de almacenamiento de notas:

  • Esquema de URI personalizado note:// para acceder a notas individuales
  • Cada recurso de nota tiene nombre, descripción y tipo MIME text/plain

Prompts

El servidor proporciona una única funcionalidad de prompt:

  • summarize-notes: crea un resumen de todas las notas almacenadas
    • Parámetro opcional "style" que controla el nivel de detalle (brief/detailed)
    • Genera un prompt que combina todas las notas actuales con la preferencia de estilo

Herramientas

El servidor implementa las siguientes herramientas relacionadas con Playwright:

Sesión y navegación

  • playwright_new_session: Crea una nueva sesión de navegador y abre la ventana del navegador

    • Parámetro opcional url (cadena) que especifica la URL inicial a visitar; si no se proporciona, solo se abre el navegador
  • playwright_navigate: Navega a una URL específica

    • Requiere el parámetro url (cadena); si no incluye el prefijo http o https, se añadirá automáticamente https://
    • Si no hay una sesión de navegador activa, se crea automáticamente una nueva sesión

Interacción con la página y obtención de contenido

  • playwright_screenshot: Toma una captura de pantalla de la página actual o de un elemento específico

    • Requiere el parámetro name (cadena), el nombre del archivo de captura, sin necesidad de incluir la extensión
    • Parámetro opcional selector (cadena), selector CSS para especificar el elemento de la página a capturar; si no se proporciona, se captura toda la página
  • playwright_evaluate: Ejecuta código JavaScript en la consola del navegador

    • Requiere el parámetro script (cadena), el código JavaScript que se ejecutará en el navegador
  • playwright_get_text_content: Obtiene el contenido de texto de todos los elementos visibles en la página actual

    • Sin parámetros
    • Filtra inteligentemente contenido duplicado y solo devuelve texto significativo
  • playwright_get_html_content: Obtiene el contenido HTML de un elemento específico en la página

    • Requiere el parámetro selector (cadena), selector CSS para localizar el elemento de la página del cual obtener el contenido HTML

Operaciones de interacción avanzada

  • playwright_action: Admite una rica selección de elementos y métodos de interacción
    • Parámetros obligatorios:
      • by: Método de selección de elementos, admite get_by_text, get_by_placeholder, get_by_label, get_by_role, etc.
      • by_value: Valor para seleccionar el elemento
      • action: Tipo de operación, como fill, click, dblclick, hover, check, etc.
    • Parámetros opcionales:
      • value: Valor de la operación
      • force: Si se debe forzar la ejecución de la acción
      • delay: Retraso entre pulsaciones de teclas (milisegundos)
      • Y más parámetros especializados; consulte la documentación del código

Configuración

Requisitos del sistema

  • Python 3.10+
  • Playwright 1.44+

Inicio rápido

Instalación

Configuración de Claude Desktop

MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

Configuración del servidor en desarrollo/no publicado
"mcpServers": {
  "playwright-server": {
    "command": "uv",
    "args": [
      "--directory",
      "C:\\Users\\xxxxx\\Documents\\project\\python\\mcp\\playwright-server",
      "run",
      "playwright-server"
    ]
  }
}
Configuración del servidor publicado
"mcpServers": {
  "playwright-server": {
    "command": "uvx",
    "args": [
      "playwright-server"
    ]
  }
}

Desarrollo

Compilación y publicación

Preparar el paquete de publicación:

  1. Sincronizar dependencias y actualizar el archivo de bloqueo:
uv sync
  1. Compilar la distribución del paquete:
uv build

Esto creará distribuciones de código fuente y wheel en el directorio dist/.

  1. Publicar en PyPI:
uv publish

Nota: Debe configurar las credenciales de PyPI mediante variables de entorno o argumentos de comando:

  • Token: --token o UV_PUBLISH_TOKEN
  • O nombre de usuario/contraseña: --username/UV_PUBLISH_USERNAME y --password/UV_PUBLISH_PASSWORD

Depuración

Dado que el servidor MCP se ejecuta a través de stdio, la depuración puede ser desafiante. Para una mejor experiencia de depuración, recomendamos encarecidamente usar MCP Inspector.

Puede iniciar MCP Inspector mediante npm con el siguiente comando:

npx @modelcontextprotocol/inspector uv --directory C:\Users\xxxxx\Documents\project\python\mcp\playwright-server run playwright-server

Una vez iniciado, Inspector mostrará una URL que puede abrir en su navegador para comenzar a depurar.

Ejemplos de uso

Acceso web básico y captura de pantalla

# 创建会话并导航到指定网址
await playwright_navigate(url="example.com")

# 截取整个页面
await playwright_screenshot(name="fullpage")

# 截取特定元素
await playwright_screenshot(name="logo", selector=".logo")

Operaciones de interacción avanzada

# 点击文本匹配的按钮
await playwright_action(by="get_by_text", by_value="登录", action="click")

# 填充表单字段
await playwright_action(by="get_by_placeholder", by_value="用户名", action="fill", value="test@example.com")

# 检查元素是否可见
await playwright_action(by="get_by_test_id", by_value="submit-button", action="is_visible")