firefox-devtools-mcp
Firefox DevTools MCP
Servidor del Protocolo de Contexto de Modelo (MCP) para automatizar Firefox mediante WebDriver BiDi (a través de Selenium WebDriver). Funciona con Claude Code, Claude Desktop, Cursor, Cline y otros clientes MCP.
Repositorio: https://github.com/mozilla/firefox-devtools-mcp
Nota: Este servidor MCP requiere una instalación local del navegador Firefox y no puede ejecutarse en servicios de alojamiento en la nube como glama.ai. Utilice
npx firefox-devtools-mcp@latestpara ejecutarlo localmente, o utilice Docker con el Dockerfile proporcionado.
Requisitos
Node.js ≥ 20.19.0
Firefox 100+ instalado (detectado automáticamente, o pase
--firefox-path)
Instalación y uso con Claude Code (npx)
Recomendado: utilice npx para ejecutar siempre la última versión publicada desde npm.
Opción A — CLI de Claude Code
claude mcp add firefox-devtools npx firefox-devtools-mcp@latestPase las opciones como argumentos o variables de entorno. Ejemplos:
# Headless + viewport via args
claude mcp add firefox-devtools npx firefox-devtools-mcp@latest -- --headless --viewport 1280x720
# Or via environment variables
claude mcp add firefox-devtools npx firefox-devtools-mcp@latest \
--env START_URL=https://example.com \
--env FIREFOX_HEADLESS=trueOpción B — Editar el JSON de configuración de Claude Code
Añada a su archivo de configuración de Claude Code:
macOS:
~/Library/Application Support/Claude/Code/mcp_settings.jsonLinux:
~/.config/claude/code/mcp_settings.jsonWindows:
%APPDATA%\Claude\Code\mcp_settings.json
{
"mcpServers": {
"firefox-devtools": {
"command": "npx",
"args": ["-y", "firefox-devtools-mcp@latest", "--headless", "--viewport", "1280x720"],
"env": {
"START_URL": "about:home"
}
}
}
}Opción C — Script auxiliar (compilación de desarrollo local)
npm run setup
# Choose Claude Code; the script saves JSON to the right pathPruébelo con MCP Inspector
npx @modelcontextprotocol/inspector npx firefox-devtools-mcp@latest --start-url https://example.com --headlessLuego llame a herramientas como:
list_pages,select_page,navigate_pagetake_snapshoty luegoclick_by_uid/fill_by_uidlist_network_requests(captura siempre activa),get_network_requestscreenshot_page,list_console_messages
Opciones de CLI
Puede pasar flags o variables de entorno (nombres a la derecha):
--firefox-path— ruta absoluta al binario de Firefox--headless— ejecutar sin interfaz de usuario (FIREFOX_HEADLESS=true)--viewport 1280x720— tamaño inicial de la ventana--profile-path— utilizar un perfil de Firefox específico--firefox-arg— argumentos adicionales de Firefox (repetible)--start-url— abrir esta URL al iniciar (START_URL)--accept-insecure-certs— ignorar errores TLS (ACCEPT_INSECURE_CERTS=true)--connect-existing— conectar a un Firefox ya en ejecución en lugar de iniciar uno nuevo (CONNECT_EXISTING=true)--marionette-port— puerto Marionette para el modo de conexión existente, por defecto 2828 (MARIONETTE_PORT)--pref name=value— establecer preferencias de Firefox al inicio mediantemoz:firefoxOptions(repetible)--enable-script— habilitar la herramientaevaluate_script, que ejecuta JavaScript arbitrario en el contexto de la página (ENABLE_SCRIPT=true)--enable-privileged-context— habilitar herramientas de contexto privilegiado: listar/seleccionar contextos privilegiados, evaluar scripts privilegiados, obtener/establecer preferencias de Firefox y listar extensiones. RequiereMOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1(ENABLE_PRIVILEGED_CONTEXT=true)
Nota sobre
--pref: Cuando Firefox se ejecuta en automatización, aplica RecommendedPreferences que modifican el comportamiento del navegador para las pruebas. La opción--prefpermite anular estos valores predeterminados cuando sea necesario.
Conectar a un Firefox existente
Utilice --connect-existing para automatizar su sesión de navegación real, con cookies, inicios de sesión y pestañas abiertas intactos:
# Start Firefox with Marionette enabled
firefox --marionette
# Run the MCP server
npx firefox-devtools-mcp --connect-existing --marionette-port 2828O establezca marionette.enabled en true en about:config (o user.js) para habilitar Marionette en cada inicio.
Las funciones dependientes de BiDi (eventos de consola, eventos de red) no están disponibles en el modo de conexión existente; todas las demás funciones funcionan normalmente.
Advertencia: No deje Marionette habilitado durante la navegación normal. Establece
navigator.webdriver = truey cambia otras señales de huella digital del navegador, lo que puede activar la detección de bots en sitios protegidos por Cloudflare, Akamai, etc. Solo habilite Marionette cuando necesite la automatización de MCP, luego reinicie Firefox normalmente después.
Resumen de herramientas
Páginas: listar/nueva/navegar/seleccionar/cerrar
Instantánea/UID: tomar/resolver/borrar
Entrada: clic/pasar el ratón/rellenar/arrastrar/subir/rellenar formulario
Red: listar/obtener (ID primero, filtros, captura siempre activa)
Consola: listar/borrar
Captura de pantalla: página/por uid (con
saveToopcional para entornos CLI)Script: evaluate_script
Contexto privilegiado: listar/seleccionar contextos privilegiados ("chrome"), evaluate_privileged_script (requiere
MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1)WebExtension: install_extension, uninstall_extension, list_extensions (listar requiere
MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1)Gestión de Firefox: get_firefox_info, get_firefox_output, restart_firefox, set_firefox_prefs, get_firefox_prefs
Utilidades: aceptar/descartar diálogo, historial atrás/adelante, establecer viewport
Optimización de capturas de pantalla para Claude Code
Al usar capturas de pantalla en la CLI de Claude Code, los datos de imagen en base64 pueden consumir un contexto significativo.
Utilice el parámetro saveTo para guardar las capturas de pantalla en el disco en su lugar:
screenshot_page({ saveTo: "/tmp/page.png" })
screenshot_by_uid({ uid: "abc123", saveTo: "/tmp/element.png" })El archivo puede verse con la herramienta Read de Claude Code sin afectar al tamaño del contexto.
Desarrollo local
npm install
npm run build
# Run with Inspector against local build
npx @modelcontextprotocol/inspector node dist/index.js --headless --viewport 1280x720
# Or run in dev with hot reload
npm run inspector:devPruebas
npm run test:run # all tests once (unit + integration)
npm test # watch modeConsulte docs/testing.md para obtener detalles completos sobre la ejecución de suites de pruebas específicas, la cobertura de escenarios e2e y los problemas conocidos.
Solución de problemas
Firefox no encontrado: pase
--firefox-path "/Applications/Firefox.app/Contents/MacOS/firefox"(macOS) o la ruta correcta en su sistema operativo.La primera ejecución es lenta: Selenium configura la sesión BiDi; las ejecuciones posteriores son más rápidas.
UIDs obsoletos después de la navegación: tome una instantánea nueva (
take_snapshot) antes de usar las herramientas de UID.Windows 10: Error durante el descubrimiento del servidor MCP 'firefox-devtools': Error MCP -32000: Conexión cerrada
Solución 1 Llame usando
cmd(Para más información https://github.com/modelcontextprotocol/servers/issues/1082#issuecomment-2791786310)"mcpServers": { "firefox-devtools": { "command": "cmd", "args": ["/c", "npx", "-y", "firefox-devtools-mcp@latest"] } }El cambio clave: En Windows, ejecutar un paquete de Node.js a través de
npxa menudo requiere el prefijocmd /cpara ejecutarse correctamente desde otro proceso como el host de extensiones de VSCode. Por lo tanto, se reemplazó "command": "npx" con "command": "cmd", y el comandonpxreal se movió a la matriz "args", precedido por "/c". Esta corrección permite que Windows interprete el comando correctamente e inicie el servidor.Solución 2 En lugar de otra capa de shell, puede escribir la ruta absoluta a
npx:"mcpServers": { "firefox-devtools": { "command": "C:\\nvm4w\\nodejs\\npx.ps1", "args": ["-y", "firefox-devtools-mcp@latest"] } }Nota: La ruta anterior es un ejemplo. Debe ajustarla para que coincida con la ubicación real de
npxen su máquina. Dependiendo de su configuración, la extensión del archivo podría ser.cmd,.bato.exeen lugar de.ps1. Además, asegúrese de usar barras invertidas dobles (\\) como delimitadores de ruta, según lo requerido por el formato JSON.
Versionado
API anterior a 1.0: las versiones comienzan en
0.x. Use@latestcon npx para la versión más reciente.
CI y Lanzamiento
Se incluyen GitHub Actions para CI, lanzamiento y publicación en npm. Consulte docs/ci-and-release.md para obtener detalles y los secretos requeridos.
Problemas y contribuciones
Los problemas se rastrean en Bugzilla bajo product: Developer Infrastructure, component: AI for Development.
Para preguntas y debates, únase a la sala de Matrix #firefox-devtools-mcp.
Autor
Mantenido por Mozilla.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
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/mozilla/firefox-devtools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server