Leapfrog

MCP de navegador multisesión para agentes de IA: modo sigiloso, agrupación de sesiones, humanización, 10 veces menos tokens que Playwright

Documentación

Leapfrog

Leapfrog

MCP de navegador multi-sesión para agentes de IA.
36 herramientas. 15 sesiones paralelas. Sigilo. HUD. Auto-mejora. Hasta 10 veces menos tokens.

npm i leapfrog-mcp  |  Funciona con Claude Code, Cursor, Windsurf


El Problema

Playwright MCP envía ~14,000 tokens por una página con mucho contenido como Hacker News. La mayor parte es ruido. Tu ventana de contexto se llena. Tu agente se confunde. Y tú pagas por ello.

Leapfrog envía ~1,400 tokens. Misma página. Misma información. Hasta 10 veces menos ruido.

┌─────────────────────────────────────────────────────┐
│  Playwright MCP                                     │
│  ████████████████████████████████████████  ~14,000   │
│                                                     │
│  Leapfrog                                           │
│  █████                                    ~1,400    │
└─────────────────────────────────────────────────────┘
          tokens per page (Hacker News, real test)

El ahorro varía de 2 a 10 veces según la complejidad de la página. Las páginas con mucho contenido obtienen las mayores ganancias. Los formularios densos, las menores. La mediana en sitios reales es de ~4-5x.

Inicio Rápido

npx leapfrog-mcp --doctor          # verify everything works
npx leapfrog-mcp --stealth-audit   # test all 19 stealth patches
npx leapfrog-mcp --config          # print MCP config to paste

Añádelo a ~/.mcp.json (Claude Code) o a la configuración MCP de tu editor:

{
  "leapfrog": {
    "command": "npx",
    "args": ["-y", "leapfrog-mcp"],
    "env": {
      "LEAP_MAX_SESSIONS": "15",
      "LEAP_TILE": "true",
      "LEAP_HUD": "true",
      "LEAP_AUTO_CONSENT": "true"
    }
  }
}

Leapfrog usa playwright-core (15MB) en lugar de playwright (1.6GB) y no incluye un navegador. O bien:

  • Configura LEAP_CHANNEL=chrome para usar tu Chrome/Chromium instalado (recomendado)
  • O ejecuta npx playwright-core install chromium para instalar el binario de Chromium incluido
  • O configura LEAP_CDP_ENDPOINT para conectarte a una instancia de Chrome ya en ejecución

Matriz de Funciones

LeapfrogPlaywright MCPagent-browser
Tokens por página~1,200-2,500~3,800-15,000~300
Sesiones paralelas1511
Aislamiento de sesiónNoNo
Multi-pestaña / popupsNoNo
Intercepción de redNoNo
Captura de consolaNo
Sigilo / anti-botNoNo
Espera inteligente (5 tipos)BásicaNo
Recuperación de fallosNoNo
Acciones por lotes (100/llamada)NoNo
Inyección de script de inicioNo
Arrastrar / subir / redimensionarNo
Proxy por sesiónNoNo
Humanización (opt-in)NoNo
Reutilización de perfil de autenticaciónNoNo
Persistencia de cookiesNoNo
Clasificación de páginas (18)NoNo
Memoria de sesiónNoNo
Inteligencia APINoNo
Espera adaptativa + reintento automáticoNoNo
Auto-resolución de CAPTCHANoNo
Auto-mejora (9 dimensiones)NoNo
Grabar / reproducirNoNo
Extracción de paginaciónNoNo
Instantáneas incrementales (diff)NoNo
CLI de auto-prueba de sigiloNoNo
Protección SSRFNoNo

Sigilo

Leapfrog incluye 19 parches anti-detección activados por defecto (LEAP_STEALTH=true). Cuatro modos:

  • true (por defecto) — los 19 parches activos
  • passive — elimina solo las señales de automatización (webdriver, HeadlessChrome). NO falsifica la identidad (WebGL, fuentes, audio). Mejor para sitios donde la confianza importa más que la evasión.
  • auto — el bandido EXP3 por dominio selecciona la configuración de sigilo óptima según lo que ha funcionado antes
  • false — sin parches de sigilo

Estos cubren los vectores que los servicios de fingerprinting como CreepJS y fingerprint-pro realmente verifican:

  • Marcas de Client Hints (elimina HeadlessChrome)
  • navigator.webdriver forzado a undefined
  • Proveedor/renderizador WebGL (reemplaza SwiftShader con cadenas GPU reales)
  • RTT de conexión (no cero)
  • Tiempo de descarte de alertas (retraso a velocidad humana)
  • Desplazamiento de altura exterior/interior de la ventana
  • Población de la matriz de tipos MIME
  • Inferencia de plataforma desde el user agent
  • Emulación de chrome.app
  • Protección de iframe contentWindow
  • Suplantación de códecs multimedia (canPlayType)
  • Anulación de document.hasFocus()
  • Eliminación de comentarios de URL de origen
  • Coexistencia de UA personalizado + sigilo (los user agents personalizados ya no desactivan el contexto de sigilo)
  • Detección de CDP Runtime.enable (filtro Error.prepareStackTrace)
  • Suplantación de la API de Permisos (más de 20 tipos de permisos)
  • Ruido de fingerprinting de AudioContext (getChannelData/getFloatFrequencyData)
  • Prevención de fugas de IP WebRTC (filtrado de candidatos ICE)
  • Suplantación de fingerprinting por enumeración de fuentes

Control de sigilo por sesión: pasa stealth: false en session_create para desactivarlo en una sesión específica.

Humanización (Experimental)

Configura LEAP_HUMANIZE=true para habilitar la interacción del navegador similar a la humana. Esto es opt-in y añade latencia a cambio de un comportamiento más realista. Seis módulos:

  • Mouse — Trayectorias de curvas Bezier con temporización de la Ley de Fitts y micro-temblores
  • Escritura — Retrasos log-normales entre teclas (mediana de 200ms), tiempo de pulsación, velocidad consciente de bigramas, escritura con solapamiento
  • Scroll — Simulación inercial con aceleración y decaimiento de momento (física de touchpad/rueda de ratón)
  • Pausa — Retrasos de "pensamiento" entre acciones que simulan brechas cognitivas
  • Fingerprint — Generación coherente de fingerprint del navegador (plataforma, memoria del dispositivo, GPU, zona horaria)
  • Utils — Primitivas matemáticas compartidas (gaussiana Box-Muller, distribuciones)

Clasificación de Páginas

Cada llamada a navigate y snapshot clasifica automáticamente el tipo de página mediante puntuación ponderada de señales (sin necesidad de LLM). 18 tipos:

login · search-results · product · product-list · checkout · article · dashboard · form · error · challenge · landing · documentation · profile · media · feed · qa · ecommerce · unknown

La clasificación impulsa una extracción de instantáneas más inteligente: las páginas de inicio de sesión muestran campos de formulario, los artículos muestran contenido, los paneles muestran elementos interactivos.

Inteligencia del Harness

El harness rastrea cada acción en una sesión y clasifica los resultados:

  • Clasificación de resultados de accionesSUCCESS, SILENT_CLICK, NAVIGATION, WRONG_ELEMENT, BLOCKED, ERROR, PENDING
  • Detección de redirección de bots — detecta cuando un sitio redirige a una página de desafío o bloqueo después de una acción
  • Detección de bucles — advierte cuando el agente está atascado haciendo clic en el mismo elemento, rebotando entre URLs o repitiendo acciones
  • Memoria de sesión — la herramienta session_memory recuerda acciones después de la compresión de la ventana de contexto

Persistencia de Cookies

Los perfiles de navegador persistentes ahora usan context.cookies() + addCookies() en lugar de storageState(), que devuelve vacío en contextos persistentes. El estado de autenticación sobrevive entre sesiones.

Espera Adaptativa + Escalada de Sigilo

Navigate reintenta automáticamente con estrategias de respaldo cuando las páginas no cargan:

  1. Prueba load (el más rápido) — si está vacío, reintenta con networkidle (límite de 10s)
  2. Si networkidle agota el tiempo (Amazon, sitios con muchos anuncios), recurre a domcontentloaded
  3. Si está bloqueado/desafiado, escala el sigilo: retrasos aleatorios → espera el desafío JS → rota la sesión con un fingerprint nuevo
  4. Las sesiones de perfil (autenticadas) nunca ven destruida su sesión — limitadas estrictamente al Nivel 2

Exclúyete con autoRetry: false en navigate. Controla la escalada máxima con maxRetryLevel (0-5, por defecto 3).

Grabar / Reproducir

Exporta el historial de acciones de una sesión como una grabación reproducible y luego reprodúcela en nuevas sesiones:

  • session_export — crea JSON parametrizado o script de Playwright a partir del historial de sesión. Las referencias @eN se resuelven a selectores CSS estables. Auto-detecta correos electrónicos, contraseñas y URLs como {{placeholders}}.
  • session_replay — reproduce una grabación con anulaciones de parámetros. Soporta onError: 'stop' o 'skip'.

Convierte flujos de trabajo puntuales del agente en automatizaciones reutilizables.

Extracción de Paginación

Extrae datos de múltiples páginas en una sola llamada de herramienta:

  • Click-next — auto-detecta botones "Siguiente", enlaces de paginación, botones "Cargar más"
  • Scroll infinito — desplaza y espera contenido nuevo mediante comparación de hash del DOM
  • Patrón de URL — incrementa ?page={page} o patrones personalizados

Reemplaza 3-4 llamadas de herramienta por página. Límite: 50 páginas, 100K caracteres totales. Se detiene en: sin botón siguiente, página vacía, contenido duplicado o detección de bot.

Instantáneas Incrementales

La herramienta diff devuelve solo lo que cambió desde la última instantánea: adiciones, eliminaciones, cambios. Ahorro masivo de tokens para flujos de monitoreo y sondeo.

Superposiciones HUD (LEAP_HUD=true)

Cuando se ejecuta con interfaz gráfica, Leapfrog superpone retroalimentación visual en cada sesión:

  • Onda de clic — círculo verde expansivo en las coordenadas del clic (solo acciones del agente)
  • Zoom al objetivo — el navegador hace zoom a 1.15x sobre el elemento clicado brevemente para que los agentes (y humanos) puedan rastrear visualmente lo que sucede en ventanas en mosaico
  • Scroll al objetivo — scrollIntoView antes de los clics para que puedas ver lo que el agente está a punto de hacer clic

Mínimo por diseño. Sin bordes, sin barras de estado, sin superposición de cursor: solo la retroalimentación que importa.

Mosaico Multi-Terminal (LEAP_TILE=true)

Múltiples instancias de Leapfrog comparten la pantalla mediante coordinación basada en archivos. Cada instancia rastrea sus propias ventanas y un TilesCoordinator asigna ranuras de cuadrícula globales: sin superposición, sin disposición manual. Configura LEAP_TILE=true (o LEAP_TILE=master para la instancia principal). El espaciado entre mosaicos es configurable con LEAP_TILE_PADDING (por defecto 8px).

Intervención Humana

Leapfrog auto-detecta situaciones que necesitan un humano: CAPTCHAs, formularios de inicio de sesión, redirecciones OAuth, desafíos de Cloudflare — e intenta auto-resolverlas antes de pausar.

  • Auto-resuelve primero: hace clic en casillas de reCAPTCHA, botones de verificación de Cloudflare, botones genéricos de verificar/continuar, luego un segundo intento — todo antes de pedir ayuda
  • Solucionadores externos: configura LEAP_CAPTCHA_PROVIDER + LEAP_CAPTCHA_API_KEY para la integración con CapSolver, 2Captcha o NopeCHA
  • Aprende lo que funciona: recuerda qué método de resolución funcionó por dominio y prueba primero el método conocido en la siguiente visita
  • Detecta reCAPTCHA, hCaptcha, Turnstile, formularios de inicio de sesión, redirecciones OAuth, desafíos de Cloudflare
  • El título de la pestaña cambia a "NEEDS HUMAN" cuando se necesita intervención
  • Herramienta wait_for_human — el agente la llama cuando está atascado, bloquea hasta que la resuelvas o navegues más allá

Cierre Automático de Consentimiento de Cookies (LEAP_AUTO_CONSENT=true)

Descarta automáticamente los banners de consentimiento de cookies en 10 frameworks (OneTrust, CookieBot, TrustArc, Quantcast, Didomi, Cookielaw, Osano, Usercentrics, + genérico) además de un respaldo por coincidencia de texto. Caché de selectores por dominio para reproducción instantánea en la siguiente visita.

Trazado (LEAP_TRACE=true)

Trazado de Playwright por sesión con capturas de pantalla + instantáneas DOM. Exporta archivos ZIP visibles en trace.playwright.dev mediante la herramienta session_export_trace. Se guarda automáticamente al destruir la sesión.

Auto-Mejora

Leapfrog aprende de cada visita. El conocimiento por dominio persiste en ~/.leapfrog/domains/{domain}.json — 9 dimensiones, todo automático:

#DimensiónQué hace
1Estrategias de esperaAprende el método de espera óptimo por dominio (networkidle vs domcontentloaded vs load) + promedio móvil de tiempos
2Niveles de sigiloAuto-escala 0→3 cuando se detectan bloqueos (2+ bloqueos en 1 hora). Comienza en el nivel aprendido en la siguiente visita
3Selectores de consentimientoRecuerda los selectores de descarte de banners de cookies, auto-clic en la siguiente visita
4Resolución de desafíosRegistra qué método de CAPTCHA funcionó (casilla de reCAPTCHA, verificación de Cloudflare, etc.), prueba primero el método conocido
5Supresión de elementos establesIdentifica elementos de nav/footer/sidebar vistos en 3+ visitas, los suprime de las instantáneas (30-40% de ahorro de tokens en dominios maduros)
6Sanación de selectoresRecuerda fingerprints de elementos → selectores, sana referencias rotas entre visitas
7Caché de endpoints APILos endpoints API descubiertos persisten entre sesiones
8Mapas de calor de interacciónRastrea qué elementos usan realmente los agentes, suprime elementos no tocados (próximamente)
9Selección de estrategiaBandido adversarial (EXP3) para optimización de configuración de sigilo. Usa LEAP_STEALTH=auto para habilitarlo.

Expulsión LRU en 500 dominios. Inspecciona con la herramienta domain_knowledge.

Refuerzo SSRF

La validación de URL bloquea IPs codificadas en hexadecimal (0x7f000001), notación octal (0177.0.0.1), rangos CGNAT (100.64.0.0/10) y cadenas de redirección que resuelven a direcciones internas. Localhost y 127.0.0.0/8 están permitidos por defecto para flujos de desarrollo local — establece LEAP_BLOCK_LOCALHOST=true para bloquearlos.

El ecosistema

Leapfrog utiliza metáforas de estanque para mantener las cosas memorables. Tu agente es la rana.

ConceptoTérmino LeapfrogQué significa
SesionesEstanquesContextos de navegador aislados: cookies, almacenamiento, estado
PestañasHojas de lirioDonde aterriza la rana dentro de un estanque
NavegarSaltoSaltar a una URL y obtener una instantánea compacta
InstantáneasSuperficieLo que ves en la superficie: referencias @eN interactivas
Tráfico de redOndulaciónSolicitudes HTTP que fluyen bajo la superficie
Errores de consolaCroarAlgo salió mal en el navegador
Modo sigilosoCamuflajeParches de evasión anti-bots

Los 36 herramientas

Gestión de estanques (11)

HerramientaQué hace
session_createAbrir un nuevo estanque: cookies aisladas, estado, viewport, locale, zona horaria, sigilo, proxy
session_destroyVaciar un estanque y liberar la ranura
session_listVer todos los estanques activos con URLs y tiempos de inactividad
session_save_profileGuardar el estado de autenticación en disco para futuros estanques
session_list_profilesListar perfiles de autenticación guardados
pool_statusEstadísticas del pool, memoria, tiempo de actividad
session_health¿Está sano el estanque? ¿Navegador conectado, página receptiva?
profile_listListar perfiles de navegador persistentes guardados
profile_deleteEliminar un perfil de navegador persistente guardado y sus datos
profile_import_from_chromeImportar cookies y estado de un perfil de Chrome instalado
profile_warmPrecalentar un perfil cargando URLs clave para establecer cookies/estado

Navegación e instantáneas (12)

HerramientaQué hace
navigateSaltar a una URL, devolver una instantánea @eN compacta. Espera adaptativa y escalada de sigilo integradas.
snapshotReleer la superficie (limitar con selector CSS)
diffInstantánea incremental: devuelve solo lo que cambió desde la última instantánea
actHacer clic, rellenar, escribir, marcar, seleccionar, presionar, desplazarse, pasar el cursor, mover el ratón, arrastrar, subir, redimensionar, atrás, adelante
batch_actionsHasta 100 acciones secuenciales en una sola llamada MCP: elimina la sobrecarga de ida y vuelta
paginateExtraer datos de múltiples páginas en una sola llamada (clic-siguiente, desplazamiento, patrón de URL)
add_init_scriptInyectar JS que se ejecuta antes de cada carga de página, persiste entre navegaciones
wait_forEsperar a elemento / texto / inactividad de red / navegación / expresión JS
screenshotCapturar PNG (página completa o elemento)
extractExtraer texto, HTML, título, URL o evaluar JS
session_memoryRecordar acciones realizadas en esta sesión: recupera contexto después de la compresión
session_exportExportar historial de sesión como grabación JSON reproducible o script de Playwright

Gestión de pestañas (3)

HerramientaQué hace
tabs_listListar todas las hojas en un estanque
tab_switchSaltar a otra hoja (-1 para el popup más reciente)
tab_closeCerrar una hoja (no se puede cerrar la última)

Inteligencia del agente (3)

HerramientaQué hace
wait_for_humanPausar para intervención humana: bloquea hasta que el usuario haga clic en Hecho en la superposición @..@
domain_knowledgeInspeccionar lo que Leapfrog ha aprendido sobre un dominio (estrategias de espera, niveles de sigilo, endpoints)
session_export_traceExportar un ZIP de traza de Playwright: visible en trace.playwright.dev

Inteligencia de red y API (7)

HerramientaQué hace
network_logVer tráfico HTTP: filtrar por URL, método, estado, tipo de contenido
console_logLeer la salida de la consola del navegador, filtrada por nivel
network_interceptBloquear, simular o registrar solicitudes por patrón de URL
api_discoverListar las APIs JSON que ha llamado la página, clasificadas por categoría (datos, seguimiento, autenticación, CDN, anuncios)
api_exportGenerar una especificación OpenAPI v3 a partir del tráfico de API observado
executeEjecutar un script de Playwright en un entorno aislado: reemplaza de 5 a 20 viajes de ida y vuelta MCP secuenciales
session_replayReproducir una grabación en la sesión actual con anulaciones de parámetros

Variables de entorno

VariablePredeterminadoDescripción
LEAP_MAX_SESSIONS15Máximo de sesiones concurrentes
LEAP_IDLE_TIMEOUT1800000Tiempo de espera de inactividad de sesión en ms (30 min). Establece 0 para deshabilitar.
LEAP_HEADLESStrueEstablece false para ver el navegador
LEAP_HEADEDfalseEstablece true para ver el navegador (alternativa positiva a LEAP_HEADLESS)
LEAP_CHANNEL(chromium incluido)Establece chrome para usar tu Chrome instalado
LEAP_CDP_ENDPOINT(ninguno)Conectar a una instancia de Chrome en ejecución (por ejemplo, http://localhost:9222)
LEAP_EXTENSIONS(ninguno)Rutas separadas por comas para extensiones de navegador a cargar
LEAP_ALLOW_JStruePermitir evaluación de JS en extract y wait_for
LEAP_STEALTHtrueModo sigiloso: true | passive | auto | false. Ver sección Sigilo.
LEAP_STEALTH_PROFILESfalseHabilitar parches de sigilo en sesiones de perfil (autenticadas)
LEAP_CDP_STEALTHtrueEvasión de detección de CDP (filtrado Runtime.enable)
LEAP_HUMANIZEfalseExperimental. Movimiento de ratón similar al humano, cadencia de escritura y comportamiento de desplazamiento.
LEAP_ALLOW_EXECUTEtruePermitir la herramienta execute (scripts de Playwright en espacio aislado)
LEAP_BLOCK_LOCALHOSTfalseBloquear localhost/127.x.x.x (permitido por defecto para desarrollo local)
LEAP_PROFILES_DIR~/.leapfrog/chrome-profilesDirectorio para perfiles de navegador persistentes
LEAP_TILEfalseMosaico de sesiones en una cuadrícula (true | master | false)
LEAP_TILE_PADDING8Relleno entre ventanas en mosaico (px)
LEAP_MULTI_TILEfalseCoordinación de mosaico multi-terminal entre instancias de Leapfrog
LEAP_SCREEN_WIDTH(automático)Ancho de pantalla explícito para cálculos de mosaico
LEAP_SCREEN_HEIGHT(automático)Alto de pantalla explícito para cálculos de mosaico
LEAP_HUDfalseHacer clic en onda, zoom al objetivo, desplazarse al objetivo en acciones del agente
LEAP_AUTO_CONSENTtrueCerrar automáticamente los banners de consentimiento de cookies (10 frameworks + respaldo)
LEAP_TRACEfalseTrazado de Playwright por sesión (capturas de pantalla + instantáneas DOM)
LEAP_RECORDfalseGrabación de sesión (exportación de historial de acciones)
LEAP_REBROWSERfalseHabilitar integración de Rebrowser
LEAP_AUTO_WARMfalsePrecalentar perfiles automáticamente cargando URLs clave al crear la sesión
LEAP_CAPTCHA_PROVIDER(ninguno)Resolvedor de CAPTCHA externo: capsolver | 2captcha | nopecha
LEAP_CAPTCHA_API_KEY(ninguno)Clave API para el proveedor de CAPTCHA configurado
LEAP_MAX_SESSIONS_PER_CLIENT(ninguno)Límite de pool de sesiones por cliente
LEAP_LOG_LEVELinfodebug / info / warn / error

Pruebas

 769 passing across 31 suites

Gestión de sesiones, motor de instantáneas, diferenciador de instantáneas, inteligencia de red, gestión de pestañas, seguridad, protección SSRF, parches de sigilo (19), sigilo mejorado, humanización (ratón, escritura, desplazamiento), clasificación de páginas, inteligencia de harness, inteligencia de API, ejecutor de scripts, acciones extendidas, superposiciones HUD, intervención humana, consentimiento de cookies, conocimiento de dominio, curación de selectores, elementos estables, gestor de mosaicos, regresión de errores, prueba de humo de integración, pruebas de estrés, benchmarks.

npm test

Requisitos

  • Node.js >= 20
  • Chromium: usar Chrome del sistema (LEAP_CHANNEL=chrome) o instalar mediante npx playwright-core install chromium

Licencia

MIT