EnginesMotores ToolsHerramientas SearchBúsqueda RecordingGrabación NetworkRed SecuritySeguridad ArchitectureArquitectura Get Started Comenzar
🌐 Browser Automation MCP Server — 29 Tools 🌐 Servidor MCP de Automatización de Navegador — 29 Herramientas

Your AI agent's window to the web La ventana al web de tu agente IA

Give AI agents full browser control — navigate, click, type, search, screenshot, record, and intercept network traffic. Dual engine, framework-aware, stealth-ready. Dale a tus agentes IA control total del navegador — navegar, hacer clic, escribir, buscar, capturar pantalla, grabar e interceptar tráfico de red. Doble motor, compatible con frameworks, listo para stealth.

Get Started Comenzar
29
MCP ToolsHerramientas MCP
4
Search StrategiesEstrategias de Búsqueda
2
Browser EnginesMotores de Navegador
10
ResourcesRecursos
⚡ Dual Engine ⚡ Doble Motor

Two engines, one interface Dos motores, una interfaz

Switch between Playwright and Puppeteer per session. Same tools, same API — different superpowers. Cambia entre Playwright y Puppeteer por sesión. Mismas herramientas, misma API — distintos superpoderes.

Playwright

Modern & Reliable Moderno y Confiable

  • Default engine — battle-testedMotor por defecto — probado en batalla
  • Auto-waiting for elementsEspera automática de elementos
  • Chromium / Firefox / WebKitChromium / Firefox / WebKit
  • Built-in network interceptionIntercepción de red integrada
  • Tracing & debugging toolsHerramientas de trazado y depuración
Puppeteer

Stealth & Speed Stealth y Velocidad

  • Stealth mode — anti-bot bypassModo stealth — evasión anti-bot
  • Removes automation markersElimina marcadores de automatización
  • CDP access for advanced opsAcceso CDP para operaciones avanzadas
  • Faster startup, lower memoryInicio más rápido, menor memoria
  • Custom user agent supportSoporte de user agent personalizado
BrowserEngine interface
interface BrowserEngine { launch(options: LaunchOptions): Promise<void>; newPage(): Promise<Page>; navigate(url: string): Promise<void>; click(selector: string): Promise<void>; type(selector: string, text: string): Promise<void>; screenshot(): Promise<Buffer>; close(): Promise<void>; } // Both engines implement the same interface // Switch at session creation — zero code changes
🛠️ 29 MCP Tools 🛠️ 29 Herramientas MCP

Everything an AI agent needs Todo lo que un agente IA necesita

Organized by category. Each tool follows the MCP specification with full JSON Schema validation. Organizadas por categoría. Cada herramienta sigue la especificación MCP con validación JSON Schema completa.

🖥️ Session & Tab 4
  • create_session
  • launch_tab
  • close_tab
  • get_current_url
🧭 Navigation 1
  • navigate

waitUntil: load, domcontentloaded, networkidle waitUntil: load, domcontentloaded, networkidle

👆 Element InteractionInteracción 8
  • click_element
  • click_coordinates
  • input_text
  • hover
  • scroll
  • press_key
  • get_element_content
  • upload_file
📝 Form ControlsFormularios 3
  • select_dropdown
  • set_checkbox
  • select_radio
Wait OperationsOperaciones de Espera 3
  • wait_for_element
  • wait
  • wait_for_element_value
🔍 Search & DiscoveryBúsqueda 5
  • find_by_text
  • find_by_label
  • find_near
  • query_dom
  • find_in_area
📸 Capture 1
  • take_snapshot
🎬 Recording 4
  • start_recording
  • stop_recording
  • list_user_recordings
  • get_user_recording
🔄 Replay 1
  • replay_user_recording
Agent automating a login flowAgente automatizando un flujo de login
// 1. Create a session with Playwright create_session({ "engine": "playwright" }) // 2. Navigate to the login page navigate({ "url": "https://app.example.com/login" }) // 3. Find and fill the email field by label find_by_label({ "labelText": "Email" }) input_text({ "xpath": "//input[@id='email']", "text": "agent@company.com" }) // 4. Find password field and type find_by_label({ "labelText": "Password" }) input_text({ "xpath": "//input[@id='password']", "text": "••••••••" }) // 5. Click the submit button click_element({ "xpath": "//button[@type='submit']" }) // 6. Wait for navigation and take a screenshot wait_for_element({ "xpath": "//div[@class='dashboard']" }) take_snapshot({ "fullPage": true })
⚛️ Framework-Aware ⚛️ Compatible con Frameworks

Clicks that actually work Clics que realmente funcionan

React, Vue, Svelte, and Angular use synthetic event systems. Native clicks often fail silently. forceJsClick solves this. React, Vue, Svelte y Angular usan sistemas de eventos sintéticos. Los clics nativos frecuentemente fallan silenciosamente. forceJsClick resuelve esto.

❌ Native Click (sometimes fails) ❌ Clic Nativo (a veces falla)

  • Dispatches OS-level click eventDespacha evento de clic a nivel OS
  • React/Vue may not catch itReact/Vue puede no capturarlo
  • Overlapping elements interceptElementos superpuestos interceptan
  • Shadow DOM boundaries block itLímites del Shadow DOM lo bloquean

✅ forceJsClick (always works) ✅ forceJsClick (siempre funciona)

  • Dispatches: mousedown → mouseup → clickDespacha: mousedown → mouseup → click
  • Full event properties (bubbles, coords)Propiedades completas del evento (bubbles, coords)
  • Works with all JS frameworksFunciona con todos los frameworks JS
  • XPath + coordinate-based supportSoporte XPath + basado en coordenadas
forceJsClick in action
// Standard click — may fail on React buttons click_element({ "xpath": "//button[@data-testid='checkout']" }) // Force JS click — dispatches full event sequence click_element({ "xpath": "//button[@data-testid='checkout']", "forceJsClick": true }) // → mousedown(bubbles:true, clientX, clientY) // → mouseup(bubbles:true, clientX, clientY) // → click(bubbles:true, clientX, clientY)
🎬 Dual Recording 🎬 Grabación Dual

Record, replay, automate Grabar, reproducir, automatizar

Two recording modes: agent-driven (automatic) and user-driven (Chrome Extension). Both output Chrome Recorder JSON. Dos modos de grabación: impulsado por agente (automático) e impulsado por usuario (Extensión Chrome). Ambos generan JSON de Chrome Recorder.

Agent-DrivenPor Agente

Automatic Capture Captura Automática

  • start_recording → actions → stop_recordingstart_recording → acciones → stop_recording
  • All MCP tool actions auto-capturedTodas las acciones MCP se capturan automáticamente
  • Output: Chrome Recorder JSONSalida: Chrome Recorder JSON
  • Events: navigate, click, change, keyDown, scroll, waitEventos: navigate, click, change, keyDown, scroll, wait
User-DrivenPor Usuario

Chrome Extension Extensión de Chrome

  • Install extension, set server URL + API keyInstalar extensión, configurar URL del servidor + API key
  • Click Start Recording in popupClic en Iniciar Grabación en el popup
  • Interact with the page normallyInteractúa con la página normalmente
  • Upload to server — AI can replaySube al servidor — la IA puede reproducir
Chrome Recorder JSON output
{ "title": "Login Flow Recording", "steps": [ { "type": "navigate", "url": "https://app.example.com/login" }, { "type": "click", "selectors": [["#email"]] }, { "type": "change", "selectors": [["#email"]], "value": "user@co.com" }, { "type": "click", "selectors": [["#password"]] }, { "type": "change", "selectors": [["#password"]], "value": "••••••" }, { "type": "click", "selectors": [["button[type=submit]"]] }, { "type": "waitForElement", "selectors": [[".dashboard"]] } ] }
🌐 Network Layer 🌐 Capa de Red

Network Capture & HAR Export Captura de Red y Exportación HAR

Log, block, modify, and mock network requests. Export to HAR 1.2 format — compatible with Chrome DevTools and Charles Proxy. Registra, bloquea, modifica y simula solicitudes de red. Exporta a formato HAR 1.2 — compatible con Chrome DevTools y Charles Proxy.

📋

Logging

Capture all requests and responses with headers, timing, and body content. Captura todas las solicitudes y respuestas con headers, tiempos y contenido.

🚫

Blocking

Block requests by URL pattern or resource type (scripts, images, XHR, fetch). Bloquea solicitudes por patrón URL o tipo de recurso (scripts, imágenes, XHR, fetch).

✏️

ModificationModificación

Rewrite headers, query params, and response bodies on the fly. Reescribe headers, parámetros de consulta y cuerpos de respuesta al vuelo.

🎭

Mocking

Return custom responses with artificial delay. Priority-ordered interception rules. Retorna respuestas personalizadas con retraso artificial. Reglas de intercepción ordenadas por prioridad.

Network capture configurationConfiguración de captura de red
// Enable network logging with filters configure_network({ "mode": "logging", "filters": { "resourceTypes": ["xhr", "fetch"], "urlPatterns": ["*api.example.com*"] } }) // Mock an API response add_interception_rule({ "urlPattern": "**/api/users", "response": { "status": 200, "body": { "users": [{ "name": "Test" }] }, "delay": 500 }, "priority": 1 }) // Export to HAR 1.2 export_har({ "path": "./captures/session.har" })
📸 Capture 📸 Captura

Screenshot Management Gestión de Capturas de Pantalla

Three capture modes, S3 storage pipeline, retention policies, and CDN-ready proxy endpoints. Tres modos de captura, pipeline de almacenamiento S3, políticas de retención y endpoints proxy listos para CDN.

📄

Full PagePágina Completa

Scrolling screenshot — captures the entire page from top to bottom. PNG or JPEG. Captura con desplazamiento — captura toda la página de arriba a abajo. PNG o JPEG.

🖥️

Viewport

Captures exactly what's visible in the browser viewport. Captura exactamente lo que es visible en el viewport del navegador.

✂️

ClippedRecortada

Bounding box capture — specify x, y, width, height for precise regions. Captura por bounding box — especifica x, y, ancho, alto para regiones precisas.

🗄️ S3 Storage Pipeline 🗄️ Pipeline de Almacenamiento S3

  • Automatic upload to S3 bucketsSubida automática a buckets S3
  • Configurable retention policiesPolíticas de retención configurables
  • Cleanup cron: soft-delete → hard-deleteCron de limpieza: borrado suave → borrado definitivo
  • Proxy endpoint for private bucketsEndpoint proxy para buckets privados
  • 1-year cache headersHeaders de caché de 1 año
  • CDN support via custom public URLSoporte CDN vía URL pública personalizada
🔒 Security 🔒 Seguridad

Enterprise-grade security Seguridad de nivel empresarial

Multiple auth methods, URL allowlisting, rate limiting, and input validation on every tool call. Múltiples métodos de autenticación, allowlisting de URLs, limitación de tasa y validación de entrada en cada llamada de herramienta.

🔑

Project API KeysAPI Keys de Proyecto

proj_ prefix, bcrypt hashed. Scoped per project with granular permissions. Prefijo proj_, hashed con bcrypt. Alcance por proyecto con permisos granulares.

🎫

JWT FederationFederación JWT

BitBot JWT integration. Admin/User roles with JWKS verification for zero-trust auth. Integración BitBot JWT. Roles Admin/User con verificación JWKS para auth zero-trust.

🌐

URL AllowlistingAllowlisting de URLs

Per-project URL restrictions. Prevents data exfiltration — agents can only browse approved domains. Restricciones de URL por proyecto. Previene exfiltración de datos — agentes solo navegan dominios aprobados.

Rate LimitingLimitación de Tasa

Per-project quotas: API calls, browses, sessions, and screenshots with configurable windows. Cuotas por proyecto: llamadas API, navegaciones, sesiones y capturas con ventanas configurables.

🛡️

CORS PolicyPolítica CORS

Whitelist-based CORS configuration. Only approved origins can communicate with the server. Configuración CORS basada en whitelist. Solo orígenes aprobados pueden comunicarse con el servidor.

Input ValidationValidación de Entrada

JSON Schema validation on all 29 MCP tools. Every parameter is validated before execution. Validación JSON Schema en las 29 herramientas MCP. Cada parámetro se valida antes de la ejecución.

🏗️ Architecture 🏗️ Arquitectura

How it all connects Cómo se conecta todo

From AI agent to browser, every layer is designed for reliability, security, and performance. Del agente IA al navegador, cada capa está diseñada para confiabilidad, seguridad y rendimiento.

🤖 MCP Client (AI Agent) 🤖 Cliente MCP (Agente IA)
🌐 Express HTTP Server 🌐 Servidor HTTP Express
⚙️ MCP Server — 29 Tools ⚙️ Servidor MCP — 29 Herramientas
📋 Session Manager 📋 Gestor de Sesiones
🔧 Browser Engine (Playwright | Puppeteer) 🔧 Motor de Navegador (Playwright | Puppeteer)
🎬 Recording
🌐 NetworkRed
📸 ScreenshotsCapturas
🧹 Cleanup
🧩 Chrome Extension 🧩 Extensión de Chrome

Record from your browser Graba desde tu navegador

Install the extension, record your actions, upload to the server — your AI agent can replay them anytime. Instala la extensión, graba tus acciones, sube al servidor — tu agente IA puede reproducirlas en cualquier momento.

🎛️ Extension Components 🎛️ Componentes de la Extensión

  • Popup UI — Start, Stop, Upload controlsUI de Popup — Controles Iniciar, Detener, Subir
  • Content Script — Captures clicks, inputs, scrolls, navigationContent Script — Captura clics, inputs, scrolls, navegación
  • Background Script — Manages recording stateBackground Script — Gestiona el estado de grabación
  • Options Page — Server URL + API key configurationPágina de Opciones — Configuración de URL del servidor + API key

🔄 Workflow 🔄 Flujo de Trabajo

  • 1. Install extension & configure server1. Instalar extensión y configurar servidor
  • 2. Click "Start Recording" in popup2. Clic en "Iniciar Grabación" en el popup
  • 3. Browse and interact normally3. Navegar e interactuar normalmente
  • 4. Click "Stop" → "Upload"4. Clic en "Detener" → "Subir"
  • 5. AI agent lists & replays via MCP5. El agente IA lista y reproduce vía MCP
🧰 Tech Stack 🧰 Stack Tecnológico

Built with modern tools Construido con herramientas modernas

Node.js TypeScript Express 5 Playwright Puppeteer PostgreSQL S3 MCP SDK JWT Chrome Extension HAR 1.2 node-cron

Give your AI agent a browser Dale a tu agente IA un navegador

29 tools. Dual engine. Framework-aware. Stealth-ready. Start automating today. 29 herramientas. Doble motor. Compatible con frameworks. Listo para stealth. Comienza a automatizar hoy.

Get Started Comenzar