Automatiza los navegadores con el servidor remoto MCP de Espacios de trabajo de dramaturgo

Importante

El servidor remoto del Protocolo de Contexto de Modelo (MCP) de Espacios de trabajo de dramaturgo está en vista previa. Las funciones de vista previa no tienen un acuerdo de nivel de servicio y no se recomiendan para cargas de trabajo en producción. Las características, límites y disponibilidad pueden cambiar.

El servidor remoto MCP de Espacios de trabajo de dramaturgo ofrece a los agentes de IA un navegador remoto gestionado y un conjunto de herramientas de automatización de navegadores. Un agente puede abrir una sesión del navegador, navegar por páginas, encontrar e interactuar con elementos, inspeccionar la actividad del navegador, tomar capturas de pantalla y cerrar la sesión. No necesitas instalar Playwright ni un navegador en el entorno del agente.

El servidor utiliza Model Context Protocol sobre Streamable HTTP. Soporta autenticación Microsoft Entra ID y tokens de acceso al espacio de trabajo. Funciona con clientes MCP remotos, incluyendo Microsoft Foundry Agent Service y Visual Studio Code.

En este artículo aprenderá a:

  • Crea el endpoint de MCP para un espacio de trabajo de Playwright.
  • Autentica usando Microsoft Entra ID o un token de acceso al espacio de trabajo.
  • Conecta el servidor a Microsoft Foundry Agent Service o Visual Studio Code.
  • Ejecuta flujos completos de automatización agentica del navegador.
  • Selecciona y utiliza de forma segura las herramientas de navegador disponibles.
  • Gestiona la expiración de la sesión, los tiempos de espera y otros errores comunes.

Prerequisites

Antes de empezar, asegúrese de que tiene lo siguiente:

  • Una cuenta de Azure con una suscripción activa.
  • Un espacio de trabajo de Playwright que tiene acceso a la vista previa remota de MCP.
  • El ID del área de trabajo y la región de Azure del área de trabajo.
  • Una identidad con permiso para crear y usar sesiones de navegador en el espacio de trabajo.
  • Para Microsoft Foundry, un proyecto de Foundry y permiso para crear conexiones de proyecto y configurar agentes.
  • Para Visual Studio Code, una versión actual de Visual Studio Code con acceso a GitHub Copilot y soporte MCP activados.

Elección de un método de autenticación

Utiliza Microsoft Entra ID cuando tu cliente MCP soporte OAuth o identidad gestionada. El servidor MCP remoto utiliza este identificador de recurso y el alcance delegado:

Resource: https://mcp.playwright.microsoft.com
Scope: https://mcp.playwright.microsoft.com/Playwright.Mcp.Tools

El servidor publica metadatos de recursos protegidos OAuth. Los clientes que admiten el descubrimiento de OAuth, entre ellos Visual Studio Code, pueden detectar el servidor de autorización y el ámbito requerido a partir del punto de conexión MCP con ámbito de espacio de trabajo. La identidad que ha iniciado sesión debe tener acceso al espacio de trabajo de Playwright mediante el control de acceso basado en roles (RBAC) de Azure.

Warning

Usa un token de acceso al espacio de trabajo solo cuando el cliente MCP no pueda autenticarse con Microsoft Entra ID. Los tokens de acceso son menos seguros y están deshabilitados por defecto.

Crea un token de acceso al espacio de trabajo para compatibilidad

Omite esta sección cuando uses Microsoft Entra ID. Si la autenticación con token de acceso no está ya habilitada para el espacio de trabajo:

  1. Inicie sesión en Azure Portal.
  2. Abre tu espacio de trabajo de Dramaturgo.
  3. En Configuración, selecciona Gestión de acceso.
  4. Activar el token de acceso al servicio de dramaturgo.
  5. Seleccione Generar token.
  6. Introduce un nombre y una fecha de caducidad, y luego genera el token.
  7. Copie el token inmediatamente. No puedes recuperar su valor más adelante.

Guarda el token en un almacén secreto gestionado o en la facilidad de credenciales segura proporcionada por tu cliente MCP. Revócalo y sustitúyelo si podría haber quedado expuesto. Para crear un token de acceso al espacio de trabajo, consulta Gestionar tokens de acceso al espacio de trabajo.

Caution

Trata un token de acceso al espacio de trabajo como una contraseña. Nunca lo confirme en el control de código fuente, lo incluya en una solicitud ni lo escriba en los registros.

Crea el extremo remoto de MCP

El punto final está asignado a un solo espacio de trabajo y región:

https://<region>.mcp.playwright.microsoft.com/playwrightworkspaces/<workspace-id>/mcp

Reemplazar:

  • <region>con la región Azure del espacio de trabajo.
  • <workspace-id> con el ID del espacio de trabajo mostrado en el portal de Azure.

Por ejemplo:

https://eastus.mcp.playwright.microsoft.com/playwrightworkspaces/00000000-0000-0000-0000-000000000000/mcp

El valor en la x-api-key cabecera de la solicitud debe ser un token de acceso creado para el mismo espacio de trabajo que <workspace-id>. Utiliza el endpoint para la región del workspace, no la región más cercana al cliente MCP.

Comprender el ciclo de vida de las sesiones del navegador

Un flujo de automatización de navegador tiene tres etapas:

  1. Llame a create_browser_session. El resultado contiene una URL opaca browserSessionId y podría contener una URL de visualización en vivo.
  2. Pase ese browserSessionId a todas las herramientas del navegador utilizadas en el flujo.
  3. Llama close_browser_session para un paso de limpieza, incluso cuando el flujo falla.

El transporte HTTP MCP no conserva el estado del navegador. El browserSessionId identifica el navegador remoto en distintas llamadas a herramientas. Manténlo privado y úsalo solo con el espacio de trabajo y la identidad que lo creó.

El comportamiento actual de la vista previa incluye estas restricciones:

  • Una sesión pertenece a su creador y no puede compartirse con otro principal.
  • Las llamadas de una sesión se procesan en orden. No emitas acciones concurrentes contra la misma sesión.
  • Una sesión inactiva se limpia tras 15 minutos. Se requiere una limpieza explícita.
  • Una sesión cerrada o caducada no puede reabrirse.
  • La pérdida de conexión pone fin a la sesión. Crea una nueva sesión para continuar.
  • Un resultado podría contener un liveViewUrl. La disponibilidad de la vista en directo depende de la sesión.

Conectarse desde el servicio de agentes Microsoft Foundry

Utiliza Microsoft Entra Agent Identity para autenticar al agente con la identidad gestionada del proyecto Foundry. Concede a esa identidad acceso al espacio de trabajo de Playwright antes de conectar la herramienta MCP.

Creación de la conexión del proyecto

  1. Abre tu proyecto en el portal de Microsoft Foundry.
  2. Abre la experiencia de gestión del proyecto y luego selecciona Recursos conectados.
  3. Crea una conexión para un servidor MCP remoto.
  4. Introduce un nombre descriptivo de conexión, como playwright-mcp-connection.
  5. Selecciona Microsoft Entra Agent Identity como método de autenticación.
  6. Introduzca https://mcp.playwright.microsoft.com como audiencia.
  7. Guarde la conexión.

La identidad gestionada del proyecto debe tener un rol que permita operaciones de sesión de navegador en el espacio de trabajo objetivo de Playwright. No uses un token de identidad de un proyecto como secreto compartido en otro proyecto.

Si Microsoft Entra Agent Identity no está disponible para el cliente o el entorno, crea una conexión de claves personalizadas con una clave nombrada x-api-key y un token de acceso al espacio de trabajo como valor.

Añadir la herramienta MCP remota

  1. Crea o abre un agente en el portal de Foundry.

  2. Añade un servidor MCP remoto o una herramienta MCP.

  3. Use la configuración siguiente:

    Setting Value
    Etiqueta del servidor Una etiqueta única, como playwrightWorkspace
    Dirección URL del servidor El punto final remoto MCP con alcance de espacio de trabajo
    Conexión de proyecto La conexión de Microsoft Entra Agent Identity creada anteriormente
    Aprobación Exigir la aprobación de cada llamada mientras evalúas la integración
    Herramientas permitidas Empieza solo con las herramientas necesarias para el flujo
  4. Guarde la configuración del agente.

  5. En las instrucciones del agente, se requiere que el agente cree una sesión, reutilice su browserSessionId, y cierre la sesión cuando termine la tarea.

Una lista mínima de herramientas para un flujo de navegación orientado a lectura es:

create_browser_session
browser_navigate
browser_snapshot
browser_find
browser_take_screenshot
close_browser_session

Añade herramientas de interacción como browser_click o browser_type solo cuando el escenario las requiera. No lo habilites browser_evaluate ni browser_run_code por defecto.

Prueba el flujo de la fundición

Utiliza un prompt que indique el objetivo y el requisito de limpieza. Por ejemplo:

Create a browser session, open https://example.com, inspect the page snapshot,
report the main heading and destination URL, and close the browser session.
Always close the session, including when a browser step fails.

Cuando el agente solicita aprobación:

  1. Verifica que la etiqueta del servidor sea la del servidor de Playwright configurado.
  2. Revisa el nombre de la herramienta y todos los argumentos, especialmente URLs, selectores, texto, datos subidos y código.
  3. Aprueba solo la operación esperada.
  4. Verifica que la respuesta final se base en el resultado de la página.
  5. Confirma que el flujo se llama close_browser_session.

Para los campos de conexión actuales de Foundry, gestión de aprobaciones, ejemplos de SDK y límites de clientes, consulte Conectar agentes a endpoints de servidor MCP.

Note

Las llamadas de herramientas MCP no transmitidas de Foundry actualmente tienen un tiempo de espera de 100 segundos para el cliente. Algunas operaciones de Playwright tienen un tiempo de espera del lado del servicio más largo. Mantén las operaciones de Foundry centradas y divide los largos flujos de trabajo en múltiples llamadas a herramientas.

Conexión desde Visual Studio Code

Visual Studio Code puede descubrir la configuración OAuth del servidor remoto e iniciar sesión contigo con Microsoft Entra ID. La configuración solo necesita el punto de conexión con ámbito del espacio de trabajo.

  1. En Visual Studio Code, ejecuta MCP: Open User Configuration desde la Paleta de Comandos.
  2. Añade la siguiente configuración y sustituye los marcadores de posición de los extremos.
{
  "servers": {
    "playwrightWorkspace": {
      "type": "http",
      "url": "https://<region>.mcp.playwright.microsoft.com/playwrightworkspaces/<workspace-id>/mcp"
    }
  }
}
  1. Inicia el servidor desde el editor de configuración o ejecuta MCP: List Servers.
  2. Cuando se lo pida, inicia sesión con la cuenta de Microsoft Entra que tiene acceso al espacio de trabajo de Playwright.
  3. Aprueba el permiso solicitado Playwright.Mcp.Tools si tu inquilino requiere el consentimiento.
  4. Revisa la URL y la configuración del servidor, y luego confirma que confías en él.
  5. Abre el chat y selecciona Configurar herramientas. Activa solo las herramientas de dramaturgo necesarias para la tarea.
  6. Ejecuta el prompt de ejemplo de la sección anterior sobre Foundry.
  7. Revisa las confirmaciones de la herramienta y verifica que la sesión esté cerrada al final.

Utiliza una configuración de usuario cuando la conexión sea personal. Se puede compartir una configuración de espacio de trabajo que contenga solo el endpoint. Visual Studio Code almacena en caché las credenciales OAuth de forma segura y puede reutilizarlas al reconectarse.

Si la autenticación Microsoft Entra no está disponible en el entorno cliente, configura un x-api-key encabezado con una entrada protegida como se describe en las entradas de configuración MCP. Nunca pongas el valor del token de acceso del espacio de trabajo directamente en mcp.json.

Para ubicaciones de configuración, entradas secretas, confianza en servidores y diagnósticos, consulte Añadir y gestionar servidores MCP en Visual Studio Code y la referencia de configuración MCP.

Diseñar un flujo de automatización basada en agentes

Utiliza un bucle observar-actuar-verificar en lugar de pedir al agente que realice una secuencia larga sin comprobar el estado de la página.

  1. Crear: Llame a create_browser_session y conserve su browserSessionId.
  2. Navegar: Llama browser_navigate con una URL explícita y aprobada.
  3. Observa lo siguiente: Usa browser_find para una búsqueda más precisa o browser_snapshot para obtener una visión más amplia de la accesibilidad.
  4. Acción: Utiliza una referencia a una instantánea o un selector único mediante una herramienta de interacción.
  5. Espera: Usa browser_wait_for para texto esperado, texto que desaparece o una espera limitada.
  6. Verificar: Captura otra instantánea o inspecciona la actividad de la consola y la red.
  7. Gestionar bifurcaciones: Gestiona un cuadro de diálogo, cambia de pestaña o carga archivos solo cuando el estado de la página lo requiera.
  8. Captura pruebas: Llama browser_take_screenshot si un resultado visual es útil. No uses capturas de pantalla para seleccionar objetivos de acción.
  9. Limpieza: Llame a close_browser_session en una ruta de limpieza de estilo finally.

Elige objetivos de acción estable

Preferir referencias devueltas por browser_snapshot o browser_find. Describen elementos de página accesibles y reducen la dependencia del marcado específico de la implementación. Usa un selector único cuando no haya una referencia de instantánea estable disponible.

Actualiza la instantánea tras la navegación o tras una acción de cambio de página. Un objetivo devuelto anteriormente puede volverse obsoleto cuando la página vuelve a renderizarse.

Gestionar los diálogos de forma segura

Una acción puede devolver un dialog-opened resultado después de haber cambiado el estado de la página. Este resultado no es un fallo normal de acción.

  1. No repitas la acción original.
  2. Llame a browser_handle_dialog con accept establecido en true o false.
  3. En un cuadro de diálogo de solicitud, incluya promptText solo al aceptarlo.
  4. Observa la página de nuevo antes de continuar.

Gestionar fallos ambiguos

Que se agote el tiempo de espera o que la llamada se interrumpa no demuestra que una acción no haya tenido efecto. Antes de volver a intentar una operación no idempotente como un clic, envío de formularios, subida o ejecución de código:

  1. Llama a browser_snapshot, browser_find o a otra herramienta de observación si la sesión sigue disponible.
  2. Determina si el cambio de estado esperado se produjo.
  3. Inténtalo solo si repetir la acción es seguro.
  4. Si la sesión expiró, crea una nueva sesión y reinicia desde un estado de aplicación conocido.

Referencia de herramientas

Todas las herramientas del navegador requieren browserSessionId. Los límites de cadenas y colecciones que se muestran aquí son los límites actuales de previsualización.

Herramientas de sesión

Herramienta Parameters Use
create_browser_session Ninguno Crea un navegador remoto y devuelve browserSessionId y un liveViewUrl opcional.
close_browser_session browserSessionId Cierra la sesión remota del navegador. Llámelo durante la limpieza.
Herramienta Parameters Uso y comportamiento importante
browser_navigate browserSessionId, url Va a una URL. La URL puede contener hasta 16 KiB de caracteres.
browser_navigate_back browserSessionId Navega a la entrada anterior en el historial de páginas.
browser_snapshot browserSessionId; opcional target, depth, boxes Devuelve una instantánea de accesibilidad. target acepta una referencia a una instantánea o un selector único. Depth es del 1 al 100. Boxes incluye datos de cuadro delimitador cuando es compatible. El texto de la instantánea se trunca a 64 KiB y se marca como truncado.
browser_find browserSessionId, text Realiza una búsqueda de subcadenas sin distinguir entre mayúsculas y minúsculas en la captura de accesibilidad y devuelve fragmentos coincidentes. Text pueden contener hasta 4.096 caracteres.
browser_wait_for browserSessionId; Exactamente uno de text, textGone, o time Espera el texto, espera a que desaparezca el texto o espera entre 0 y 180 segundos.
browser_take_screenshot browserSessionId; opcional target, type, fullPage, scale Devuelve un PNG o un JPEG integrado. Type es png o jpeg. FullPage captura la página completa en lugar del viewport predeterminado. Scale es css o device. Usa una instantánea, no la imagen, para elegir objetivos.
browser_console_messages browserSessionId Devuelve mensajes de consola limitados capturados para la página activa.
browser_network_requests browserSessionId Devuelve información acotada de solicitudes de red capturada para la página activa.

Herramientas de interacción

Herramienta Parameters Uso y comportamiento importante
browser_click browserSessionId, target; opcional button, doubleClick, modifiers Hace clic en un objetivo. Button es left, right, o middle. Acepta hasta cinco modificadores de Alt, Control, ControlOrMeta, Meta, y Shift. No vuelva a intentar a ciegas un clic que haya agotado el tiempo de espera.
browser_type browserSessionId, target, text; opcional submit, slowly Introduce el texto en un elemento editable. Submit pulsa Enter después. Slowly escribe de forma secuencial.
browser_fill_form browserSessionId, fields Rellena de 1 a 50 campos. Cada campo contiene target, una cadena o booleano value, y opcionales name y type. Un fallo puede hacer que los campos previos queden actualizados.
browser_press_key browserSessionId, key Pulsa un descriptor clave de dramaturgo como Enter, ArrowLeft, o Control+C.
browser_select_option browserSessionId, target, values Selecciona entre 1 y 100 valores de opción. Cada valor puede contener hasta 4.096 caracteres.
browser_hover browserSessionId, target Se sitúa sobre un elemento, lo que puede mostrar menús o información sobre herramientas.
browser_handle_dialog browserSessionId, accept; opcional promptText Acepta o descarta el cuadro de diálogo del navegador que bloquea actualmente.
browser_drag browserSessionId, startTarget, endTarget Se arrastra de un elemento a otro. Ambos elementos deben resolverse en la página activa.

Pestañas, archivos y herramientas de código

Herramienta Parameters Uso y comportamiento importante
browser_tabs browserSessionId, action; opcional index, url Lista, crea, selecciona o cierra pestañas. action es list, new, select, , o close. index es necesario para select; para close, omisión significa la pestaña activa. Los índices son basados en cero.
browser_file_upload browserSessionId, files; opcional target Sube de 1 a 20 archivos codificados en base64 a través de una entrada de archivo de destino o un selector de archivos pendientes. Consulta Límites de subida de archivos.
browser_evaluate browserSessionId, function; opcional target Evalúa una función JavaScript en la página o en función de un objetivo. Puede leer o cambiar el estado de la página.
browser_run_code browserSessionId, code Ejecuta un cuerpo de función JavaScript de Playwright teniendo acceso a la página. Esta herramienta tiene el mayor privilegio y puede producir efectos secundarios arbitrarios.

Después de cada flujo de trabajo de automatización, invoca a close_browser_session con el browserSessionId activo.

Forma del campo de formulario

Cada browser_fill_form campo tiene esta forma:

{
  "target": "<snapshot-reference-or-selector>",
  "value": "<string-or-boolean>",
  "name": "<optional-display-name>",
  "type": "<optional-field-type>"
}

El valor de la cadena de un campo puede contener como máximo 100 KiB de caracteres. name puede contener como máximo 1.024 caracteres, y type puede contener como máximo 128 caracteres.

Forma de carga del archivo

Cada browser_file_upload archivo utiliza esta forma:

{
  "name": "example.txt",
  "data": "SGVsbG8sIHdvcmxkIQ==",
  "mimeType": "text/plain"
}

mimeType es opcional y el valor predeterminado es application/octet-stream.

Límites de subida de archivos

  • De 1 a 20 archivos por llamada a la herramienta.
  • Tamaño máximo decodificado de 10 MiB para cada archivo.
  • 50 MiB tamaño máximo combinado decodificado.
  • Nombre máximo de archivo de 4.096 caracteres.
  • Tipo MIME máximo de 1.024 caracteres.
  • Se requieren datos válidos de base64.

Formas de herramientas JavaScript

Para browser_evaluate, pasa una expresión de función:

() => document.title

Cuando proporcionas target, la función recibe el elemento correspondiente:

element => element.textContent

Para browser_run_code, pase instrucciones que formen el cuerpo de una función asincrónica cuyo parámetro page sea una página de Playwright. Devuelve solo datos serializables en JSON y mantenlos dentro del límite de respuesta en línea.

Warning

browser_evaluate y browser_run_code puede exponer datos de página, cambiar el estado de la aplicación y realizar solicitudes de red. browser_run_code es equivalente a la ejecución arbitraria de código dentro del entorno aislado del navegador. Desactiva estas herramientas a menos que un escenario revisado las requiera. Nunca pases secretos por código ni devuelvas datos sensibles de página a un modelo no confiable.

Límites y comportamiento actual

Limit Valor actual Acción recomendada
Sesión inactiva del navegador 15 minutos Cierra las sesiones explícitamente y crea una nueva sesión tras la expiración.
Espera solicitada 180 Segundos Prefiero las esperas basadas en estados antes que retrasos fijos.
Tiempo de espera del comando de un servicio 3 minutos 30 segundos Observa el estado de la página antes de intentar de nuevo una acción. Los tiempos de espera para los clientes pueden ser más cortos.
Respuesta en línea 1 MiB Devuelve o solicita solo los datos necesarios para el siguiente paso.
Texto de captura de accesibilidad 64 KiB Utiliza browser_find, un subárbol objetivo, o una profundidad menor cuando la salida se trunca.
Captura de pantalla en línea de datos base64 768 KiB Usa JPEG, una captura del área visible o un elemento de destino si la captura de pantalla es demasiado grande.
Parámetro de URL Caracteres de 16 KiB Utiliza una URL de destino absoluta válida.
Objetivo o selector 4096 caracteres Prefiero referencias instantáneas concisas o selectores únicos.
Función o código JavaScript 1 MiB de caracteres Mantén el código pequeño, revisado y con un alcance limitado.
ID de sesión del navegador 256 caracteres Transmite el valor devuelto por create_browser_session sin cambios.

Las respuestas se devuelven en línea. Esta vista previa no ofrece recursos MCP ni almacenamiento persistente de artefactos para instantáneas de gran tamaño, capturas de pantalla o descargas. Las redefiniciones del navegador, del sistema operativo, del área gráfica, de la configuración regional y del agente de usuario no se exponen como parámetros de creación de sesión.

Gestión de errores

Un error de herramienta incluye un código de error estable, un mensaje seguro para el cliente, un retryable valor e información de correlación. Utiliza el valor devuelto retryable como señal primaria, junto con los efectos secundarios de la operación.

Código de error Meaning Action
Unauthorized El token de acceso está ausente, inválido, caducado, deshabilitado o para otro espacio de trabajo. Verifica x-api-key, la habilitación del token de acceso del espacio de trabajo, la expiración del token y el ID del espacio de trabajo del endpoint. No lo intentes de nuevo con la misma credencial inválida.
Forbidden El propietario del token no tiene permiso, o el llamador no es dueño de la sesión. Verifica el acceso al espacio de trabajo y utiliza la misma credencial durante toda la sesión.
SessionNotFound La sesión no existe. Cree una nueva sesión.
SessionClosed La sesión se cerró. Crea una nueva sesión si se requiere más trabajo.
SessionExpired La sesión ni su conexión al navegador ya no están disponibles. Crea una nueva sesión y reinicia desde un estado conocido.
BrowserUnavailable La capacidad del navegador o el navegador remoto están temporalmente no disponibles. Reintenta la creación de la sesión tras un retraso si retryable es cierto.
DependencyUnavailable Un servicio requerido está temporalmente indisponible. Vuelve a intentarlo con retroceso exponencial si retryable es cierto.
InvalidArgument Un parámetro está ausente, está malformado, es mutuamente incompatible o está fuera de sus límites. Corregid los argumentos. No lo intentes sin cambios.
UnsupportedOperation La operación solicitada no se admite. Utiliza una herramienta o valor argumental apoyado.
OutputTooLarge El resultado supera el límite de respuesta en línea. Solicita una instantánea o resultado más pequeño. Para capturas de pantalla, usa JPEG o un objetivo más pequeño.
ToolTimeout La operación superó su plazo de servicio. Si la sesión sigue disponible, observa la página antes de decidir si quieres volver a intentarlo.
NavigationFailed La navegación no pudo completarse. Verifica la URL, la accesibilidad a la red y el comportamiento de la página. Observa la página actual antes de volver a intentarlo.
ElementNotFound El objetivo no coincidía con ningún elemento. Actualiza la instantánea y usa una referencia actual o un selector único.
ActionFailed La página rechazó o no pudo completar una acción. Inspecciona el estado de la página. El elemento puede estar oculto, deshabilitado, separado o bloqueado por un diálogo.
Busy El navegador está completando otra operación o procesando una respuesta anterior. Espera brevemente y vuelve a intentarlo solo cuando repetir la operación sea seguro.
QuotaExceeded El espacio de trabajo o la cuenta alcanzó una cuota de sesiones de navegador. Cierra las sesiones no utilizadas y revisa la cuota de espacio de trabajo.
RateLimited Las solicitudes llegan demasiado rápido. Utiliza un retroceso exponencial y reduce la concurrencia.
InternalError El servicio se encontró con un error inesperado. Inténtalo solo cuando sea necesario. Incluye el ID de correlación al contactar con soporte.

Solución de problemas comunes

El cliente MCP muestra «No autorizado»

  • Confirma que la autenticación por token de acceso está habilitada para el espacio de trabajo.
  • Confirma que el token no está caducado ni revocado.
  • Utiliza el valor sin procesar del token como el valor de x-api-key. No añadas un Bearer prefijo.
  • Confirma que el token y el endpoint pertenecen al mismo espacio de trabajo.
  • Si copiaste un secreto incorrectamente, crea un token nuevo porque no puedes recuperar valores existentes del portal.

El cliente de MCP muestra “Acceso prohibido”

  • Confirma que el usuario asociado al token aún tiene permiso para crear sesiones de navegador.
  • Utiliza la misma conexión o token de proyecto para todas las llamadas en una sesión de navegador.
  • No pases browserSessionId entre usuarios, agentes que usan diferentes credenciales o espacios de trabajo.

No se descubren herramientas

  • Verifica el endpoint completo, incluyendo /playwrightworkspaces/<workspace-id>/mcp.
  • Verifica que la región del endpoint coincida con la región del espacio de trabajo.
  • Confirma que el cliente utiliza un transporte MCP sobre HTTP y envía x-api-key en el descubrimiento y en las llamadas a herramientas.
  • En Visual Studio Code, ejecuta MCP: List Servers, selecciona el servidor y luego selecciona Mostrar salida.
  • Reinicia la conexión MCP o reinicia las herramientas almacenadas en caché después de cambiar el endpoint.

El agente no llama a una herramienta de navegador

  • Dile explícitamente al agente que use el servidor MCP configurado de Playwright.
  • Verifica que la herramienta requerida aparezca en la lista de herramientas habilitadas o permitidas del cliente.
  • Incluya el ciclo de vida de crear, usar y cerrar en las instrucciones del agente.
  • Utiliza una primera tarea enfocada con un objetivo de navegación y un resultado esperado.

Un objetivo ya no funciona

La página podría haber cambiado o haberse renderizado de nuevo. Vuelve a llamar a browser_snapshot o a browser_find y usa una referencia vigente. Evita los selectores vinculados a clases generadas o que cambien la estructura del documento.

Una herramienta con tiempo agotado

No asumas que la acción falló sin que se produjera un cambio de estado. Si la sesión está activa, inspecciona la página actual antes de volver a intentarlo. Si la sesión ha expirado, crea una nueva sesión y devuelve la solicitud a un estado conocido.

Una captura de pantalla es demasiado grande

Usa type: "jpeg", captura solo el viewport, o proporciona un objetivo para una captura de pantalla a nivel de elemento. Úsala browser_snapshot cuando el objetivo es identificar un elemento en lugar de preservar evidencia visual.

La sesión caducó durante un flujo

Crea una nueva sesión en el navegador. Las sesiones no se reconectan tras la pérdida de conexión del navegador, la pérdida del propietario del servicio, el cierre explícito o la limpieza por inactividad. Diseña el flujo para que pueda reiniciarse desde una URL y estado de aplicación conocidos.

Recomendaciones de seguridad

  • Permite solo las herramientas requeridas por la tarea del agente.
  • Requerir aprobación humana para las herramientas que modifican el estado, los archivos y el código.
  • Trata el contenido de la página, las instantáneas de accesibilidad, la salida de consola y la salida de red como algo no confiable. Una página puede contener instrucciones para inyectar solicitudes.
  • Mantén las instrucciones del sistema separadas del texto derivado de la página. No permitas que el contenido de la página cambie la política de seguridad ni las normas de aprobación.
  • Valida las URLs de destino frente a una lista de permisos al automatizar aplicaciones sensibles.
  • Revisa texto, selectores, contenido de archivos y código antes de aprobar una llamada a una herramienta.
  • No utilices tokens de acceso en indicaciones, archivos fuente, capturas de pantalla, archivos cargados ni fragmentos de JavaScript.
  • Utiliza tokens de corta duración, renuévalos periódicamente y revoca las conexiones que no se utilicen.
  • Utiliza un espacio de trabajo dedicado y una identidad de mínimo privilegio para cada límite de confianza.
  • Registra aprobaciones y nombres de herramientas para auditorías, pero no registres credenciales, contenido subido ni datos sensibles de páginas.

Disponibilidad regional

Espacios de trabajo de dramaturgo está disponible en las siguientes regiones de Azure:

Region Available
Australia East ✅ Sí
East Asia ✅ Sí
East US ✅ Sí
Japan East ✅ Sí
Switzerland North ✅ Sí
West Europe ✅ Sí
Oeste de EE. UU. 3 ✅ Sí