Browser Use
Un servidor de automatización de navegador impulsado por IA para control en lenguaje natural e investigación web, con acceso a CLI.
Documentación
mcp-server-browser-use
Servidor MCP que brinda a los asistentes de IA la capacidad de controlar un navegador web.
Tabla de Contenidos
- ¿Qué es esto?
- Instalación
- Interfaz Web
- Panel Web
- Configuración
- Referencia de CLI
- Herramientas MCP
- Investigación Profunda
- Observabilidad
- Sistema de Habilidades
- Referencia de API REST
- Arquitectura
- Licencia
¿Qué es esto?
Esto envuelve browser-use como un servidor MCP, permitiendo que Claude (o cualquier cliente MCP) automatice un navegador real—navegar páginas, completar formularios, hacer clic en botones, extraer datos y más.
¿Por qué HTTP en lugar de stdio?
Las tareas de automatización del navegador toman 30-120+ segundos. El transporte estándar stdio de MCP tiene problemas de tiempo de espera con operaciones de larga duración—las conexiones se caen a mitad de la tarea. El transporte HTTP resuelve esto ejecutándose como un demonio persistente que maneja solicitudes de manera confiable sin importar la duración.
Instalación
Plugin de Claude Code (Recomendado)
Instala como un plugin de Claude Code para configuración automática:
# Install the plugin
/plugin install browser-use/mcp-browser-use
El plugin automáticamente:
- Instala los navegadores de Playwright en la primera ejecución
- Inicia el demonio HTTP cuando Claude Code se inicia
- Registra el servidor MCP con Claude
Establece tu clave API (el agente del navegador necesita un LLM para decidir acciones):
# Set API key (environment variable - recommended)
export GEMINI_API_KEY=your-key-here
# Or use config file
mcp-server-browser-use config set -k llm.api_key -v your-key-here
¡Eso es todo! Claude ahora puede usar las herramientas de automatización del navegador.
Instalación Manual
Para otros clientes MCP o uso independiente:
# Clone and install
git clone https://github.com/Saik0s/mcp-browser-use.git
cd mcp-server-browser-use
uv sync
# Install browser
uv run playwright install chromium
# Start the server
uv run mcp-server-browser-use server
Agregar a Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"browser-use": {
"type": "streamable-http",
"url": "http://localhost:8383/mcp"
}
}
}
Para clientes MCP que no soportan transporte HTTP, usa mcp-remote como proxy:
{
"mcpServers": {
"browser-use": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8383/mcp"]
}
}
}
Interfaz Web
Accede al visor de tareas en http://localhost:8383 cuando el demonio esté ejecutándose.
Características:
- Lista de tareas en tiempo real con estado y progreso
- Detalles de tareas con registros de ejecución
- Estado de salud del servidor y tiempo de actividad
- Monitoreo de tareas en ejecución
La interfaz web proporciona visibilidad de las tareas de automatización del navegador sin requerir comandos CLI.
Panel Web
Accede al panel completo en http://localhost:8383/dashboard cuando el demonio esté ejecutándose.
Características:
- Pestaña de Tareas: Historial completo de tareas con filtrado, actualizaciones de estado en tiempo real y registros de ejecución detallados
- Pestaña de Habilidades: Explora, inspecciona y gestiona habilidades aprendidas con estadísticas de uso
- Pestaña de Historial: Vista histórica de todas las tareas completadas con filtrado por estado y tiempo
Capacidades Clave:
- Ejecutar habilidades existentes directamente desde el panel con parámetros personalizados
- Iniciar sesiones de aprendizaje para capturar nuevas habilidades
- Eliminar habilidades obsoletas o inválidas
- Monitorear tareas en ejecución con actualizaciones de progreso en vivo
- Ver resultados completos de tareas y detalles de errores
El panel proporciona una interfaz web integral para gestionar todos los aspectos de la automatización del navegador sin comandos CLI.
Configuración
La configuración se almacena en ~/.config/mcp-server-browser-use/config.json.
Ver configuración actual:
mcp-server-browser-use config view
Cambiar configuración:
mcp-server-browser-use config set -k llm.provider -v openai
mcp-server-browser-use config set -k llm.model_name -v gpt-4o
# Note: Set API keys via environment variables (e.g., ANTHROPIC_API_KEY) for better security
# mcp-server-browser-use config set -k llm.api_key -v sk-...
mcp-server-browser-use config set -k browser.headless -v false
mcp-server-browser-use config set -k agent.max_steps -v 30
Referencia de Configuración
| Clave | Predeterminado | Descripción |
|---|---|---|
llm.provider | google | Proveedor de LLM (anthropic, openai, google, azure_openai, groq, deepseek, cerebras, ollama, bedrock, browser_use, openrouter, vercel) |
llm.model_name | gemini-3-flash-preview | Modelo para el agente del navegador |
llm.api_key | - | Clave API para el proveedor (prefiere variables de entorno: GEMINI_API_KEY, ANTHROPIC_API_KEY, etc.) |
browser.headless | true | Ejecutar navegador sin interfaz gráfica |
browser.cdp_url | - | Conectar a Chrome existente (ej., http://localhost:9222) |
browser.user_data_dir | - | Directorio de perfil de Chrome para inicios de sesión/cookies persistentes |
browser.chromium_sandbox | true | Habilitar sandboxing de Chromium por seguridad |
agent.max_steps | 20 | Pasos máximos por tarea del navegador |
agent.use_vision | true | Habilitar capacidades de visión para el agente |
research.max_searches | 5 | Búsquedas máximas por tarea de investigación |
research.search_timeout | - | Tiempo de espera para búsquedas individuales |
server.host | 127.0.0.1 | Dirección de enlace del servidor |
server.port | 8383 | Puerto del servidor |
server.results_dir | - | Directorio para guardar resultados |
server.auth_token | - | Token de autenticación para conexiones fuera de localhost |
skills.enabled | false | Habilitar sistema de habilidades (beta - deshabilitado por defecto) |
skills.directory | ~/.config/browser-skills | Ubicación de almacenamiento de habilidades |
skills.validate_results | true | Validar resultados de ejecución de habilidades |
Prioridad de Configuración
Environment Variables > Config File > Defaults
Las variables de entorno usan el prefijo MCP_ + sección + _ + clave (ej., MCP_LLM_PROVIDER).
Usando Tu Propio Navegador
Opción 1: Perfil Persistente (Recomendado)
Usa un perfil de Chrome dedicado para preservar inicios de sesión y cookies:
# Set user data directory
mcp-server-browser-use config set -k browser.user_data_dir -v ~/.chrome-browser-use
Opción 2: Conectar a Chrome Existente
Conecta a una instancia de Chrome existente (útil para depuración avanzada):
# Launch Chrome with debugging enabled
google-chrome --remote-debugging-port=9222
# Configure CDP connection (localhost only for security)
mcp-server-browser-use config set -k browser.cdp_url -v http://localhost:9222
Referencia de CLI
Gestión del Servidor
mcp-server-browser-use server # Start as background daemon
mcp-server-browser-use server -f # Start in foreground (for debugging)
mcp-server-browser-use status # Check if running
mcp-server-browser-use stop # Stop the daemon
mcp-server-browser-use logs -f # Tail server logs
Llamando Herramientas
mcp-server-browser-use tools # List all available MCP tools
mcp-server-browser-use call run_browser_agent task="Go to google.com"
mcp-server-browser-use call run_deep_research topic="quantum computing"
Configuración
mcp-server-browser-use config view # Show all settings
mcp-server-browser-use config set -k <key> -v <value>
mcp-server-browser-use config path # Show config file location
Observabilidad
mcp-server-browser-use tasks # List recent tasks
mcp-server-browser-use tasks --status running
mcp-server-browser-use task <id> # Get task details
mcp-server-browser-use task cancel <id> # Cancel a running task
mcp-server-browser-use health # Server health + stats
Gestión de Habilidades
mcp-server-browser-use call skill_list
mcp-server-browser-use call skill_get name="my-skill"
mcp-server-browser-use call skill_delete name="my-skill"
Consejo: Las habilidades también se pueden gestionar a través del panel web en http://localhost:8383/dashboard para una interfaz visual con ejecución de un clic y sesiones de aprendizaje.
Herramientas MCP
Estas herramientas se exponen a través de MCP para clientes de IA:
| Herramienta | Descripción | Duración Típica |
|---|---|---|
run_browser_agent | Ejecutar tareas de automatización del navegador | 60-120s |
run_deep_research | Investigación multi-búsqueda con síntesis | 2-5 min |
skill_list | Listar habilidades aprendidas | <1s |
skill_get | Obtener definición de habilidad | <1s |
skill_delete | Eliminar una habilidad | <1s |
health_check | Estado del servidor y tareas en ejecución | <1s |
task_list | Consultar historial de tareas | <1s |
task_get | Obtener detalles completos de tarea | <1s |
run_browser_agent
La herramienta principal. Dile lo que quieres en lenguaje natural:
mcp-server-browser-use call run_browser_agent \
task="Find the price of iPhone 16 Pro on Apple's website"
El agente lanza un navegador, navega a apple.com, encuentra el producto y devuelve el precio.
Parámetros:
| Parámetro | Tipo | Descripción |
|---|---|---|
task | string | Qué hacer (requerido) |
max_steps | int | Sobrescribir pasos máximos predeterminados |
skill_name | string | Usar una habilidad aprendida |
skill_params | JSON | Parámetros para la habilidad |
learn | bool | Habilitar modo de aprendizaje |
save_skill_as | string | Nombre para la habilidad aprendida |
run_deep_research
Investigación web multi-paso con síntesis automática:
mcp-server-browser-use call run_deep_research \
topic="Latest developments in quantum computing" \
max_searches=5
El agente busca en múltiples fuentes, extrae hallazgos clave y compila un informe en markdown.
Investigación Profunda
La investigación profunda ejecuta un flujo de trabajo de 3 fases:
┌─────────────────────────────────────────────────────────┐
│ Phase 1: PLANNING │
│ LLM generates 3-5 focused search queries from topic │
└─────────────────────────────┬───────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ Phase 2: SEARCHING │
│ For each query: │
│ • Browser agent executes search │
│ • Extracts URL + summary from results │
│ • Stores findings │
└─────────────────────────────┬───────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ Phase 3: SYNTHESIS │
│ LLM creates markdown report: │
│ 1. Executive Summary │
│ 2. Key Findings (by theme) │
│ 3. Analysis and Insights │
│ 4. Gaps and Limitations │
│ 5. Conclusion with Sources │
└─────────────────────────────────────────────────────────┘
Los informes se pueden guardar automáticamente configurando research.save_directory.
Observabilidad
Todas las ejecuciones de herramientas se rastrean en SQLite para depuración y monitoreo.
Ciclo de Vida de Tareas
PENDING ──► RUNNING ──► COMPLETED
│
├──► FAILED
└──► CANCELLED
Etapas de Tareas
Durante la ejecución, las tareas progresan a través de etapas granulares:
INITIALIZING → PLANNING → NAVIGATING → EXTRACTING → SYNTHESIZING
Consultando Tareas
Listar tareas recientes:
mcp-server-browser-use tasks
┌──────────────┬───────────────────┬───────────┬──────────┬──────────┐
│ ID │ Tool │ Status │ Progress │ Duration │
├──────────────┼───────────────────┼───────────┼──────────┼──────────┤
│ a1b2c3d4 │ run_browser_agent │ completed │ 15/15 │ 45s │
│ e5f6g7h8 │ run_deep_research │ running │ 3/7 │ 2m 15s │
└──────────────┴───────────────────┴───────────┴──────────┴──────────┘
Obtener detalles de tarea:
mcp-server-browser-use task a1b2c3d4
Salud del servidor:
mcp-server-browser-use health
Muestra tiempo de actividad, uso de memoria y tareas actualmente en ejecución.
Herramientas MCP para Observabilidad
Los clientes de IA pueden consultar el estado de las tareas directamente:
health_check- Estado del servidor + lista de tareas en ejecucióntask_list- Tareas recientes con filtro de estado opcionaltask_get- Detalles completos de una tarea específica
Almacenamiento
- Base de datos:
~/.config/mcp-server-browser-use/tasks.db - Retención: Las tareas completadas se eliminan automáticamente después de 7 días
- Formato: SQLite con modo WAL para concurrencia
Sistema de Habilidades (Súper Alfa)
Advertencia: Esta característica es experimental y está en desarrollo activo. Espera bordes ásperos.
Las habilidades están deshabilitadas por defecto. Actívalas primero:
mcp-server-browser-use config set -k skills.enabled -v true
Las habilidades te permiten "enseñar" al agente una tarea una vez, luego reproducirla 50 veces más rápido reutilizando endpoints de API descubiertos en lugar de la automatización completa del navegador.
El Problema
La automatización del navegador es lenta (60-120 segundos por tarea). Pero la mayoría de los sitios web tienen APIs detrás de su interfaz. Si podemos descubrir esas APIs, podemos llamarlas directamente.
La Solución
Las habilidades capturan las llamadas API realizadas durante una sesión del navegador y las reproducen directamente a través de CDP (Protocolo de DevTools de Chrome).
Without Skills: Browser navigation → 60-120 seconds
With Skills: Direct API call → 1-3 seconds
Aprendiendo una Habilidad
mcp-server-browser-use call run_browser_agent \
task="Find React packages on npmjs.com" \
learn=true \
save_skill_as="npm-search"
Lo que sucede:
- Grabación: CDP captura todo el tráfico de red durante la ejecución
- Análisis: El LLM identifica la "solicitud clave"—la llamada API que devuelve los datos
- Extracción: Los patrones de URL, encabezados y reglas de análisis de respuesta se guardan
- Almacenamiento: La habilidad se guarda como YAML en
~/.config/browser-skills/npm-search.yaml
Usando una Habilidad
mcp-server-browser-use call run_browser_agent \
skill_name="npm-search" \
skill_params='{"query": "vue"}'
Dos Modos de Ejecución
Cada habilidad soporta dos rutas de ejecución:
1. Ejecución Directa (Ruta Rápida) ~2 segundos
Si la habilidad capturó un endpoint de API (SkillRequest):
Initialize CDP session
↓
Navigate to domain (establish cookies)
↓
Execute fetch() via Runtime.evaluate
↓
Parse response with JSONPath
↓
Return data
2. Ejecución Basada en Pistas (Respaldo) ~60-120 segundos
Si la ejecución directa falla o no se encontró API:
Inject navigation hints into task prompt
↓
Agent uses hints as guidance
↓
Agent discovers and calls API
↓
Return data
Formato de Archivo de Habilidad
Las habilidades se almacenan como YAML en ~/.config/browser-skills/:
name: npm-search
description: Search for packages on npmjs.com
version: "1.0"
# For direct execution (fast path)
request:
url: "https://www.npmjs.com/search?q={query}"
method: GET
headers:
Accept: application/json
response_type: json
extract_path: "objects[*].package"
# For hint-based execution (fallback)
hints:
navigation:
- step: "Go to npmjs.com"
url: "https://www.npmjs.com"
money_request:
url_pattern: "/search"
method: GET
# Auth recovery (if API returns 401/403)
auth_recovery:
trigger_on_status: [401, 403]
recovery_page: "https://www.npmjs.com/login"
# Usage stats
success_count: 12
failure_count: 1
last_used: "2024-01-15T10:30:00Z"
Parámetros
Las habilidades soportan URLs parametrizadas y cuerpos de solicitud:
request:
url: "https://api.example.com/search?q={query}&limit={limit}"
body_template: '{"filters": {"category": "{category}"}}'
Los parámetros se sustituyen en el momento de la ejecución desde skill_params.
Recuperación de Autenticación
Si una API devuelve 401/403, las habilidades pueden activar la recuperación de autenticación:
auth_recovery:
trigger_on_status: [401, 403]
recovery_page: "https://example.com/login"
max_retries: 2
El sistema navegará a la página de recuperación (permitiéndote iniciar sesión) y reintentará.
Limitaciones
- Descubrimiento de API: Solo funciona si el sitio tiene una API. Los sitios que renderizan todo en el servidor no producirán habilidades útiles.
- Estado de Autenticación: Las habilidades dependen de las cookies del navegador. Si estás desconectado, pueden fallar.
- Cambios de API: Si un sitio cambia su API, la habilidad se rompe. Se recurre a la ejecución basada en pistas.
- Flujos Complejos: Los flujos de trabajo de múltiples pasos (inicio de sesión → navegación → búsqueda) pueden no capturarse limpiamente.
Referencia de API REST
El servidor expone endpoints REST para acceso HTTP directo. Todos los endpoints devuelven JSON a menos que se especifique lo contrario.
URL Base
http://localhost:8383
Salud y Estado
GET /api/health
Verificación de salud del servidor con información de tareas en ejecución.
curl http://localhost:8383/api/health
Respuesta:
{
"status": "healthy",
"uptime_seconds": 1234.5,
"memory_mb": 256.7,
"running_tasks": 2,
"tasks": [...],
"stats": {...}
}
Tareas
GET /api/tasks
Listar tareas recientes con filtrado opcional.
# List all tasks
curl http://localhost:8383/api/tasks
# Filter by status
curl http://localhost:8383/api/tasks?status=running
# Limit results
curl http://localhost:8383/api/tasks?limit=50
GET /api/tasks/{task_id}
Obtener detalles completos de una tarea específica.
curl http://localhost:8383/api/tasks/abc123
GET /api/tasks/{task_id}/logs (SSE)
Transmisión de progreso de tareas en tiempo real a través de Eventos Enviados por el Servidor.
const events = new EventSource('/api/tasks/abc123/logs');
events.onmessage = (e) => console.log(JSON.parse(e.data));
Habilidades
GET /api/skills
Listar todas las habilidades disponibles.
curl http://localhost:8383/api/skills
Respuesta:
{
"skills": [
{
"name": "npm-search",
"description": "Search for packages on npmjs.com",
"success_rate": 92.5,
"usage_count": 15,
"last_used": "2024-01-15T10:30:00Z"
}
],
"count": 1,
"skills_directory": "/Users/you/.config/browser-skills"
}
GET /api/skills/{name}
Obtener definición completa de habilidad como JSON.
curl http://localhost:8383/api/skills/npm-search
DELETE /api/skills/{name}
Eliminar una habilidad.
curl -X DELETE http://localhost:8383/api/skills/npm-search
POST /api/skills/{name}/run
Ejecutar una habilidad con parámetros (inicia tarea en segundo plano).
curl -X POST http://localhost:8383/api/skills/npm-search/run \
-H "Content-Type: application/json" \
-d '{"params": {"query": "react"}}'
Respuesta:
{
"task_id": "abc123...",
"skill_name": "npm-search",
"message": "Skill execution started",
"status_url": "/api/tasks/abc123..."
}
POST /api/learn
Iniciar una sesión de aprendizaje para capturar una nueva habilidad (inicia tarea en segundo plano).
curl -X POST http://localhost:8383/api/learn \
-H "Content-Type: application/json" \
-d '{
"task": "Search for TypeScript packages on npmjs.com",
"skill_name": "npm-search"
}'
Respuesta:
{
"task_id": "def456...",
"learning_task": "Search for TypeScript packages on npmjs.com",
"skill_name": "npm-search",
"message": "Learning session started",
"status_url": "/api/tasks/def456..."
}
Actualizaciones en Tiempo Real
GET /api/events (SSE)
Transmisión de Eventos Enviados por el Servidor para todas las actualizaciones de tareas.
const events = new EventSource('/api/events');
events.onmessage = (e) => {
const data = JSON.parse(e.data);
console.log(`Task ${data.task_id}: ${data.status}`);
};
Formato de evento:
{
"task_id": "abc123",
"full_task_id": "abc123-full-uuid...",
"tool": "run_browser_agent",
"status": "running",
"stage": "navigating",
"progress": {
"current": 5,
"total": 15,
"percent": 33.3,
"message": "Loading page..."
}
}
Arquitectura
Resumen de Alto Nivel
┌─────────────────────────────────────────────────────────────────────────┐
│ MCP CLIENTS │
│ (Claude Desktop, mcp-remote, CLI call) │
└─────────────────────────────────┬───────────────────────────────────────┘
│ HTTP POST /mcp
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ FastMCP SERVER │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ MCP TOOLS │ │
│ │ • run_browser_agent • skill_list/get/delete │ │
│ │ • run_deep_research • health_check/task_list/task_get │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└────────┬──────────────┬─────────────────┬────────────────┬──────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐
│ CONFIG │ │ PROVIDERS │ │ SKILLS │ │ OBSERVABILITY │
│ Pydantic │ │ 12 LLMs │ │ Learn+Run │ │ Task Tracking │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────────────┘
│
▼
┌─────────────────────────┐
│ browser-use │
│ (Agent + Playwright) │
└─────────────────────────┘
Estructura de Módulos
src/mcp_server_browser_use/
├── server.py # FastMCP server + MCP tools
├── cli.py # Typer CLI for daemon management
├── config.py # Pydantic settings
├── providers.py # LLM factory (12 providers)
│
├── observability/ # Task tracking
│ ├── models.py # TaskRecord, TaskStatus, TaskStage
│ ├── store.py # SQLite persistence
│ └── logging.py # Structured logging
│
├── skills/ # Machine-learned browser skills
│ ├── models.py # Skill, SkillRequest, AuthRecovery
│ ├── store.py # YAML persistence
│ ├── recorder.py # CDP network capture
│ ├── analyzer.py # LLM skill extraction
│ ├── runner.py # Direct fetch() execution
│ └── executor.py # Hint injection
│
└── research/ # Deep research workflow
├── models.py # SearchResult, ResearchSource
└── machine.py # Plan → Search → Synthesize
Ubicaciones de Archivos
| Qué | Dónde |
|---|---|
| Configuración | ~/.config/mcp-server-browser-use/config.json |
| Base de datos de tareas | ~/.config/mcp-server-browser-use/tasks.db |
| Habilidades | ~/.config/browser-skills/*.yaml |
| Registro del servidor | ~/.local/state/mcp-server-browser-use/server.log |
| PID del servidor | ~/.local/state/mcp-server-browser-use/server.json |
Proveedores de LLM Soportados
- OpenAI
- Anthropic
- Google Gemini
- Azure OpenAI
- Groq
- DeepSeek
- Cerebras
- Ollama (local)
- AWS Bedrock
- OpenRouter
- Vercel AI
Licencia
MIT