TabbitBlog

Configura y prueba Playwright MCP en OpenCode

Registra la herramienta y separa los errores del modelo de los fallos del navegador.

En este artículo
  1. Registra el servidor local
  2. Prueba una navegación de solo lectura
  3. Qué hicieron los dos modelos
  4. Encuentra la primera capa que falla

OpenCode puede usar Playwright MCP como servidor local del proyecto. Empieza por una navegación de solo lectura y comprueba el encabezado devuelto. El estado connected confirma el enlace MCP. El modelo aún debe emitir una llamada válida y Playwright tiene que iniciar el navegador y llegar a la página.

Probamos OpenCode 1.18.16 y Playwright MCP 0.0.84. Este tutorial usa el formato 1.x. La documentación de OpenCode V2 pone los nombres de servidores en mcp.servers. Comprueba opencode --version antes de copiar la configuración.

Registra el servidor local

Abre o crea opencode.json en la raíz del proyecto. Si ya contiene mcp, añade playwright dentro del mismo objeto y conserva las demás entradas. La guía de MCP de OpenCode 1.x documenta el comando como array, el estado y el tiempo de espera.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": [
        "npx", "-y", "@playwright/mcp@0.0.84",
        "--browser", "firefox", "--headless", "--isolated"
      ],
      "enabled": true,
      "timeout": 45000
    }
  }
}

Instala un Firefox compatible con el Playwright que incluye el servidor. Para el paquete probado, la versión indicada en npm es 1.65.0-alpha-2026-10-30.

npx -y --package playwright@1.65.0-alpha-2026-10-30 playwright install firefox
opencode mcp list

Si usas una caché de navegador separada, hazla accesible al proceso MCP. En la prueba aislada indicamos el ejecutable compatible de forma explícita. Al actualizar, comprueba que las versiones del paquete y del navegador siguen alineadas. Dos binarios con el mismo nombre pueden usar protocolos distintos.

Ejecuta opencode mcp list en la raíz y abre una sesión nueva para revisar las herramientas. OpenCode combina ajustes de distintos lugares. Para aislar un fallo, usa un proyecto vacío y directorios separados de configuración y datos. La referencia de configuración indica el orden de precedencia.

Prueba una navegación de solo lectura

El formulario público de Selenium tiene una respuesta que puedes verificar y no exige cuenta.

Usa playwright_browser_navigate solo para este URL:
{"url":"https://www.selenium.dev/selenium/web/web-form.html"}
Pasa un argumento url con el enlace como cadena.
Devuelve el encabezado visible en la respuesta.
No hagas clic, escribas, envíes ni uses otras herramientas.

Revisa el nombre de la herramienta, el objeto de argumentos y el encabezado devuelto. En nuestra sesión 1.x el cliente mostró playwright_browser_navigate. Un cliente MCP independiente ve la herramienta original, browser_navigate. El repositorio de Microsoft describe las instantáneas de accesibilidad y las opciones del navegador.

Al comparar modelos, conserva el URL, la instrucción, el servidor y el navegador. Usa modelos compatibles con las llamadas estructuradas en el adaptador elegido. Conectamos OpenCode a un Ollama local con la configuración de proveedor compatible con OpenAI. No se usó una cuenta externa. Revisa el flujo de eventos aunque la respuesta final esté vacía o el código de salida sea cero.

Qué hicieron los dos modelos

La primera ejecución usó un Firefox antiguo de una caché previa. Ambos modelos enviaron el URL previsto y la navegación falló. Un cliente MCP independiente recibió un error de protocolo con la misma entrada válida. Con Firefox 158, revisión 1569, el cliente independiente leyó Web form. En ese entorno, enviar un número como url produjo un error de validación.

Dimos a los dos modelos el mismo objeto JSON explícito en sesiones nuevas con la versión compatible. El resultado de la herramienta y la respuesta final se comprobaron por separado.

Modelo localArgumento de navegaciónResultado de la herramientaSalida final
qwen3:0.6bURL exacto como cadenaWeb formOmitió el encabezado
qwen3.5:0.8bURL exacto como cadenaWeb formSin evento de texto con el encabezado

El segundo modelo hizo además dos capturas de accesibilidad pese a la petición de una sola llamada. En un intento anterior con la versión compatible, ninguno reprodujo el URL exacto a partir de una instrucción en prosa. Ambos navegaron con el JSON explícito en la ejecución recogida. Es una muestra local pequeña. El cliente independiente descubrió 25 herramientas, comprobó que browser_navigate.url era una cadena y cerró el navegador. No se envió el formulario.

Resultados de dos modelos en OpenCode y una comprobación independiente del protocolo MCP

Encuentra la primera capa que falla

Lo que vesQué revisar primeroSiguiente prueba
El servidor falta o falla en opencode mcp listConfiguración y proceso MCPComprueba versión, directorio, comando, ejecutable y espera
Connected, pero solo hay texto del modeloModelo, proveedor o herramientas disponiblesRevisa las herramientas y prueba una sola llamada con otro modelo compatible
La clave o el tipo del argumento es incorrectoEsquema de la herramientaCompara el objeto de argumentos con tools/list
Argumentos correctos, pero también falla el cliente independienteArranque, protocolo o redUsa el binario correspondiente y repite con el mismo URL
La herramienta devuelve el encabezado, pero falta en el texto finalLectura del resultado por el modeloVerifica la respuesta de la herramienta y pide solo el encabezado

Un informe de argumentos MCP describe un servidor de archivos que esperaba path y recibió filePath. Otra conversación sobre OpenCode menciona resultados variables al navegar sin aislar la configuración. Son síntomas distintos. Contrasta los argumentos y la respuesta de tu propia sesión antes de atribuir el fallo.

Este ejemplo crea un contexto limpio. Si necesitas una sesión abierta, consulta cómo conectar un navegador existente. Puedes seguir con automatización con Playwright, Playwright MCP en Claude Code, Playwright MCP en Codex y agentes de programación de código abierto. Para decidir si el trabajo exige abrir pestañas, compara búsqueda y control del navegador y cómo funcionan los agentes de navegador. También puedes descargar Tabbit y repetir la misma lectura con otra conexión.

Preguntas frecuentes

¿Puede OpenCode usar Playwright MCP?

Sí. En 1.x, añade un servidor local bajo mcp en opencode.json y ejecuta opencode mcp list en el proyecto. V2 tiene su propio esquema.

¿Seguirá funcionando si cambio de modelo?

La configuración MCP puede quedar igual. Ejecuta la misma tarea breve con los dos modelos y revisa si generan argumentos válidos y leen la respuesta.

¿Por qué aparece connected aunque la navegación falle?

El servidor puede completar el enlace MCP antes de iniciar el navegador. Busca errores de arranque, ejecutable, protocolo o red en la respuesta de la herramienta.

¿Qué argumento espera browser_navigate?

En la versión probada, url es una cadena. Consulta tools/list y utiliza el nombre exacto que muestra el cliente.

¿La configuración conecta con pestañas abiertas?

El ejemplo crea un contexto aislado. Configura otra conexión si el trabajo necesita una pestaña o sesión que ya está abierta.

Da el siguiente paso

Deja que Tabbit trabaje junto a ti.

Investiga entre pestañas, automatiza el trabajo repetitivo del navegador y mantén todo el contexto al alcance.