Chrome DevTools MCP pone el panel de DevTools que ya conoces delante de un agente de IA. Donde la mayoría de los servidores de navegador se centran en hacer clic y escribir, este se centra en averiguar por qué una página va lenta, qué registra en el log, qué solicita y qué guarda en memoria. Lo publica la organización ChromeDevTools en GitHub, tiene 55.670 estrellas y su licencia es Apache-2.0.
Instalamos la versión 1.13.0, publicada el 11 de noviembre de 2026, e hicimos dos cosas el 14 de noviembre de 2026: listar sus herramientas con distintas opciones a través de MCP Inspector y manejarlo con un cliente MCP pequeño para grabar una traza de rendimiento y ejecutar Lighthouse en hostedmcp.org, nuestro propio sitio. Los números de abajo salen de esas ejecuciones.
Instalación
Necesitas Node.js 20.19 o superior y Chrome. El navegador se inicia en la primera llamada a una herramienta que lo requiera, no cuando arranca el servidor.
Claude Code:
claude mcp add chrome-devtools -- npx chrome-devtools-mcp@latest --isolated --no-usage-statistics
Cursor, Claude Desktop, Windsurf y otros clientes que se configuran con JSON:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["chrome-devtools-mcp@latest", "--isolated", "--no-usage-statistics"]
}
}
}
Codex:
codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest --isolated --no-usage-statistics
Los dos flags son nuestra recomendación, no los valores por defecto. --isolated le da a cada sesión un perfil temporal; sin él, el servidor mantiene un perfil persistente en ~/.cache/chrome-devtools-mcp/chrome-profile que no se borra entre ejecuciones. --no-usage-statistics desactiva las estadísticas de uso que el servidor envía a Google de forma predeterminada. Nuestro generador de configuración escribe la misma entrada para varios clientes.
El primer prompt sugerido en el README es una buena prueba: "Check the performance of https://developers.chrome.com".
Las herramientas, contadas
tools/list en 1.13.0 devolvió 33 herramientas sin opciones, y las definiciones de herramientas sumaron 31.498 bytes. Con --slim devolvió tres: navigate, evaluate y screenshot, en 1.042 bytes.
| Grupo | Herramientas |
|---|---|
| Páginas y navegación | list_pages, new_page, select_page, close_page, navigate_page, wait_for, resize_page |
| Entrada | click, hover, drag, fill, fill_form, type_text, press_key, upload_file, handle_dialog |
| Rendimiento | performance_start_trace, performance_stop_trace, performance_analyze_insight, lighthouse_audit |
| Red | list_network_requests, get_network_request |
| Depuración | list_console_messages, get_console_message, evaluate_script, take_snapshot, take_screenshot, get_css_styles, set_logpoints, screencast_start, screencast_stop |
| Memoria | take_heapsnapshot |
| Emulación | emulate |
Cada grupo se puede desactivar con un flag como --categoryEmulation=false. Otros están desactivados hasta que los actives: mocking de red, extensiones, automatización de PWA, autenticadores WebAuthn virtuales y las herramientas que una página expone por sí misma a través de WebMCP. Activa solo lo que necesite una tarea; 31 KB de definiciones es poco en comparación con algunos servidores, pero se envía con cada solicitud.
Qué devuelve una traza
Arrancamos el servidor en modo headless, abrimos https://hostedmcp.org/ con new_page, luego llamamos a performance_start_trace con reload y autoStop activados, y por último a lighthouse_audit.
La llamada a la traza tardó unos 6 segundos y devolvió 9.436 bytes de texto. Reportó:
| Métrica | Valor |
|---|---|
| LCP | 169 ms |
| de los cuales, tiempo hasta el primer byte | 0,8 ms |
| de los cuales, retraso de renderizado | 169 ms |
| CLS | 0,00 |
Después listó los insights que encontró, cada uno con una explicación y, cuando corresponde, un ahorro estimado: desglose del LCP, solicitudes que bloquean el renderizado (25 ms de FCP y LCP), el árbol de dependencias de red, entrega de imágenes, terceros, tiempos de vida de caché y JavaScript heredado. El agente puede llamar a performance_analyze_insight sobre cualquiera de ellos para obtener el detalle. La respuesta termina con una descripción de su propio formato de árbol de llamadas, para que el modelo pueda leer los datos de flame chart que vienen a continuación.
lighthouse_audit tardó unos 7 segundos y devolvió 6.687 bytes: accesibilidad 94, buenas prácticas 100, SEO 100 y una cuarta categoría, navegación agéntica, con 67. Fallaron cuatro auditorías. La primera fue la de contraste de color: doce elementos, entre ellos la etiqueta de búsqueda de nuestra cabecera, con una ratio de 4,33 donde se exige 4,5. Así que la herramienta hizo su trabajo; tenemos algo que corregir.
Dos cosas sobre estos números. El tiempo hasta el primer byte de 0,8 ms significa que la página vino de una caché de borde en caliente; una solicitud en frío sería más lenta. Y como pasamos --no-performance-crux, la traza no reportó datos de campo de usuarios reales; por defecto, el servidor busca la URL de la página en el conjunto de datos CrUX de Google.
La trampa del pageId
Nuestra primera ejecución midió about:blank. En la 1.13.0, las herramientas de página reciben un pageId, y una sesión nueva empieza con una página en blanco como número 1. Nuestra llamada a new_page abrió el sitio como página 2 y la marcó como seleccionada, pero pasamos 1. La traza reportó obedientemente un CLS de 0 para una página vacía. Los agentes suelen llamar primero a list_pages y hacerlo bien; si una traza reporta about:blank, es por esto.
Usa tu propio Chrome
Por defecto, el servidor inicia su propio Chrome. También puede conectarse a uno que ya esté en ejecución:
--autoConnectse conecta a Chrome 144 o posterior después de que habilites la depuración remota enchrome://inspect/#remote-debugging.--browserUrl http://127.0.0.1:9222se conecta a un Chrome iniciado con--remote-debugging-port=9222.
Conectarse a tu navegador de uso diario le da al agente tus inicios de sesión, cookies y pestañas abiertas. Eso es justo lo que quieres cuando necesitas que depure una página detrás de un inicio de sesión, y el riesgo en cualquier otro momento. Usa un perfil de Chrome aparte para esto.
Privacidad y seguridad
El servidor imprime una advertencia al arrancar: "exposes content of the browser instance to the MCP clients allowing them to inspect, debug, and modify any data in the browser or DevTools". Tómatelo al pie de la letra. Hay tres valores por defecto que conviene cambiar:
- Estadísticas de uso: se envían a Google a menos que pases
--no-usage-statistics. También se desactivan cuando la variable de entornoCIestá definida. - Consultas a CrUX: las herramientas de rendimiento pueden enviar a la API CrUX de Google las URL que analizas. Usa
--no-performance-cruxpara URL internas o de staging. - Perfil: el perfil por defecto persiste. Usa
--isolateda menos que necesites conservar el estado entre sesiones.
evaluate_script ejecuta JavaScript en la página, y las páginas pueden contener texto dirigido al modelo. Aprueba tú mismo la navegación a sitios desconocidos. También nos fijamos en que la versión 1.13.0 limita la lectura y escritura de archivos, como las trazas y capturas de pantalla guardadas, a la carpeta temporal del sistema cuando el cliente no comparte las raíces de su espacio de trabajo; --allow-unrestricted-paths elimina esa restricción. Déjala activada. Más información en Seguridad en MCP.
Chrome DevTools MCP o Playwright MCP
| Chrome DevTools MCP | Playwright MCP | |
|---|---|---|
| Versión del 14 de noviembre de 2026 | 1.13.0 | 0.0.85 |
| Motor | Puppeteer | Playwright |
| Navegadores | Chrome de forma oficial | Chromium, Chrome, Edge, Firefox, WebKit |
| Herramientas por defecto | 33 | 25 |
| Puntos fuertes diferenciales | Traces, Lighthouse, heap snapshots, estilos CSS, logpoints | Snapshots de accesibilidad, compatibilidad entre navegadores, agentes de prueba |
| Telemetría | Estadísticas de uso activadas por defecto | No se indica ninguna |
Ninguno de los dos proyectos ha publicado una comparativa, así que este reparto es nuestro: Playwright MCP cuando la tarea del agente es usar el sitio, Chrome DevTools MCP cuando la tarea es entender por qué el sitio se comporta como se comporta. Ambos funcionan en paralelo; nuestra guía de Playwright MCP cubre la otra mitad.
Cuando no funciona
| Lo que ves | Causa | Solución |
|---|---|---|
pageId: expected number |
Las herramientas de página necesitan un número de página en 1.13.0 | Llama primero a list_pages o a new_page |
Un rastro de about:blank |
Se seleccionó la página equivocada | Pasa el pageId de la página que abriste |
| Lighthouse rechaza la página | No puede auditar about:blank |
Navega primero o usa el modo snapshot |
| Chrome no arranca | No hay Chrome, o no hay pantalla para un navegador con interfaz | Instala Chrome; añade --headless en servidores |
--autoConnect no encuentra nada |
La depuración remota no está habilitada, o Chrome es anterior a la 144 | Habilítala en chrome://inspect/#remote-debugging |
| El rastro guardado no está donde esperas | El cliente no compartió las raíces del workspace | Los archivos van a la carpeta temporal; búscalos ahí |
| Los inicios de sesión de ayer siguen ahí | Perfil predeterminado persistente | Usa --isolated |
Los servidores de Chrome DevTools de nuestro catálogo, con sus puntuaciones de checks, aparecen al principio de esta página.