Fast Playwright MCP
Fast Playwright MCP
Este servidor MCP es un fork del de Microsoft. https://github.com/microsoft/playwright-mcp
Un servidor de Model Context Protocol (MCP) que proporciona capacidades de automatización de navegador mediante Playwright. Este servidor permite a los LLM interactuar con páginas web a través de instantáneas de accesibilidad estructuradas, evitando la necesidad de capturas de pantalla o modelos ajustados visualmente.
Características clave
Rápido y ligero. Utiliza el árbol de accesibilidad de Playwright, no la entrada basada en píxeles.
Amigable con LLM. No se necesitan modelos de visión, opera puramente con datos estructurados.
Aplicación de herramientas determinista. Evita la ambigüedad común con los enfoques basados en capturas de pantalla.
Características del servidor Fast (este fork)
Optimización de tokens. Todas las herramientas admiten un parámetro
expectationpara controlar el contenido de la respuesta:includeCode: false- Suprime la generación de código de Playwright para reducir tokensincludeSnapshot: false- Omite la instantánea de la página para respuestas mínimas (reducción de tokens del 70-80%)includeConsole: false- Excluye los mensajes de consolaincludeTabs: false- Oculta la información de pestañas
Compresión de imágenes. La herramienta de captura de pantalla admite
imageOptions:format: 'jpeg'- Usa JPEG en lugar de PNGquality: 1-100- Comprime imágenes (p. ej., 50 para calidad al 50%)maxWidth: number- Redimensiona las imágenes al ancho máximo
Ejecución por lotes. Usa
browser_batch_executepara múltiples operaciones:Reducción significativa de tokens al eliminar respuestas redundantes
Configuración de expectativas por paso y global
Manejo de errores con opciones
continueOnErrorystopOnFirstError
Control de instantáneas. Limita el tamaño de la instantánea con
snapshotOptions:selector: string- Captura solo secciones específicas de la página (recomendado sobre maxLength)format: "aria"- Formato de árbol de accesibilidad para procesamiento por LLM
Detección de diferencias. Rastrea solo los cambios con
diffOptions:enabled: true- Muestra solo lo que cambió respecto al estado anterior (gran ahorro de tokens)format: "minimal"- Salida de diferencias ultracompactaPerfecto para monitorear cambios de estado durante la navegación o interacciones
Sistema de diagnóstico. Herramientas avanzadas de depuración y descubrimiento de elementos:
browser_find_elements- Encuentra elementos usando múltiples criterios de búsqueda (texto, rol, atributos)browser_diagnose- Análisis completo de la página con métricas de rendimiento y resolución de problemasManejo de errores mejorado con sugerencias de elementos alternativos
Análisis de estructura de la página (iframes, modales, métricas de accesibilidad)
Monitoreo de rendimiento con tiempo de ejecución inferior a 300 ms
Sistema de selectores mejorado. Selección unificada de elementos con múltiples estrategias:
Matrices de selectores: Todas las herramientas basadas en elementos ahora admiten múltiples selectores con respaldo automático
4 tipos de selectores:
ref: IDs de elementos generados por el sistema a partir de resultados de herramientas anteriores (máxima prioridad)role: Roles ARIA con coincidencia de texto opcional (p. ej.,{role: "button", text: "Submit"})css: Selectores CSS estándar (p. ej.,{css: "#submit-btn"})text: Búsqueda de contenido de texto con filtrado de etiquetas opcional (p. ej.,{text: "Click me", tag: "button"})
Resolución inteligente: Resolución CSS en paralelo, coincidencia de roles secuencial, respaldo automático
Manejo de múltiples coincidencias: Cuando varios elementos coinciden, devuelve una lista de candidatos para que el LLM seleccione
Inspección de HTML: Nueva herramienta
browser_inspect_htmlpara extracción inteligente de contenido con control de profundidad
Catálogo de herramientas adaptativo
La versión 0.2 usa por defecto un catálogo de inicio adaptativo de siete herramientas, reduciendo el costo fijo de contexto de MCP mientras preserva el acceso a todas las herramientas registradas.
browser_toolsbusca, habilita, deshabilita, restablece y reporta el estado del catálogo.browser_querydespacha herramientas de solo lectura validadas por esquema.browser_executedespacha herramientas de acción y destructivas validadas por esquema.Las herramientas ocultas conocidas siguen siendo directamente invocables para integraciones existentes.
--tool-profile=fullrestaura el catálogo estático completo anterior.--tool-profile=minimalexpone solo las puertas de enlace de descubrimiento y despacho.
El repositorio aplica un presupuesto de inicio serializado en CI. Ejecuta bun run benchmark:tools -- --check para inspeccionar los tamaños de perfil actuales.
Controles de seguridad e interoperabilidad
La CLI y el archivo de configuración admiten cabeceras CDP y tiempo de espera de conexión, lista blanca de hosts HTTP, límites de tamaño del directorio de salida, redacción de secretos en respuestas, tiempos de espera de acción/navegación/expectativa, un atributo de test-id personalizado y codegen: "none". El panel opcional de aplicaciones MCP sin conexión se habilita con --caps=apps.
Documentación de mantenimiento:
Requisitos
Node.js 20 o superior
VS Code, Cursor, Windsurf, Claude Desktop, Goose o cualquier otro cliente MCP
Primeros pasos
Primero, instala el servidor Playwright MCP con tu cliente.
Configuración estándar funciona en la mayoría de las herramientas:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@tontoko/fast-playwright-mcp@latest"
]
}
}
}
Usa la CLI de Claude Code para agregar el servidor Playwright MCP:
claude mcp add fast-playwright npx @tontoko/fast-playwright-mcp@latestSigue la guía de instalación de MCP, usa la configuración estándar anterior.
Haz clic en el botón para instalar:
O instala manualmente:
Ve a Cursor Settings -> MCP -> Add new MCP Server. Ponle el nombre que prefieras, usa el tipo command con el comando npx @tontoko/fast-playwright-mcp@latest. También puedes verificar la configuración o agregar argumentos como comandos haciendo clic en Edit.
Sigue la guía de instalación de MCP, usa la configuración estándar anterior.
Haz clic en el botón para instalar:
O instala manualmente:
Ve a Advanced settings -> Extensions -> Add custom extension. Ponle el nombre que prefieras, usa el tipo STDIO y establece el command a npx @tontoko/fast-playwright-mcp. Haz clic en "Add Extension".
Haz clic en el botón para instalar:
O instala manualmente:
Ve a Program en la barra lateral derecha -> Install -> Edit mcp.json. Usa la configuración estándar anterior.
Sigue la documentación de servidores MCP. Por ejemplo, en ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@tontoko/fast-playwright-mcp"
],
"enabled": true
}
}
}
Abre el panel de chat de Qodo Gen en VSCode o IntelliJ → Conectar más herramientas → + Agregar nuevo MCP → Pega la configuración estándar anterior.
Haz clic en Save.
Haz clic en el botón para instalar:
O instala manualmente:
Sigue la guía de instalación de MCP, usa la configuración estándar anterior. También puedes instalar el servidor Playwright MCP usando la CLI de VS Code:
# For VS Code
code --add-mcp '{"name":"fast-playwright","command":"npx","args":["@tontoko/fast-playwright-mcp@latest"]}'Después de la instalación, el servidor Playwright MCP estará disponible para usarse con tu agente GitHub Copilot en VS Code.
Sigue la documentación de MCP de Windsurf. Usa la configuración estándar anterior.
Archivo de configuración
El servidor Playwright MCP se puede configurar usando un archivo JSON. Puedes especificar el archivo de configuración usando la opción de línea de comandos --config:
npx @tontoko/fast-playwright-mcp@latest --config path/to/config.json{
/**
* Tool catalog profile. Adaptive is the 0.2 default; full restores the
* pre-0.2 static catalog and minimal exposes only the discovery gateways.
*/
toolProfile?: 'adaptive' | 'full' | 'minimal';
browser?: {
/**
* The browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory. By default the profile is written
* under the operating system's temporary Playwright registry directory.
*/
isolated?: boolean;
/**
* Path to the user data directory. Supplying this overrides the generated
* persistent profile location.
*/
userDataDir?: string;
/**
* Launch options passed to Playwright.
*/
launchOptions?: {
channel?: string;
executablePath?: string;
headless?: boolean;
args?: string[];
};
/**
* Browser context options passed to Playwright.
*/
contextOptions?: Record<string, unknown>;
/**
* Existing Chrome DevTools Protocol endpoint.
*/
cdpEndpoint?: string;
/**
* HTTP headers sent when connecting to the CDP endpoint.
*/
cdpHeaders?: Record<string, string>;
/**
* CDP connection timeout in milliseconds.
*/
cdpTimeout?: number;
/**
* Playwright remote browser endpoint.
*/
remoteEndpoint?: string;
};
server?: {
host?: string;
port?: number;
allowedHosts?: string[];
};
capabilities?: Array<'vision' | 'pdf' | 'apps'>;
outputDir?: string;
outputMode?: 'file' | 'stdio';
outputMaxSize?: number;
secrets?: Record<string, string>;
testIdAttribute?: string;
timeouts?: {
action?: number;
navigation?: number;
expect?: number;
};
codegen?: 'typescript' | 'none';
}Perfil de usuario
Puedes ejecutar Playwright MCP con un perfil persistente, como un navegador normal (predeterminado), en contextos aislados para sesiones de prueba, o conectarte a un navegador existente usando la extensión de navegador.
Perfil persistente
Toda la información de inicio de sesión se almacenará en el perfil persistente; puedes eliminarlo entre sesiones si deseas borrar el estado sin conexión.
El perfil persistente se ubicará en los siguientes directorios y puedes sobrescribirlo con el argumento --user-data-dir.
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-profile
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-profile
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-profileAislado
En modo aislado, cada sesión se inicia en un perfil aislado. Cada vez que le pidas a MCP cerrar el navegador, la sesión se cierra y todo el estado de almacenamiento de esta sesión se pierde. El modo aislado se puede usar para fines de prueba para garantizar que cada sesión sea independiente.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@tontoko/fast-playwright-mcp@latest",
"--isolated"
]
}
}
}Extensión de navegador
La extensión de navegador Playwright MCP te permite conectarte a pestañas de navegador existentes y aprovechar tu sesión de navegador actual y el estado autenticado. Consulta el extension/README.md para obtener instrucciones de instalación y uso.
Configuración
El servidor Playwright MCP admite los siguientes argumentos. Todos son opcionales:
> npx @tontoko/fast-playwright-mcp@latest --help
--allowed-hosts <hosts> comma-separated list of allowed HTTP Host
header values
--allowed-origins <origins> semicolon-separated list of origins to allow
the browser to request. Default is to allow
all.
--blocked-origins <origins> semicolon-separated list of origins to block
the browser from requesting. Blocklist is
evaluated before allowlist.
--block-service-workers block service workers
--browser <browser> browser or chrome channel to use: chrome,
firefox, webkit, or msedge
--caps <caps> comma-separated optional capabilities:
vision, pdf, apps
--cdp-endpoint <endpoint> CDP endpoint to connect to
--cdp-header <header...> CDP request header in Name: Value form; may
be repeated
--cdp-timeout <timeout> CDP connection timeout in milliseconds
--codegen <mode> generated code mode: typescript or none
--config <path> path to the configuration file
--device <device> device to emulate, for example: "iPhone 15"
--executable-path <path> path to the browser executable
--headless run browser in headless mode, headed by
default
--host <host> host to bind server to. Default is localhost.
Use 0.0.0.0 to bind all interfaces.
--ignore-https-errors ignore HTTPS errors
--isolated use an in-memory isolated browser profile
--image-responses <mode> whether image responses are allow or omit
--no-sandbox disable the Chromium sandbox for process
types that normally use it
--output-dir <path> directory for output files
--output-max-size <bytes> maximum output directory size in bytes; zero
disables eviction
--port <port> port to listen on for HTTP transport
--proxy-bypass <bypass> comma-separated domains to bypass the proxy
--proxy-server <proxy> proxy server URL
--save-session save the Playwright MCP session
--save-trace save the Playwright trace
--secrets <path> dotenv file containing values to redact
--storage-state <path> path to storage state for isolated sessions
--test-id-attribute <attribute> attribute used by test-id selectors
--timeout-action <timeout> default action timeout in milliseconds
--timeout-expect <timeout> default expectation timeout in milliseconds
--timeout-navigation <timeout> default navigation timeout in milliseconds
--timeout-settle <timeout> delay after browser actions before capturing
the response, in milliseconds
--tool-profile <profile> tool catalog profile: adaptive, full, or
minimal
--user-agent <ua string> browser user-agent string
--user-data-dir <path> browser user data directory
--viewport-size <size> viewport size as width,height, for example
1280,720Ejecutables de navegador personalizados (forks de Firefox y forks de Chrome/Chromium)
De forma predeterminada, Playwright lanza sus navegadores incluidos. Puedes usar un ejecutable de navegador personalizado (por ejemplo, un fork de Chromium con marca o un navegador basado en Firefox) especificando la ruta completa al ejecutable. Consulta CUSTOM_BROWSER_EXECUTABLES.md para obtener instrucciones detalladas y advertencias específicas de la plataforma.
CLI:
--browser <chromium|firefox|webkit>con--executable-path <full path>Archivo de configuración: establece
browser.launchOptions.executablePath
Ejemplos:
npx @tontoko/fast-playwright-mcp@latest --browser chromium --executable-path "/opt/google/chrome/chrome"npx @tontoko/fast-playwright-mcp@latest --browser firefox --executable-path "/opt/waterfox/waterfox"Importante: no se garantiza la compatibilidad con navegadores de terceros. Verifica el editor y el binario antes de usarlo; el servidor ejecuta directamente la ruta proporcionada. Waterfox es solo un ejemplo ilustrativo de la familia Firefox y puede que no sea compatible con los parches del protocolo Firefox que requiere Playwright.
Servidor MCP independiente
Cuando se ejecuta un navegador con interfaz gráfica en un sistema sin pantalla o desde los procesos de trabajo de los IDE,
ejecuta el servidor MCP desde un entorno con la variable DISPLAY configurada a un servidor X válido. Por ejemplo DISPLAY=:1 npx @tontoko/fast-playwright-mcp@latest --port 8931.
Docker
NOTA: La implementación de Docker solo admite chromium headless por el momento.
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}O si prefieres ejecutar el contenedor como un servicio de larga duración en lugar de dejar que el cliente MCP lo inicie, usa:
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright-mcp \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
cli.js --headless --browser chromium --no-sandbox --port 8931El servidor estará disponible en el puerto 8931 y se puede acceder a él mediante cualquier cliente MCP.
Puedes construir la imagen de Docker tú mismo.
docker build -t mcr.microsoft.com/playwright/mcp .Uso programático
import http from 'node:http';
import { createConnection } from '@tontoko/fast-playwright-mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});Herramientas
browser_batch_execute
Title: Ejecutar acciones del navegador por lotes
Description: Ejecuta múltiples acciones de navegador registradas en secuencia con una sola respuesta.
Parámetros:
steps(array): Matriz de pasos a ejecutar en secuencia. Recomendado para rellenar formularios (múltiples type→click), navegación de varios pasos, cualquier flujo de trabajo con 2 o más pasos conocidos. Ahorra un 90% de tokens en comparación con las llamadas individuales. Ejemplo: [{tool:"browser_navigate",arguments:{url:"https://example.com"}},{tool:"browser_type",arguments:{selectors:[{css:"#user"}],text:"john"}},{tool:"browser_click",arguments:{selectors:[{css:"#btn"}]}}]stopOnFirstError(boolean, optional): Detener todo el lote en el primer errorglobalExpectation(optional): Expectativa predeterminada para todos los pasos. Recomendado: {includeSnapshot:false,snapshotOptions:{selector:"#app"},diffOptions:{enabled:true}}. Anulación por paso con steps[].expectation
Solo lectura: false
browser_click
Title: Realizar clic en la página web
Description: Realizar clic en la página web
Parámetros:
selectors(array): Matriz de selectores de elementos (máx. 5). Los selectores se prueban en orden hasta que uno tiene éxito (mecanismo de respaldo). Las coincidencias múltiples provocan un error con una lista de candidatos. Compatible con: ref (prioridad más alta), CSS (#id, .class, tag), role (button, textbox, etc.), contenido de texto. Ejemplo: [{css: "#submit"}, {role: "button", text: "Submit"}] - prueba primero el ID y recurre a role+textdoubleClick(boolean, optional): Doble clic si es truebutton(string, optional): Botón del ratón (predeterminado: izquierdo)expectation(object, optional): Configuración de captura del estado de la página. Usa batch_execute para múltiples clics
Solo lectura: false
browser_close
Title: Cerrar el navegador
Description: Cerrar la página
Parámetros: Ninguno
Solo lectura: false
browser_console_messages
Title: Obtener mensajes de consola
Description: Devuelve todos los mensajes de consola
Parámetros:
consoleOptions(object, optional): undefined
Solo lectura: true
browser_diagnose
Title: Diagnosticar la página
Description: Analiza la complejidad de la página, el número de iframes, el tamaño del DOM, el estado de los modales, las estadísticas de elementos y las características de rendimiento.
Parámetros:
searchForElements(object, optional): Buscar elementos específicos e incluirlos en el informeincludePerformanceMetrics(boolean, optional): Incluir métricas de rendimiento en el informeincludeAccessibilityInfo(boolean, optional): Incluir información de accesibilidadincludeTroubleshootingSuggestions(boolean, optional): Incluir sugerencias de solución de problemasdiagnosticLevel(string, optional): Nivel de detalle del diagnóstico: none (sin diagnósticos), basic (solo crítico), standard (predeterminado), detailed (con métricas), full (toda la información)useParallelAnalysis(boolean, optional): Usar el análisis paralelo de la Fase 2 para mejorar el rendimiento y la supervisión de recursosuseUnifiedSystem(boolean, optional): Usar el sistema de diagnóstico unificado de la Fase 3 con manejo de errores y supervisión mejoradosconfigOverrides(object, optional): Anulaciones de configuración en tiempo de ejecución para el sistema de diagnósticoincludeSystemStats(boolean, optional): Incluir estadísticas del sistema unificado e información de estadoexpectation(object, optional): undefined
Solo lectura: true
browser_drag
Title: Arrastrar el ratón
Description: Realizar arrastrar y soltar entre dos elementos
Parámetros:
startSelectors(array): Selectores del elemento de origen para iniciar el arrastreendSelectors(array): Selectores del elemento de destino para finalizar el arrastreexpectation(object, optional): Estado de la página después del arrastre. Usa batch_execute para flujos de trabajo
Solo lectura: false
browser_evaluate
Title: Evaluar JavaScript
Description: Evalúa una expresión de JavaScript en la página o en un elemento y devuelve el resultado
Parámetros:
function(string): Función JS: () => {...} o (element) => {...}selectors(array, optional): Selectores de elementos opcionales. Si se proporcionan, la función recibe el elemento como parámetroexpectation(object, optional): Configuración del estado de la página. false para extracción de datos, true para cambios en el DOM
Solo lectura: false
browser_file_upload
Title: Subir archivos
Description: Sube uno o varios archivos a la entrada de archivos
Parámetros:
paths(array): Rutas absolutas para subir (array)expectation(object, optional): Configuración del estado de la página. Usa batch_execute para click→upload
Solo lectura: false
browser_find
Title: Buscar en la instantánea de la página
Description: Busca en la instantánea de accesibilidad actual y devuelve un contexto compacto de coincidencias.
Parámetros:
query(string): undefinedregex(boolean, optional): undefinedcaseSensitive(boolean, optional): undefinedmaxResults(integer, optional): undefinedcontextLines(integer, optional): undefinedexpectation(object, optional): undefined
Solo lectura: true
browser_find_elements
Title: Buscar elementos
Description: Busca elementos en la página utilizando múltiples criterios de búsqueda, como text, role, tag name o atributos. Devuelve los elementos coincidentes ordenados por confianza.
Parámetros:
searchCriteria(object): Criterios de búsqueda para encontrar elementosmaxResults(number, optional): Número máximo de resultados a devolverincludeDiagnosticInfo(boolean, optional): Incluir información de diagnóstico sobre la páginauseUnifiedSystem(boolean, optional): Usar el sistema de diagnóstico unificado para un manejo de errores mejoradoenableEnhancedDiscovery(boolean, optional): Habilitar la detección mejorada de elementos con sugerencias contextualesperformanceThreshold(number, optional): Umbral de rendimiento en milisegundos para la detección de elementosexpectation(object, optional): undefined
Solo lectura: true
browser_handle_dialog
Title: Manejar un diálogo
Description: Maneja un diálogo (alert, confirm, prompt)
Parámetros:
accept(boolean): Aceptar (true) o rechazar (false)promptText(string, optional): Texto para los diálogos promptexpectation(object, optional): Estado de la página después del diálogo. Usa batch_execute para flujos de trabajo
Solo lectura: false
browser_hover
Title: Pasar el ratón por encima
Description: Pasa el ratón por encima de un elemento de la página
Parámetros:
selectors(array): Matriz de selectores de elementos (máx. 5). Los selectores se prueban en orden hasta que uno tiene éxito (mecanismo de respaldo). Las coincidencias múltiples provocan un error con una lista de candidatos. Compatible con: ref (prioridad más alta), CSS (#id, .class, tag), role (button, textbox, etc.), contenido de texto. Ejemplo: [{css: "#submit"}, {role: "button", text: "Submit"}] - prueba primero el ID y recurre a role+textexpectation(object, optional): Estado de la página después de pasar el ratón. Usa batch_execute para hover→click
Solo lectura: false
browser_inspect_html
Title: Inspección de HTML
Description: Extrae HTML filtrado con profundidad configurable, formato de salida, límites de tamaño y truncamiento automático.
Parámetros:
selectors(array): Matriz de selectores de elementos a inspeccionardepth(number, optional): Profundidad máxima de jerarquía a extraerincludeStyles(boolean, optional): Incluir estilos CSS calculadosmaxSize(number, optional): Tamaño máximo en bytes (1KB-500KB)format(string, optional): Formato de salidaincludeAttributes(boolean, optional): Incluir atributos de los elementospreserveWhitespace(boolean, optional): Preservar los espacios en blanco en el contenidoexcludeSelector(string, optional): Selector CSS para excluir elementosincludeSuggestions(boolean, optional): Incluir sugerencias de selectores CSS en la salidaincludeChildren(boolean, optional): Incluir elementos secundarios en la extracciónoptimizeForLLM(boolean, optional): Optimizar el HTML extraído para el consumo de LLMexpectation(object, optional): Configuración del estado de la página (mínima para la inspección de HTML)
Solo lectura: true
browser_navigate
Title: Navegar a una URL
Description: Navegar a una URL
Parámetros:
url(string): La URL a la que navegarexpectation(object, optional): Estado de la página después de la navegación
Solo lectura: false
browser_navigate_back
Title: Volver a la página anterior
Description: Volver a la página anterior
Parámetros:
expectation(object, optional): Estado de la página después de volver
Solo lectura: false
browser_navigate_forward
Title: Avanzar a la página siguiente
Description: Avanzar a la página siguiente
Parámetros:
expectation(object, optional): Estado de la página después de avanzar
Solo lectura: false
browser_network_requests
Title: Listar solicitudes de red
Description: Devuelve las solicitudes de red desde la carga de la página con filtrado opcional
Parámetros:
urlPatterns(array, optional): Patrones de URL para filtrar (admite regex)excludeUrlPatterns(array, optional): Patrones de URL a excluir (tienen prioridad)statusRanges(array, optional): Rangos de códigos de estado (p. ej., [{min:200,max:299}])methods(array, optional): Métodos HTTP para filtrarmaxRequests(number, optional): Máximo de solicitudes a devolver (predeterminado: 20)newestFirst(boolean, optional): Ordenar por marca de tiempo (predeterminado: más recientes primero)
Solo lectura: true
browser_press_key
Title: Pulsar una tecla
Description: Pulsa una tecla del teclado
Parámetros:
key(string): Tecla a pulsarexpectation(object, optional): Configuración del estado de la página. Usa batch_execute para varias teclas
Solo lectura: false
browser_resize
Título: Redimensionar ventana del navegador
Descripción: Redimensionar la ventana del navegador
Parámetros:
width(número): Ancho de la ventana del navegadorheight(número): Alto de la ventana del navegadorexpectation(objeto, opcional): undefined
Solo lectura: false
browser_select_option
Título: Seleccionar opción
Descripción: Seleccionar opción en un desplegable
Parámetros:
selectors(array): Array de selectores de elementos (máx. 5). Los selectores se prueban en orden hasta que uno tiene éxito (mecanismo de respaldo). Varias coincidencias generan un error con lista de candidatos. Admite: ref (prioridad más alta), CSS (#id, .class, tag), rol (button, textbox, etc.), contenido de texto. Ejemplo: [{css: "#submit"}, {role: "button", text: "Submit"}] - intenta primero con ID, luego con rol+textovalues(array): Valores a seleccionar (array)expectation(objeto, opcional): Estado de la página tras la selección. Usa batch_execute para formularios
Solo lectura: false
browser_snapshot
Título: Instantánea de la página
Descripción: Capturar una instantánea de accesibilidad de la página actual
Parámetros:
expectation(objeto, opcional): Configuración del estado de la página
Solo lectura: true
browser_take_screenshot
Título: Tomar una captura de pantalla
Descripción: Tomar una captura de pantalla de la página actual y devolver los datos de la imagen
Parámetros:
type(cadena, opcional): Formato de imagen. Si se omite, se infiere del nombre de archivo o se usa png por defecto.filename(cadena, opcional): Nombre de archivo para guardar la captura. Por defectopage-{timestamp}.{png|jpeg|webp}si no se especifica.selectors(array, opcional): Selectores de elementos opcionales para capturas de elementos. Si no se proporcionan, se tomará una captura de la ventana gráfica.scale(cadena, opcional): Usar píxeles CSS o píxeles de dispositivo para la captura.fullPage(booleano, opcional): Si es true, captura la página completa desplazable, en lugar de la ventana gráfica visible. No se puede usar con capturas de elementos.expectation(objeto, opcional): Configuración adicional del estado de la página
Solo lectura: false
browser_type
Título: Escribir texto
Descripción: Escribir texto en un elemento editable
Parámetros:
selectors(array): Array de selectores de elementos (máx. 5) que admite selección por ref, rol, CSS o textotext(cadena): Texto a escribir en el elementosubmit(booleano, opcional): Pulsar Enter después de escribir si es trueslowly(booleano, opcional): Escribir lentamente para autocompletar si es trueexpectation(objeto, opcional): Configuración del estado de la página. Usa batch_execute para formularios
Solo lectura: false
browser_wait_for
Título: Esperar
Descripción: Esperar a que aparezca o desaparezca un texto o a que pase un tiempo especificado
Parámetros:
time(número, opcional): Tiempo de espera en segundostext(cadena, opcional): undefinedtextGone(cadena, opcional): undefinedexpectation(objeto, opcional): Estado de la página tras la espera
Solo lectura: true
browser_tab_close
Título: Cerrar una pestaña
Descripción: Cerrar una pestaña por índice o cerrar la pestaña actual
Parámetros:
index(número, opcional): Índice de la pestaña a cerrar (omitir para la actual)expectation(objeto, opcional): Estado de la página tras el cierre
Solo lectura: false
browser_tab_list
Título: Listar pestañas
Descripción: Listar las pestañas del navegador con títulos y URLs
Parámetros:
expectation(objeto, opcional): Configuración del estado de la página
Solo lectura: true
browser_tab_new
Título: Abrir una pestaña nueva
Descripción: Abrir una pestaña nueva
Parámetros:
url(cadena, opcional): URL para la pestaña nueva (opcional)expectation(objeto, opcional): Estado de la página de la pestaña nueva
Solo lectura: false
browser_tab_select
Título: Seleccionar una pestaña
Descripción: Seleccionar una pestaña por índice
Parámetros:
index(número): El índice de la pestaña a seleccionarexpectation(objeto, opcional): Estado de la página tras el cambio de pestaña
Solo lectura: false
browser_install
Título: Instalar el navegador especificado en la configuración
Descripción: Instalar el navegador especificado en la configuración. Llama a esto si recibes un error sobre que el navegador no está instalado.
Parámetros: Ninguno
Solo lectura: false
browser_mouse_click_xy
Título: Clic
Descripción: Clic en coordenadas específicas
Parámetros:
element(cadena): undefinedx(número): Coordenada X (requiere --caps=vision)y(número): Coordenada Y (requiere --caps=vision)expectation(objeto, opcional): Estado de la página tras el clic. Prefiere ref de elemento sobre coordenadas
Solo lectura: false
browser_mouse_drag_xy
Título: Arrastrar el ratón
Descripción: Arrastrar de una coordenada a otra
Parámetros:
element(cadena): undefinedstartX(número): X inicial (requiere --caps=vision)startY(número): Y inicial (requiere --caps=vision)endX(número): X finalendY(número): Y finalexpectation(objeto, opcional): Estado de la página tras el arrastre. Prefiere refs de elemento sobre coordenadas
Solo lectura: false
browser_mouse_move_xy
Título: Mover el ratón
Descripción: Mover el ratón a coordenadas. Requiere la capacidad de visión; prefiere interacciones basadas en elementos cuando sea posible.
Parámetros:
element(cadena): undefinedx(número): Coordenada Xy(número): Coordenada Yexpectation(objeto, opcional): undefined
Solo lectura: false
browser_pdf_save
Título: Guardar como PDF
Descripción: Guardar la página como PDF
Parámetros:
filename(cadena, opcional): Nombre de archivo para guardar el PDF. Si no se especifica, se usapage-{timestamp}.pdfpor defecto.
Solo lectura: false
browser_dashboard
Título: Abrir el panel del navegador
Descripción: Abrir el panel de vista previa y selección de pestañas incluido.
Parámetros: Ninguno
Solo lectura: true
Ejemplos de optimización de tokens
El Fast Server ofrece una optimización avanzada de tokens mediante controles de expectativa y ejecución por lotes:
Control básico de expectativas
{
"name": "browser_navigate",
"arguments": {
"url": "https://example.com",
"expectation": {
"includeSnapshot": false,
"includeConsole": false,
"includeTabs": false
}
}
}Opciones de expectativa
includeSnapshot(booleano, por defecto: varía según la herramienta): Incluir instantánea de accesibilidad de la páginaincludeConsole(booleano, por defecto: varía según la herramienta): Incluir mensajes de la consola del navegadorincludeDownloads(booleano, por defecto: true): Incluir información de descargasincludeTabs(booleano, por defecto: varía según la herramienta): Incluir información de pestañasincludeCode(booleano, por defecto: true): Incluir código ejecutado en la respuesta
Opciones avanzadas de instantánea
{
"name": "browser_click",
"arguments": {
"element": "Login button",
"ref": "#login-btn",
"expectation": {
"includeSnapshot": true,
"snapshotOptions": {
"selector": ".dashboard",
"maxLength": 1000,
"format": "text"
}
}
}
}Opciones de filtrado de consola
{
"name": "browser_navigate",
"arguments": {
"url": "https://example.com",
"expectation": {
"includeConsole": true,
"consoleOptions": {
"levels": ["error", "warn"],
"maxMessages": 5,
"patterns": ["^Error:"],
"removeDuplicates": true
}
}
}
}Ejecución por lotes
Ejecutar múltiples acciones del navegador en una sola solicitud con manejo optimizado de respuestas y control de errores flexible.
Ejecución básica por lotes
{
"name": "browser_batch_execute",
"arguments": {
"steps": [
{
"tool": "browser_navigate",
"arguments": { "url": "https://example.com/login" }
},
{
"tool": "browser_type",
"arguments": {
"element": "username field",
"ref": "#username",
"text": "testuser"
}
},
{
"tool": "browser_type",
"arguments": {
"element": "password field",
"ref": "#password",
"text": "password"
}
},
{
"tool": "browser_click",
"arguments": { "element": "login button", "ref": "#login-btn" }
}
]
}
}Configuración avanzada de lotes
{
"name": "browser_batch_execute",
"arguments": {
"steps": [
{
"tool": "browser_navigate",
"arguments": { "url": "https://example.com" },
"expectation": { "includeSnapshot": false },
"continueOnError": true
},
{
"tool": "browser_click",
"arguments": { "element": "button", "ref": "#submit" },
"expectation": {
"includeSnapshot": true,
"snapshotOptions": { "selector": ".result-area" }
}
}
],
"stopOnFirstError": false,
"globalExpectation": {
"includeConsole": false,
"includeTabs": false
}
}
}Opciones de manejo de errores
continueOnError(por paso): Continuar la ejecución del lote incluso si este paso fallastopOnFirstError(global): Detener todo el lote en el primer errorLa combinación flexible permite flujos de automatización robustos
Valores predeterminados específicos de cada herramienta
Cada herramienta tiene valores predeterminados optimizados según los patrones de uso típicos:
Herramientas de navegación (
browser_navigate): incluir contexto completo para verificaciónHerramientas interactivas (
browser_click,browser_type): incluir instantánea pero registro mínimoHerramientas de captura/instantánea: excluir contexto adicional
Evaluación de código: incluir salida de consola pero poca información adicional
Operaciones de espera: salida mínima para eficiencia
Beneficios de rendimiento
Reducción de tokens: 50-80% de reducción en el uso de tokens con expectativas optimizadas
Ejecución más rápida: mejora de 2-5x en velocidad con ejecución por lotes
Menor latencia: menos viajes de ida y vuelta entre cliente y servidor
Optimización de costos: menores costos de API debido al menor consumo de tokens
Detección de diferencias en respuestas
El Fast Server incluye detección automática de diferencias para rastrear cambios de manera eficiente entre ejecuciones consecutivas de herramientas:
{
"name": "browser_click",
"arguments": {
"element": "Load more button",
"ref": "#load-more",
"expectation": {
"includeSnapshot": true,
"diffOptions": {
"enabled": true,
"threshold": 0.1,
"format": "unified",
"maxDiffLines": 50,
"context": 3
}
}
}
}Beneficios de la detección de diferencias
Uso mínimo de tokens: solo se muestra el contenido cambiado en lugar de instantáneas completas
Seguimiento de cambios: detecta automáticamente qué cambió después de las acciones
Formatos flexibles: elige entre formatos de diferencias unificados, divididos o mínimos
Caché inteligente: compara con la respuesta anterior de la misma herramienta
Cuándo usar la detección de diferencias
Interacciones de UI sin navegación: clics, escritura, efectos de desplazamiento
Actualizaciones de contenido dinámico: cargar más elementos, actualizaciones en tiempo real
Interacciones con formularios: rastrear cambios mientras los usuarios completan formularios
Monitoreo selectivo: usar con selectores CSS para rastrear áreas específicas
{
"name": "browser_type",
"arguments": {
"element": "Search input",
"ref": "#search",
"text": "playwright",
"expectation": {
"includeSnapshot": true,
"snapshotOptions": {
"selector": "#search-results"
},
"diffOptions": {
"enabled": true,
"format": "minimal"
}
}
}
}Mejores prácticas
Usa ejecución por lotes para flujos de trabajo de varios pasos
Habilita la detección de diferencias para acciones sin navegación de página
Desactiva las instantáneas para pasos intermedios que no necesitan verificación
Usa instantáneas selectivas con selectores CSS para páginas grandes
Filtra los mensajes de consola solo a los niveles relevantes
Combina expectativas globales y específicas por paso para un control fino
Usa el formato de diferencias mínimo para el máximo ahorro de tokens
Ejemplos del sistema de diagnóstico
Encontrar elementos alternativos cuando los selectores fallan:
{
"name": "browser_find_elements",
"arguments": {
"searchCriteria": {
"text": "Submit",
"role": "button"
},
"maxResults": 5
}
}Generar diagnósticos completos de la página:
{
"name": "browser_diagnose",
"arguments": {
"includePerformanceMetrics": true,
"includeAccessibilityInfo": true,
"includeTroubleshootingSuggestions": true
}
}Depurar fallos de automatización con errores mejorados: Todas las herramientas proporcionan automáticamente mensajes de error mejorados con:
Sugerencias de elementos alternativos
Análisis de la estructura de la página
Consejos de solución de problemas contextuales
Información de rendimiento
Filtrado de solicitudes de red
La herramienta browser_network_requests ofrece capacidades avanzadas de filtrado para reducir el uso de tokens hasta un 80-95% al trabajar con registros de red.
Ejemplos de uso básico
// Filter API requests only
{
"name": "browser_network_requests",
"arguments": {
"urlPatterns": ["api/", "/graphql"]
}
}
// Exclude analytics and tracking
{
"name": "browser_network_requests",
"arguments": {
"excludeUrlPatterns": ["analytics", "tracking", "ads"]
}
}
// Success responses only
{
"name": "browser_network_requests",
"arguments": {
"statusRanges": [{ "min": 200, "max": 299 }]
}
}
// Recent errors only
{
"name": "browser_network_requests",
"arguments": {
"statusRanges": [{ "min": 400, "max": 599 }],
"maxRequests": 5,
"newestFirst": true
}
}Filtrado avanzado
// Complex filtering for API debugging
{
"name": "browser_network_requests",
"arguments": {
"urlPatterns": ["/api/users", "/api/posts"],
"excludeUrlPatterns": ["/api/health"],
"methods": ["GET", "POST"],
"statusRanges": [
{ "min": 200, "max": 299 },
{ "min": 400, "max": 499 }
],
"maxRequests": 10,
"newestFirst": true
}
}
// Monitor only failed requests
{
"name": "browser_network_requests",
"arguments": {
"statusRanges": [
{ "min": 400, "max": 499 },
{ "min": 500, "max": 599 }
],
"maxRequests": 3
}
}Soporte de patrones regex
{
"name": "browser_network_requests",
"arguments": {
"urlPatterns": ["^/api/v[0-9]+/users$"],
"excludeUrlPatterns": ["\\.(css|js|png)$"]
}
}Beneficios de optimización de tokens
Reducción masiva: 80-95% menos tokens para aplicaciones grandes
Depuración enfocada: ver solo la actividad de red relevante
Monitoreo de rendimiento: rastrear endpoints o patrones de error específicos
Ahorro de costos: menores costos de API debido al menor uso de tokens
Cuándo usar el filtrado de red
Depuración de API: enfocarse en endpoints y métodos específicos
Monitoreo de errores: rastrear solo solicitudes fallidas
Análisis de rendimiento: monitorear endpoints lentos o problemáticos
Aplicaciones grandes: reducir registros de red abrumadores
Gestión de tokens: mantenerse dentro de los límites de contexto del LLM
Guía de migración
El código existente sigue funcionando sin cambios. Para optimizar:
Comienza añadiendo
expectation: { includeSnapshot: false }a los pasos intermediosUsa la ejecución por lotes para secuencias de 3 o más operaciones
Ajusta gradualmente las expectativas según tus necesidades específicas
Usa herramientas de diagnóstico cuando la automatización falle o necesite depuración
Configura
--tool-profile=fullantes de actualizar cuando un cliente dependa de la respuesta estática completa detools/list.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceEnables browser automation and web interaction through structured accessibility snapshots using Playwright. Provides fast, deterministic web page interaction without requiring screenshots or vision models.4,588,713
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to perform browser automation and web page interactions using Playwright's accessibility tree instead of screenshots. Provides fast, deterministic web automation through structured data without requiring vision models.4,588,713Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides browser automation capabilities for LLMs using Playwright's accessibility tree instead of screenshots. It enables models to interact with web pages through fast, structured, and deterministic data snapshots.4,588,713Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides browser automation capabilities for LLMs using Playwright, leveraging structured accessibility snapshots to interact with web pages without needing vision models. It enables tasks like web navigation, data extraction, and automated testing through a lightweight and deterministic toolset.16Apache 2.0
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Capture screenshots, detect visual regressions between page versions, and analyze with AI.
Automate cloud browsers to navigate websites, interact with elements, and extract structured data.…
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tontoko/fast-playwright-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server