Playwright MCP
Playwright MCP
Un servidor del Protocolo de Contexto de Modelo (MCP) que proporciona capacidades de automatización de navegadores utilizando 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.
Playwright MCP vs Playwright CLI
Este paquete proporciona una interfaz MCP para Playwright. Si estás utilizando un agente de codificación, puede que te beneficies de usar CLI+SKILLS en su lugar.
CLI: Los agentes de codificación modernos favorecen cada vez más flujos de trabajo basados en CLI expuestos como SKILLS en lugar de MCP, porque las invocaciones de CLI son más eficientes en tokens: evitan cargar esquemas de herramientas grandes y árboles de accesibilidad verbosos en el contexto del modelo, permitiendo a los agentes actuar a través de comandos concisos y específicos. Esto hace que CLI + SKILLS sea más adecuado para agentes de codificación de alto rendimiento que deben equilibrar la automatización del navegador con grandes bases de código, pruebas y razonamiento dentro de ventanas de contexto limitadas.Más información sobre Playwright CLI con SKILLS.
MCP: MCP sigue siendo relevante para bucles agentivos especializados que se benefician de un estado persistente, introspección rica y razonamiento iterativo sobre la estructura de la página, como la automatización exploratoria, pruebas auto-curativas o flujos de trabajo autónomos de larga duración donde mantener un contexto continuo del navegador supera las preocupaciones de costo de tokens.
Características clave
Rápido y ligero. Utiliza el árbol de accesibilidad de Playwright, no la entrada basada en píxeles.
Amigable para LLM. No se necesitan modelos de visión, opera puramente con datos estructurados.
Aplicación de herramientas determinista. Evita la ambigüedad común en los enfoques basados en capturas de pantalla.
Requisitos
Node.js 18 o superior
VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie 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": [
"@playwright/mcp@latest"
]
}
}
}
Añadir a través de la pantalla de configuración de la extensión Amp de VS Code o actualizando tu archivo settings.json:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}Configuración CLI de Amp:
Añadir mediante el comando amp mcp add a continuación
amp mcp add playwright -- npx @playwright/mcp@latestAñadir a través de la configuración de Antigravity o actualizando tu archivo de configuración:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}Usa la CLI de Claude Code para añadir el servidor Playwright MCP:
claude mcp add playwright npx @playwright/mcp@latestSigue la guía de instalación de MCP, usa la configuración estándar anterior.
Sigue las instrucciones en la sección Configuring MCP Servers
Ejemplo: Configuración local
Añade lo siguiente a tu archivo cline_mcp_settings.json:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}Usa la CLI de Codex para añadir el servidor Playwright MCP:
codex mcp add playwright npx "@playwright/mcp@latest"Alternativamente, crea o edita el archivo de configuración ~/.codex/config.toml y añade:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]Para más información, consulta la documentación de MCP de Codex.
Usa la CLI de Copilot para añadir interactivamente el servidor Playwright MCP:
/mcp addAlternativamente, crea o edita el archivo de configuración ~/.copilot/mcp-config.json y añade:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}Para más información, consulta la documentación de la CLI de Copilot.
Haz clic en el botón para instalar:
O instala manualmente:
Ve a Cursor Settings -> MCP -> Add new MCP Server. Ponle un nombre a tu gusto, usa el tipo command con el comando npx @playwright/mcp@latest. También puedes verificar la configuración o añadir argumentos como comando haciendo clic en Edit.
Usa la CLI de Factory para añadir el servidor Playwright MCP:
droid mcp add playwright "npx @playwright/mcp@latest"Alternativamente, escribe /mcp dentro del droid de Factory para abrir una interfaz interactiva para gestionar servidores MCP.
Para más información, consulta la documentación de MCP de Factory.
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 un nombre a tu gusto, usa el tipo STDIO, y establece el command a npx @playwright/mcp. Haz clic en "Add Extension".
Usa la CLI de Grok para añadir el servidor Playwright MCP:
grok mcp add playwright -- npx @playwright/mcp@latestAlternativamente, crea o edita el archivo de configuración ~/.grok/config.toml y añade:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]Para más información, consulta la documentación de MCP de Grok.
Para añadir el servidor Playwright MCP en Junie CLI:
Escribe
/mcpPresiona
Ctrl+Apara añadir un nuevo servidor MCPSelecciona Playwright de la lista
Alternativamente, añade a .junie/mcp/mcp.json:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}Para más información, consulta la documentación de configuración de MCP de Junie.
Sigue la documentación de Servidores MCP. Por ejemplo, en .kiro/settings/mcp.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}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",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Abre el panel de chat de Qodo Gen en VSCode o IntelliJ → Conectar más herramientas → + Añadir 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":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'Después de la instalación, el servidor Playwright MCP estará disponible para usar con tu agente de GitHub Copilot en VS Code.
Ve a Settings -> AI -> Manage MCP Servers -> + Add para añadir un servidor MCP. Usa la configuración estándar anterior.
Alternativamente, usa el comando de barra /add-mcp en el prompt de Warp y pega la configuración estándar de arriba:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}Sigue la documentación de MCP de Windsurf. Usa la configuración estándar anterior.
Configuración
El servidor Playwright MCP soporta los siguientes argumentos. Se pueden proporcionar en la configuración JSON anterior, como parte de la lista "args":
Option | Description |
--allowed-hosts <hosts...> | lista separada por comas de hosts desde los que este servidor puede servir. Por defecto, el host al que está vinculado el servidor. Pase '*' para deshabilitar la comprobación de host.env |
--allowed-origins | lista separada por punto y coma de orígenes CONFIABLES que el navegador puede solicitar. Por defecto se permiten todos. Importante: no sirve como límite de seguridad y no afecta las redirecciones.env |
--allow-unrestricted-file-access | permite el acceso a archivos fuera de las raíces del espacio de trabajo. También permite el acceso sin restricciones a URLs file://. Por defecto, el acceso al sistema de archivos está restringido solo a los directorios raíz del espacio de trabajo (o al directorio de trabajo actual si no se configuran raíces), y la navegación a URLs file:// está bloqueada.env |
--blocked-origins | lista separada por punto y coma de orígenes que el navegador no debe solicitar. La lista de bloqueo se evalúa antes que la lista de permitidos. Si se usa sin la lista de permitidos, las solicitudes que no coincidan con la lista de bloqueo aún se permiten. Importante: no sirve como límite de seguridad y no afecta las redirecciones.env |
--block-service-workers | bloquear los service workersenv |
--browser | navegador o canal de Chrome a usar, valores posibles: chrome, firefox, webkit, msedge.env |
--caps | lista separada por comas de capacidades adicionales a habilitar, valores posibles: vision, pdf, devtools.env |
--cdp-endpoint | punto de conexión CDP al que conectarse.env |
--cdp-header <headers...> | encabezados CDP para enviar con la solicitud de conexión, se pueden especificar varios.env |
--cdp-timeout | tiempo de espera en milisegundos para conectarse al punto de conexión CDP, por defecto 30000msenv |
--codegen | especificar el idioma a usar para la generación de código, valores posibles: "typescript", "python", "java", "csharp", "none". Por defecto es "typescript".env |
--config | ruta al archivo de configuración.env |
--console-level | nivel de mensajes de consola a devolver: "error", "warning", "info", "debug". Cada nivel incluye los mensajes de niveles más graves.env |
--device | dispositivo a emular, por ejemplo: "iPhone 15"env |
--mobile | emular un dispositivo móvil genérico (Pixel 10 para Chromium, iPhone 17 para WebKit). Las páginas móviles suelen ser más ligeras, lo que ahorra tokens. No se puede combinar con --device.env |
--executable-path | ruta al ejecutable del navegador.env |
--extension | Conectarse a una instancia de navegador en ejecución (solo Edge/Chrome). Requiere que la "Playwright Extension" esté instalada.env |
--endpoint | Punto de conexión del navegador vinculado al que conectarse.env |
--grant-permissions <permissions...> | Lista de permisos a otorgar al contexto del navegador, por ejemplo "geolocation", "clipboard-read", "clipboard-write".env |
--headless | ejecutar el navegador en modo sin cabeza, con interfaz por defectoenv |
--host | host al que vincular el servidor. Por defecto es localhost. Use 0.0.0.0 para vincular a todas las interfaces.env |
--ignore-https-errors | ignorar errores HTTPSenv |
--init-page <path...> | ruta al archivo TypeScript a evaluar en el objeto page de Playwrightenv |
--init-script <path...> | ruta al archivo JavaScript para agregar como script de inicialización. El script se evaluará en cada página antes de cualquier script de la página. Se puede especificar varias veces.env |
--isolated | mantener el perfil del navegador en memoria, no guardarlo en disco.env |
--image-responses | si se deben enviar respuestas de imágenes al cliente. Puede ser "allow" u "omit". Por defecto es "allow".env |
--no-sandbox | deshabilitar el sandbox para todos los tipos de procesos que normalmente están en sandbox.env |
--output-dir | ruta al directorio para archivos de salida.env |
--output-max-size | Umbral para eliminar archivos de salida antiguos, en bytes.env |
--port | puerto para escuchar en el transporte SSE.env |
--proxy-bypass | dominios separados por comas para omitir el proxy, por ejemplo ".com,chromium.org,.domain.com"env |
--proxy-server | especificar servidor proxy, por ejemplo "http://myproxy:3128" o "socks5://myproxy:8080"env |
--sandbox | habilitar el sandbox para todos los tipos de procesos que normalmente no están en sandbox.env |
--save-session | Si se debe guardar la sesión de Playwright MCP en el directorio de salida.env |
--secrets | ruta a un archivo que contiene secretos en el formato dotenvenv |
--shared-browser-context | reutilizar el mismo contexto de navegador entre todos los clientes HTTP conectados.env |
--snapshot-boxes | incluir el cuadro delimitador de cada elemento como [box=x,y,width,height] en las instantáneas. Las coordenadas son relativas al viewport, en píxeles CSS.env |
--snapshot-mode | al tomar instantáneas para respuestas, especifica el modo a usar. Puede ser "full" o "none". Por defecto es "full".env |
--storage-state | ruta al archivo de estado de almacenamiento para sesiones aisladas.env |
--test-id-attribute | especificar el atributo a usar para los identificadores de prueba, por defecto "data-testid"env |
--timeout-action | especificar el tiempo de espera de acción en milisegundos, por defecto 5000msenv |
--timeout-navigation | especificar el tiempo de espera de navegación en milisegundos, por defecto 60000msenv |
--timeout-settle | cuánto tiempo esperar después de cada acción para que el trabajo desencadenado se estabilice, en milisegundos, por defecto 500msenv |
--user-agent | especificar la cadena de user agentenv |
--user-data-dir | ruta al directorio de datos de usuario. Si no se especifica, se creará un directorio temporal.env |
--viewport-size | especificar el tamaño del viewport del navegador en píxeles, por ejemplo "1280x720"env |
Perfil de usuario
Puede ejecutar Playwright MCP con un perfil persistente como un navegador normal (por defecto), en contextos aislados para sesiones de prueba, o conectarse a su navegador existente mediante la extensión del navegador.
Perfil persistente
Toda la información de inicio de sesión se almacenará en el perfil persistente; puede eliminarlo entre sesiones si desea borrar el estado sin conexión.
El perfil persistente se encuentra en las siguientes ubicaciones y puede anularlo con el argumento --user-data-dir.
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}{workspace-hash} se deriva de la raíz del espacio de trabajo del cliente MCP, por lo que diferentes proyectos obtienen perfiles separados automáticamente.
[!IMPORTANTE] Un perfil persistente solo puede ser utilizado por una instancia de navegador a la vez, por lo que los clientes MCP concurrentes que compartan el mismo espacio de trabajo entrarán en conflicto. Para ejecutar varios clientes en paralelo, inicie cada cliente adicional con
--isolatedo apúntelo a un--user-data-dirdistinto.
Aislado
En el modo aislado, cada sesión se inicia en el perfil aislado. Cada vez que le pide a MCP que cierre el navegador, la sesión se cierra y todo el estado de almacenamiento de esta sesión se pierde. Puede proporcionar un estado de almacenamiento inicial al navegador a través de contextOptions de la configuración o mediante el argumento --storage-state. Obtenga más información sobre el estado de almacenamiento aquí.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}Extensión del navegador
La extensión de Chrome de Playwright MCP le permite conectarse a pestañas existentes del navegador y aprovechar sus sesiones iniciadas y el estado del navegador. Consulte microsoft/playwright › packages/extension para obtener instrucciones de instalación y configuración.
Estado inicial
Hay varias formas de proporcionar el estado inicial al contexto del navegador o a una página.
Para el estado de almacenamiento, puede:
Iniciar con un directorio de datos de usuario usando el argumento
--user-data-dir. Esto persistirá todos los datos del navegador entre las sesiones.Iniciar con un archivo de estado de almacenamiento usando el argumento
--storage-state. Esto cargará cookies y almacenamiento local desde el archivo en un contexto de navegador aislado.
Para el estado de la página, puede usar:
--init-pagepara apuntar a un archivo TypeScript que se evaluará en el objeto de página de Playwright. Esto le permite ejecutar código arbitrario para configurar la página.
// init-page.ts
export default async ({ page }) => {
await page.context().grantPermissions(['geolocation']);
await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
await page.setViewportSize({ width: 1280, height: 720 });
};--init-scriptpara apuntar a un archivo JavaScript que se agregará como script de inicialización. El script se evaluará en cada página antes de cualquier script de la página. Esto es útil para anular las API del navegador o configurar el entorno.
// init-script.js
window.isPlaywrightMCP = true;Archivo de configuración
El servidor Playwright MCP se puede configurar usando un archivo de configuración JSON. Puede especificar el archivo de configuración usando la opción de línea de comandos --config:
npx @playwright/mcp@latest --config path/to/config.json{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}Servidor MCP independiente
Al ejecutar un navegador con interfaz gráfica en un sistema sin pantalla o desde procesos de trabajo de los IDE, ejecute el servidor MCP desde un entorno con DISPLAY y pase la bandera --port para habilitar el transporte HTTP.
npx @playwright/mcp@latest --port 8931Y luego en la configuración del cliente MCP, establezca la url en el punto final HTTP:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}Related MCP server: Playwright MCP Server
Seguridad
Playwright MCP no es un límite de seguridad. Consulte Prácticas recomendadas de seguridad de MCP para obtener orientación sobre cómo asegurar su implementación.
NOTA: La implementación de Docker solo admite chromium sin cabeza por el momento.
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}O si prefiere ejecutar el contenedor como un servicio de larga duración en lugar de dejar que el cliente MCP lo genere, use:
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0El servidor escuchará en el puerto 8931 del host y cualquier cliente MCP podrá acceder a él.
Puede construir la imagen de Docker usted mismo.
docker build -t mcr.microsoft.com/playwright/mcp .import http from 'http';
import { createConnection } from '@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_click
Título: Hacer clic
Descripción: Realizar un clic en una página web
Parámetros:
element(string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elementotarget(string): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento únicodoubleClick(boolean, opcional): Si se debe realizar un doble clic en lugar de un solo clicbutton(string, opcional): Botón para hacer clic, por defecto izquierdomodifiers(array, opcional): Teclas modificadoras a presionar
Solo lectura: false
browser_close
Título: Cerrar navegador
Descripción: Cerrar la página
Parámetros: Ninguno
Solo lectura: false
browser_console_messages
Título: Obtener mensajes de consola
Descripción: Devuelve todos los mensajes de consola
Parámetros:
level(string): Nivel de los mensajes de consola a devolver. Cada nivel incluye los mensajes de niveles más severos. Por defecto "info".all(boolean, opcional): Devuelve todos los mensajes de consola desde el inicio de la sesión, no solo desde la última navegación. Por defecto false.filename(string, opcional): Nombre de archivo para guardar los mensajes de consola. Si no se proporciona, los mensajes se devuelven como texto.
Solo lectura: true
browser_drag
Título: Arrastrar mouse
Descripción: Realizar arrastrar y soltar entre dos elementos
Parámetros:
startElement(string, opcional): Descripción legible del elemento de origen utilizada para obtener permiso para interactuar con el elementostartTarget(string): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento únicoendElement(string, opcional): Descripción legible del elemento de destino utilizada para obtener permiso para interactuar con el elementoendTarget(string): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento único
Solo lectura: false
browser_drop
Título: Soltar archivos o datos sobre un elemento
Descripción: Suelta archivos o datos con tipo MIME sobre un elemento, como si se arrastraran desde fuera de la página. Se debe proporcionar al menos uno de "paths" o "data".
Parámetros:
element(string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elementotarget(string): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento únicopaths(array, opcional): Rutas absolutas a los archivos para soltar sobre el elemento.data(object, opcional): Datos a soltar, como un mapa de tipo MIME a valor de cadena (por ejemplo, {"text/plain": "hello", "text/uri-list": "https://example.com"}).
Solo lectura: false
browser_evaluate
Título: Evaluar JavaScript
Descripción: Evaluar expresión JavaScript en la página o elemento
Parámetros:
element(string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elementotarget(string, opcional): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento únicofunction(string): () => { /* código / } o (element) => { / código */ } cuando se proporciona elementofilename(string, opcional): Nombre de archivo para guardar el resultado. Si no se proporciona, el resultado se devuelve como texto.
Solo lectura: false
browser_file_upload
Título: Subir archivos
Descripción: Subir uno o varios archivos
Parámetros:
paths(array, opcional): Las rutas absolutas a los archivos a subir. Puede ser un solo archivo o varios archivos. Si se omite, se cancela el selector de archivos.
Solo lectura: false
browser_fill_form
Título: Rellenar formulario
Descripción: Rellenar múltiples campos de formulario
Parámetros:
fields(array): Campos a rellenar
Solo lectura: false
browser_find
Título: Buscar en instantánea de página
Descripción: Busca en la instantánea de accesibilidad de la página actual texto o una expresión regular. Devuelve nodos de instantánea coincidentes con algunas líneas de contexto circundante (como fragmentos de búsqueda), cada uno mostrado bajo su ruta desde la raíz del árbol, lo cual es más económico que capturar toda la instantánea cuando solo necesita localizar un elemento y su referencia.
Parámetros:
text(string, opcional): Texto plano para buscar en la instantánea de la página (coincidencia de subcadena sin distinción de mayúsculas/minúsculas). Proporcione texto o regex, no ambos.regex(string, opcional): Expresión regular para buscar en la instantánea de la página. La coincidencia distingue mayúsculas/minúsculas por defecto; envuelva el patrón entre barras para agregar banderas, por ejemplo, "/error/i" para no distinguir mayúsculas/minúsculas. Proporcione texto o regex, no ambos.
Solo lectura: true
browser_handle_dialog
Título: Manejar un diálogo
Descripción: Manejar un diálogo
Parámetros:
accept(boolean): Si se debe aceptar el diálogo.promptText(string, opcional): El texto del aviso en caso de un diálogo de aviso.
Solo lectura: false
browser_hover
Título: Pasar el mouse por encima
Descripción: Pasar el mouse sobre un elemento en la página
Parámetros:
element(string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elementotarget(string): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento único
Solo lectura: false
browser_navigate
Título: Navegar a una URL
Descripción: Navegar a una URL
Parámetros:
url(string): La URL a la que navegar
Solo lectura: false
browser_navigate_back
Título: Volver atrás
Descripción: Volver a la página anterior en el historial
Parámetros: Ninguno
Solo lectura: false
browser_network_request
Título: Mostrar detalles de solicitud de red
Descripción: Devuelve los detalles completos (encabezados y cuerpo) de una sola solicitud de red, o una sola parte si se establece
part. Use el número de browser_network_requests.Parámetros:
index(integer): Índice basado en 1 de la solicitud, como se imprime en browser_network_requests.part(string, opcional): Devuelve solo esta parte de la solicitud. Omita para devolver los detalles completos.filename(string, opcional): Nombre de archivo para guardar el resultado. Si no se proporciona, la salida se devuelve como texto.
Solo lectura: true
browser_network_requests
Título: Listar solicitudes de red
Descripción: Devuelve una lista numerada de solicitudes de red desde la carga de la página. Use browser_network_request con el número para obtener los detalles completos.
Parámetros:
static(boolean): Si se deben incluir recursos estáticos exitosos como imágenes, fuentes, scripts, etc. Por defecto false.filter(string, opcional): Solo devolver solicitudes cuya URL coincida con esta expresión regular (por ejemplo, "/api/.*user").filename(string, opcional): Nombre de archivo para guardar las solicitudes de red. Si no se proporciona, las solicitudes se devuelven como texto.
Solo lectura: true
browser_press_key
Título: Presionar una tecla
Descripción: Presionar una tecla en el teclado
Parámetros:
key(string): Nombre de la tecla a presionar o un carácter a generar, comoArrowLeftoa
Solo lectura: false
browser_resize
Título: Redimensionar ventana del navegador
Descripción: Redimensionar la ventana del navegador
Parámetros:
width(number): Ancho de la ventana del navegadorheight(number): Alto de la ventana del navegador
Solo lectura: false
browser_run_code_unsafe
Título: Ejecutar código de Playwright (no seguro)
Descripción: Ejecutar un fragmento de código de Playwright. No seguro: ejecuta JavaScript arbitrario en el proceso del servidor de Playwright y es equivalente a RCE.
Parámetros:
code(string, opcional): Una función de JavaScript que contiene código de Playwright para ejecutar. Se invocará con un solo argumento, page, que puede usar para cualquier interacción con la página. Por ejemplo:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(string, opcional): Cargar código desde el archivo especificado. Si se proporcionan tanto code como filename, se ignorará code.
Solo lectura: false
browser_select_option
Título: Seleccionar opción
Descripción: Seleccionar una opción en un menú desplegable
Parámetros:
element(string, opcional): Descripción del elemento legible para humanos utilizada para obtener permiso para interactuar con el elementotarget(string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento únicovalues(array): Arreglo de valores a seleccionar en el menú desplegable. Puede ser un solo valor o múltiples valores.
Solo lectura: false
browser_snapshot
Título: Instantánea de página
Descripción: Capturar una instantánea de accesibilidad de la página actual, esto es mejor que una captura de pantalla
Parámetros:
target(string, opcional): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento únicofilename(string, opcional): Guardar la instantánea en un archivo markdown en lugar de devolverla en la respuesta.depth(number, opcional): Limitar la profundidad del árbol de instantáneasboxes(boolean, opcional): Incluir el cuadro delimitador de cada elemento como [box=x,y,width,height] en la instantánea. Las coordenadas son relativas a la ventana gráfica, en píxeles CSS (Element.getBoundingClientRect)
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. No puede realizar acciones basadas en la captura de pantalla, use browser_snapshot para acciones.
Parámetros:
element(string, opcional): Descripción del elemento legible para humanos utilizada para obtener permiso para interactuar con el elementotarget(string, opcional): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento únicotype(string, opcional): Formato de imagen para la captura de pantalla. Si no se especifica, se infiere de la extensión del archivo, de lo contrario png.filename(string, opcional): Nombre de archivo para guardar la captura de pantalla. Por defecto espage-{timestamp}.{png|jpeg|webp}si no se especifica. Prefiera nombres de archivo relativos para permanecer dentro del directorio de salida.fullPage(boolean, opcional): Cuando es verdadero, toma una captura de pantalla de la página completa desplazable, en lugar de la ventana gráfica visible actualmente. No se puede usar con capturas de pantalla de elementos.scale(string): Escala de resolución de imagen. "css" produce una captura de pantalla dimensionada en píxeles CSS (más pequeña, consistente entre dispositivos). "device" produce una captura de pantalla de alta resolución usando píxeles del dispositivo (más grande, tiene en cuenta la relación de píxeles del dispositivo). El valor predeterminado es css.
Solo lectura: true
browser_type
Título: Escribir texto
Descripción: Escribir texto en un elemento editable
Parámetros:
element(string, opcional): Descripción del elemento legible para humanos utilizada para obtener permiso para interactuar con el elementotarget(string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento únicotext(string): Texto a escribir en el elementosubmit(boolean, opcional): Si se debe enviar el texto ingresado (presionar Enter después)slowly(boolean, opcional): Si se debe escribir un carácter a la vez. Útil para activar manejadores de teclas en la página. Por defecto, todo el texto se ingresa de una vez.
Solo lectura: false
browser_wait_for
Título: Esperar
Descripción: Esperar a que aparezca o desaparezca un texto, o que transcurra un tiempo especificado
Parámetros:
time(number, opcional): El tiempo a esperar en segundostext(string, opcional): El texto a esperartextGone(string, opcional): El texto a esperar que desaparezca
Solo lectura: false
browser_tabs
Título: Gestionar pestañas
Descripción: Listar, crear, cerrar o seleccionar una pestaña del navegador.
Parámetros:
action(string): Operación a realizarindex(number, opcional): Índice de pestaña, utilizado para cerrar/seleccionar. Si se omite para cerrar, se cierra la pestaña actual.url(string, opcional): URL a navegar en la nueva pestaña, utilizado para nueva.
Solo lectura: false
browser_get_config
Título: Obtener configuración
Descripción: Obtener la configuración resuelta final después de fusionar opciones de línea de comandos, variables de entorno y archivo de configuración.
Parámetros: Ninguno
Solo lectura: true
browser_network_state_set
Título: Establecer estado de red
Descripción: Establece el estado de red del navegador en línea o fuera de línea. Cuando está fuera de línea, todas las solicitudes de red fallarán.
Parámetros:
state(string): Establecer en "offline" para simular modo fuera de línea, "online" para restaurar la conectividad de red
Solo lectura: false
browser_route
Título: Simular solicitudes de red
Descripción: Configurar una ruta para simular solicitudes de red que coincidan con un patrón de URL
Parámetros:
pattern(string): Patrón de URL a coincidir (ej., "/api/users", "/*.{png,jpg}")status(number, opcional): Código de estado HTTP a devolver (por defecto: 200)body(string, opcional): Cuerpo de la respuesta (texto o cadena JSON)contentType(string, opcional): Encabezado Content-Type (ej., "application/json", "text/html")headers(array, opcional): Encabezados a agregar en formato "Nombre: Valor"removeHeaders(string, opcional): Lista separada por comas de nombres de encabezados a eliminar de la solicitud
Solo lectura: false
browser_route_list
Título: Listar rutas de red
Descripción: Listar todas las rutas de red activas
Parámetros: Ninguno
Solo lectura: true
browser_unroute
Título: Eliminar rutas de red
Descripción: Eliminar rutas de red que coincidan con un patrón (o todas las rutas si no se especifica ningún patrón)
Parámetros:
pattern(string, opcional): Patrón de URL a desrutar (omitir para eliminar todas las rutas)
Solo lectura: false
browser_cookie_clear
Título: Limpiar cookies
Descripción: Limpiar todas las cookies
Parámetros: Ninguno
Solo lectura: false
browser_cookie_delete
Título: Eliminar cookie
Descripción: Eliminar una cookie específica
Parámetros:
name(string): Nombre de la cookie a eliminar
Solo lectura: false
browser_cookie_get
Título: Obtener cookie
Descripción: Obtener una cookie específica por nombre
Parámetros:
name(string): Nombre de la cookie a obtener
Solo lectura: true
browser_cookie_list
Título: Listar cookies
Descripción: Listar todas las cookies (opcionalmente filtradas por dominio/ruta)
Parámetros:
domain(string, opcional): Filtrar cookies por dominiopath(string, opcional): Filtrar cookies por ruta
Solo lectura: true
browser_cookie_set
Título: Establecer cookie
Descripción: Establecer una cookie con banderas opcionales (domain, path, expires, httpOnly, secure, sameSite)
Parámetros:
name(string): Nombre de la cookievalue(string): Valor de la cookiedomain(string, opcional): Dominio de la cookiepath(string, opcional): Ruta de la cookieexpires(number, opcional): Expiración de la cookie como marca de tiempo UnixhttpOnly(boolean, opcional): Si la cookie es solo HTTPsecure(boolean, opcional): Si la cookie es segurasameSite(string, opcional): Atributo SameSite de la cookie
Solo lectura: false
browser_localstorage_clear
Título: Limpiar localStorage
Descripción: Limpiar todo localStorage
Parámetros: Ninguno
Solo lectura: false
browser_localstorage_delete
Título: Eliminar elemento de localStorage
Descripción: Eliminar un elemento de localStorage
Parámetros:
key(string): Clave a eliminar
Solo lectura: false
browser_localstorage_get
Título: Obtener elemento de localStorage
Descripción: Obtener un elemento de localStorage por clave
Parámetros:
key(string): Clave a obtener
Solo lectura: true
browser_localstorage_list
Título: Listar localStorage
Descripción: Listar todos los pares clave-valor de localStorage
Parámetros: Ninguno
Solo lectura: true
browser_localstorage_set
Título: Establecer elemento de localStorage
Descripción: Establecer un elemento de localStorage
Parámetros:
key(string): Clave a establecervalue(string): Valor a establecer
Solo lectura: false
browser_sessionstorage_clear
Título: Limpiar sessionStorage
Descripción: Limpiar todo sessionStorage
Parámetros: Ninguno
Solo lectura: false
browser_sessionstorage_delete
Título: Eliminar elemento de sessionStorage
Descripción: Eliminar un elemento de sessionStorage
Parámetros:
key(string): Clave a eliminar
Solo lectura: false
browser_sessionstorage_get
Título: Obtener elemento de sessionStorage
Descripción: Obtener un elemento de sessionStorage por clave
Parámetros:
key(string): Clave a obtener
Solo lectura: true
browser_sessionstorage_list
Título: Listar sessionStorage
Descripción: Listar todos los pares clave-valor de sessionStorage
Parámetros: Ninguno
Solo lectura: true
browser_sessionstorage_set
Título: Establecer elemento de sessionStorage
Descripción: Establece un elemento de sessionStorage
Parámetros:
key(cadena): Clave a establecervalue(cadena): Valor a establecer
Solo lectura: false
browser_set_storage_state
Título: Restaurar estado de almacenamiento
Descripción: Restaura el estado de almacenamiento (cookies, almacenamiento local) desde un archivo. Esto borra las cookies y el almacenamiento local existentes antes de restaurar.
Parámetros:
filename(cadena): Ruta al archivo de estado de almacenamiento desde el cual restaurar
Solo lectura: false
browser_storage_state
Título: Guardar estado de almacenamiento
Descripción: Guarda el estado de almacenamiento (cookies, almacenamiento local) en un archivo para su reutilización posterior
Parámetros:
filename(cadena, opcional): Nombre del archivo para guardar el estado de almacenamiento. Por defecto esstorage-state-{timestamp}.jsonsi no se especifica.
Solo lectura: true
browser_annotate
Título: Anotar la página actual
Descripción: Abre el Panel de Playwright en modo de anotación para la página actual y espera a que el usuario dibuje anotaciones. Devuelve la captura de pantalla anotada, la instantánea ARIA y la lista de anotaciones.
Parámetros: Ninguno
Solo lectura: true
browser_hide_highlight
Título: Ocultar resaltado de elemento
Descripción: Elimina una superposición de resaltado añadida previamente para el elemento.
Parámetros:
element(cadena, opcional): Descripción legible del elemento utilizada al añadir el resaltado; debe coincidir con el valor pasado a browser_highlight.target(cadena, opcional): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
Solo lectura: true
browser_highlight
Título: Resaltar elemento
Descripción: Muestra una superposición de resaltado persistente alrededor del elemento en la página.
Parámetros:
element(cadena, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elementotarget(cadena): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento únicostyle(cadena, opcional): CSS en línea adicional aplicado a la superposición de resaltado, por ejemplo "outline: 2px dashed red".
Solo lectura: true
browser_resume
Título: Reanudar ejecución de script pausada
Descripción: Reanuda la ejecución del script después de que se haya pausado. Cuando se llama con step establecido en true, la ejecución se pausará de nuevo antes de la siguiente acción.
Parámetros:
step(booleano, opcional): Cuando es true, la ejecución se pausará de nuevo antes de la siguiente acción, permitiendo la depuración paso a paso.location(cadena, opcional): Pausar la ejecución en un :<línea> específico, por ejemplo "example.spec.ts:42".
Solo lectura: false
browser_start_tracing
Título: Iniciar trazado
Descripción: Iniciar grabación de trazado
Parámetros: Ninguno
Solo lectura: true
browser_start_video
Título: Iniciar video
Descripción: Iniciar grabación de video
Parámetros:
filename(cadena, opcional): Nombre del archivo para guardar el video.size(objeto, opcional): Tamaño del video
Solo lectura: true
browser_stop_tracing
Título: Detener trazado
Descripción: Detener grabación de trazado
Parámetros: Ninguno
Solo lectura: true
browser_stop_video
Título: Detener video
Descripción: Detener grabación de video
Parámetros: Ninguno
Solo lectura: true
browser_video_chapter
Título: Capítulo de video
Descripción: Añade un marcador de capítulo a la grabación de video. Muestra una tarjeta de capítulo a pantalla completa con fondo desenfocado.
Parámetros:
title(cadena): Título del capítulodescription(cadena, opcional): Descripción del capítuloduration(número, opcional): Duración en milisegundos para mostrar la tarjeta del capítulo
Solo lectura: true
browser_video_hide_actions
Título: Ocultar superposiciones de acciones
Descripción: Dejar de anotar las acciones realizadas en la página.
Parámetros: Ninguno
Solo lectura: true
browser_video_show_actions
Título: Mostrar superposiciones de acciones
Descripción: Anota las acciones posteriores realizadas en la página con un cartel que nombra la acción y resalta el elemento objetivo. Útil durante la grabación de video o la transmisión de pantalla.
Parámetros:
duration(número, opcional): Cuánto tiempo permanece cada anotación de acción en pantalla, en milisegundos. Por defecto es 500.position(cadena, opcional): Dónde colocar el título de la acción en relación con la página. Por defecto es arriba a la derecha.cursor(cadena, opcional): Decoración del cursor para acciones de puntero. "pointer" (por defecto) anima un puntero de ratón desde el punto de acción anterior al siguiente; "none" desactiva la decoración del cursor.
Solo lectura: true
browser_mouse_click_xy
Título: Hacer clic
Descripción: Hacer clic con el botón del ratón en una posición determinada
Parámetros:
x(número): Coordenada Xy(número): Coordenada Ybutton(cadena, opcional): Botón para hacer clic, por defecto es izquierdoclickCount(número, opcional): Número de clics, por defecto es 1delay(número, opcional): Tiempo de espera entre presionar y soltar el ratón en milisegundos, por defecto es 0
Solo lectura: false
browser_mouse_down
Título: Presionar ratón hacia abajo
Descripción: Presionar el botón del ratón hacia abajo
Parámetros:
button(cadena, opcional): Botón a presionar, por defecto es izquierdo
Solo lectura: false
browser_mouse_drag_xy
Título: Arrastrar ratón
Descripción: Arrastrar el botón izquierdo del ratón a una posición determinada
Parámetros:
startX(número): Coordenada X de iniciostartY(número): Coordenada Y de inicioendX(número): Coordenada X de finendY(número): Coordenada Y de fin
Solo lectura: false
browser_mouse_move_xy
Título: Mover ratón
Descripción: Mover el ratón a una posición determinada
Parámetros:
x(número): Coordenada Xy(número): Coordenada Y
Solo lectura: false
browser_mouse_up
Título: Soltar ratón
Descripción: Soltar el botón del ratón
Parámetros:
button(cadena, opcional): Botón a soltar, por defecto es izquierdo
Solo lectura: false
browser_mouse_wheel
Título: Desplazar rueda del ratón
Descripción: Desplazar la rueda del ratón
Parámetros:
deltaX(número): Delta XdeltaY(número): Delta Y
Solo lectura: false
browser_pdf_save
Título: Guardar como PDF
Descripción: Guardar página como PDF
Parámetros:
filename(cadena, opcional): Nombre del archivo para guardar el PDF. Por defecto espage-{timestamp}.pdfsi no se especifica. Prefiere nombres de archivo relativos para permanecer dentro del directorio de salida.
Solo lectura: true
browser_generate_locator
Título: Crear localizador para elemento
Descripción: Generar localizador para el elemento dado para usar en pruebas
Parámetros:
element(cadena, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elementotarget(cadena): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
Solo lectura: true
browser_verify_element_visible
Título: Verificar elemento visible
Descripción: Verificar que el elemento es visible en la página
Parámetros:
role(cadena): ROL del elemento. Se puede encontrar en la instantánea así:- {ROL} "Nombre Accesible":accessibleName(cadena): NOMBRE_ACCESIBLE del elemento. Se puede encontrar en la instantánea así:- rol "{NOMBRE_ACCESIBLE}"
Solo lectura: false
browser_verify_list_visible
Título: Verificar lista visible
Descripción: Verificar que la lista es visible en la página
Parámetros:
element(cadena): Descripción legible de la listatarget(cadena): Referencia exacta del elemento objetivo que apunta a la listaitems(matriz): Elementos a verificar
Solo lectura: false
browser_verify_text_visible
Título: Verificar texto visible
Descripción: Verificar que el texto es visible en la página. Prefiere browser_verify_element_visible si es posible.
Parámetros:
text(cadena): TEXTO a verificar. Se puede encontrar en la instantánea así:- rol "Nombre Accesible": {TEXTO}o así:- texto: {TEXTO}
Solo lectura: false
browser_verify_value
Título: Verificar valor
Descripción: Verificar el valor del elemento
Parámetros:
type(cadena): Tipo del elementoelement(cadena): Descripción legible del elementotarget(cadena): Referencia exacta del elemento objetivo desde la instantánea de la páginavalue(cadena): Valor a verificar. Para casilla de verificación, usa "true" o "false".
Solo lectura: false
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
- Alicense-qualityDmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots, providing browser automation capabilities without requiring screenshots or visually-tuned models.6Apache 2.0
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots, providing browser automation capabilities without requiring screenshots or visually tuned models.717,591Apache 2.0
- AlicenseAqualityDmaintenanceA server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or vision models.224,819,8221Apache 2.0
- Alicense-qualityDmaintenanceA Model Context Protocol server that provides browser automation capabilities by allowing LLMs to interact with web pages through structured accessibility snapshots. It enables fast, lightweight interaction with web content without the need for vision-tuned models or visual processing.Apache 2.0
Related MCP Connectors
E2LLM gives your AI eyes and hands in a real browser: structured perception (SiFR) plus action.
Live browser debugging for AI assistants — DOM, console, network via MCP.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
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/DavidG-BLW/MCP_DOCS'
If you have feedback or need assistance with the MCP directory API, please join our Discord server