Skip to main content
Glama

Características

  • Automatización de navegador: Navega, haz clic, rellena formularios y evalúa JavaScript

  • Ligero por defecto: ~5 veces menos memoria que Chromium, ~25 veces menos snapshots que HTML sin procesar

  • Snapshots de página: Obtén snapshots compactos del árbol de accesibilidad en YAML con IDs de nodo únicos para apuntar a elementos con precisión

  • Contexto optimizado para LLM: Los snapshots se reducen a lo esencial semántico, manteniendo el uso de contexto mínimo para que quepan más páginas y sesiones más largas en la misma ventana

  • Navegador de respaldo configurable: Modelo de dos niveles — primero el navegador ligero, luego escalar a Chrome con interfaz, Browserless o los navegadores en la nube de Browserbase solo cuando el predeterminado es detectado como bot, falla o se agota el tiempo

  • Limitación de velocidad: Mantente bajo el radar. Aplica un retraso mínimo configurable entre solicitudes a dominios específicos con patrones comodín (*, *.reddit.com) más jitter opcional, para que tu agente se dosifique en lugar de saturar un sitio y activar sus defensas antibots

  • Soporte de proxy: Enruta cada solicitud a través de un proxy HTTP con una única configuración de PROXY_SERVER — aplicada automáticamente a ambas capas del navegador, para que tu IP real nunca toque el objetivo. Soporta autenticación básica en línea (http://user:pass@host:port)

  • Gestión robusta de sesiones: Serialización por sesión, límite de sesiones opcional (MAX_SESSIONS), recuperación de fallos a mitad de sesión con reproducción del historial y cierre ordenado

  • Gestión de sesiones: Reutiliza sesiones en múltiples operaciones con IDs de sesión únicos

  • Multiplataforma: Funciona en Linux y macOS, con respaldo configurable a un navegador real cuando sea necesario

Related MCP server: opencode-browser-control

Benchmark

SlimAtlas fue comparado con Playwright MCP (Chromium sin interfaz y con interfaz) usando slim-atlas-bench — 25 sitios web reales en 5 categorías, 3 ejecuciones cada uno (225 en total), todo en Docker en localhost.

Configuración: Cada servicio se ejecuta como un servidor MCP en su propio contenedor Docker. El harness de benchmark mide la latencia por herramienta (navegación + snapshot) mediante langchain-mcp-adapters, y captura la RAM del contenedor a través de la API de estadísticas de Docker. Los snapshots se estiman en tokens a ~4 caracteres por token (misma metodología que el HTML sin procesar).

Métrica (mediana)

SlimAtlas

Playwright sin interfaz

Playwright con interfaz

Navegación + Snapshot (ms)

1,383

1,116

687

RAM del contenedor (MB)

124

635

815

Tokens del snapshot

414

940

1,843

SlimAtlas intercambia velocidad de navegación por un uso de recursos drásticamente menor. Chromium es más rápido al cargar páginas, pero usa 5–6 veces más RAM y produce 2–4 veces más tokens por snapshot — los dos costos que dominan a escala en los flujos de trabajo de agentes.

Resultados

Instalación

Requiere Bun ≥1.1.

# Install dependencies
bun install

El binario del navegador se descarga automáticamente en la primera ejecución.

Navegador de respaldo: El nivel 1 es siempre el navegador ligero. El nivel 2 es FALLBACK_BROWSER — uno de headful (Chrome con interfaz), browserbase (nube), browserless (nube) o none (sin respaldo, predeterminado). Cuando el predeterminado falla, se agota el tiempo o es detectado como bot, la sesión cambia una vez al navegador de respaldo configurado. Chrome viene incluido con Puppeteer; Browserbase/Browserless requieren credenciales de API (ver más abajo).

Uso

Ejecutar el servidor MCP

# Standalone HTTP server (default)
bun run src/index.ts --port=8080

# Remote, authenticated
MCP_AUTH_TOKEN=s3cret bun run src/index.ts --host=0.0.0.0 --port=8080

SlimAtlas expone un único endpoint HTTP de streaming /mcp. Cada cliente obtiene su propia sesión mediante la cabecera mcp-session-id; MAX_SESSIONS limita la concurrencia. Apunta tu cliente MCP a:

{
  "mcpServers": {
    "slimatlas": {
      "url": "http://localhost:8080/mcp",
      "transport": "http"
    }
  }
}

Con autenticación:

{
  "mcpServers": {
    "slimatlas": {
      "url": "http://your-host:8080/mcp",
      "transport": "http",
      "headers": { "Authorization": "Bearer s3cret" }
    }
  }
}

Consejo: Usa --host=0.0.0.0 para exponerlo de forma remota, pero establece siempre MCP_AUTH_TOKEN al hacerlo. El servidor solo habla HTTP sin cifrar — termina TLS en el frontal (Caddy/nginx) o el token Bearer viajará por la red en texto plano.

Docker

La imagen incluye el binario de Lightpanda en el momento de la compilación, por lo que el contenedor arranca autónomo y nunca vuelve a descargar nada:

docker build -t slimatlas .
docker run -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret slimatlas
# -> http://localhost:8080/mcp

Fija una versión de Lightpanda para compilaciones reproducibles (cualquier etiqueta lightpanda-io/browser — por defecto nightly):

docker build --build-arg LIGHTPANDA_VERSION=0.3.3 -t slimatlas:0.3.3 .

La arquitectura múltiple se maneja automáticamente — la compilación detecta la arquitectura del contenedor mediante uname -m (x86_64lightpanda-x86_64-linux, aarch64lightpanda-aarch64-linux), por lo que el binario siempre coincide con la plataforma en la que se ejecuta.

Apple Silicon (Macs con chip M): pasa --platform linux/arm64 para compilar/ejecutar de forma nativa. Sin ello, Docker Desktop puede usar amd64 por defecto y ejecutar el contenedor bajo Rosetta, lo que impide que el binario de Lightpanda se inicie (rosetta error: failed to open elf …).

docker build --platform linux/arm64 --build-arg FALLBACK_BROWSER=headful -t slimatlas .
docker run --platform linux/arm64 --name slimatlas -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret -e LIGHTPANDA_POOL_SIZE=10 -e CHROME_POOL_SIZE=10 slimatlas

Variante con respaldo con interfaz. La imagen predeterminada ejecuta solo Lightpanda (FALLBACK_BROWSER=none). Para habilitar el respaldo de Chrome con interfaz (necesario solo si estableces FALLBACK_BROWSER=headful en tiempo de ejecución), compila la variante con interfaz — añade las bibliotecas de Chrome + Xvfb (~150MB) y preconfigura FALLBACK_BROWSER=headful:

docker build --build-arg LIGHTPANDA_VERSION=0.3.3 FALLBACK_BROWSER=headful -t slimatlas:headful .
docker run -p 8080:8080 -e MCP_AUTH_TOKEN=s3cret slimatlas:headful

Xvfb se inicia de forma diferida dentro del contenedor en la primera sesión que escala a Chrome con interfaz — sin necesidad de entrypoint ni xvfb-run manual.

Modo stdio

Para clientes MCP que generan el servidor como subproceso (local, de un solo cliente), usa el transporte stdio:

bun run src/index.ts
{
  "mcpServers": {
    "slimatlas": {
      "command": "bun",
      "args": ["run", "path/to/mcp/src/index.ts"]
    }
  }
}

Configuración

Añade a la configuración de tu cliente MCP:

{
  "mcpServers": {
    "slimatlas": {
      "command": "bun",
      "args": ["run", "path/to/mcp/src/index.ts"]
    }
  }
}

Consejo: Establece FALLBACK_BROWSER=none para usar solo el navegador ligero y propagar los errores de forma honesta. Usa headful o browserbase para habilitar un respaldo con navegador real.

Consulta docs/configs.md para todas las variables de entorno y banderas de línea de comandos.

Navegador de respaldo

FALLBACK_BROWSER

Navegador de nivel 2

Notas

none (predeterminado)

Solo navegador ligero; los errores se propagan con honestidad

headful

Chrome con interfaz

Ventana real en macOS; necesita xvfb en Linux sin interfaz

browserbase

Nube de Browserbase

Requiere BROWSERBASE_API_KEY + BROWSERBASE_PROJECT_ID

Omite el navegador predeterminado para dominios conocidos como difíciles con SKIP_LIGHTPANDA_DOMAINS (separados por comas, consciente de subdominios). Los hosts coincidentes comienzan directamente en el navegador de respaldo. Requiere FALLBACK_BROWSER != none (de lo contrario, la lista se ignora con una advertencia).

Limitación de velocidad

Dosificación educada y antidetectora para tu agente. RateLimiter aplica un retraso mínimo a nivel de servidor entre llamadas a browser_navigate hacia los dominios que enumeras, con jitter aleatorio opcional para que la cadencia no sea un intervalo fijo y rastreable. Los buckets se asignan por host en todas las sesiones (porque el sitio objetivo ve tu IP, no tus sesiones), y los patrones admiten comodines:

Patrón

Coincidencias

Bucket

*

Cada host

Cada host limitado de forma independiente

*.reddit.com

Solo subdominios (www.reddit.com, old.reddit.com) — no reddit.com

Todos los subdominios coincidentes comparten un bucket

g2.com

g2.com + sus subdominios

El dominio raíz + subdominios comparten un bucket

Deshabilitado por defecto. Actívalo con una lista de dominios no vacía y un retraso distinto de cero:

# Via CLI flags
bun run src/index.ts --rate-limit-domains=*.reddit.com,g2.com --rate-limit-min-delay-ms=2000 --rate-limit-jitter-ms=1500

# Or via environment / .env
RATE_LIMIT_DOMAINS=*.reddit.com,g2.com
RATE_LIMIT_MIN_DELAY_MS=2000
RATE_LIMIT_JITTER_MS=1500

Proxy

Mantén tu IP real fuera del objetivo. Establece un único PROXY_SERVER y SlimAtlas enruta todo el tráfico HTTP de ambas capas del navegador a través de él — sin necesidad de configurar cada navegador por separado:

  • Navegador ligero (nivel 1) — reenviado mediante su bandera nativa --http-proxy.

  • Respaldo de Chrome (nivel 2) — aplicado mediante --proxy-server en el arranque.

# Via CLI flag
bun run src/index.ts --proxy-server=http://host:8080

# Or via environment / .env
PROXY_SERVER=http://user:pass@host:8080

La autenticación básica en línea (http://user:pass@host:port) es compatible en la capa del navegador ligero. Para proxies con listas de IP permitidas (sin credenciales) funciona directamente en ambas capas. (La autenticación de Chrome por página mediante page.authenticate está en la hoja de ruta.)

Banderas de línea de comandos

Cada variable de entorno también se puede pasar como bandera de línea de comandos en minúsculas con el formato --flag=valor. Las banderas de línea de comandos anulan las variables de entorno. Las banderas desconocidas hacen que el servidor se cierre al iniciar. Consulta docs/configs.md para la lista completa.

bun run src/index.ts --fallback-browser=headful --lightpanda-pool-size=3 --skip-lightpanda-domains=g2.com --navigate-timeout=60000

Para usar banderas desde un cliente MCP, añádelas al array args:

{
  "mcpServers": {
    "slimatlas": {
      "command": "bun",
      "args": [
        "run",
        "path/to/mcp/src/index.ts",
        "--fallback-browser=headful",
        "--skip-lightpanda-domains=g2.com,linkedin.com",
        "--chrome-pool-size=3"
      ]
    }
  }
}

Flujo de trabajo de uso

# Example: Navigate, snapshot, and interact with a page

# 1. Navigate to a URL (creates a new session automatically)
result = mcp.call("browser_navigate", {"url": "https://example.com"})
# Returns: session_id: abc1, result: Navigated to https://example.com. Title: Example Domain

# 2. Take a snapshot to see the page structure
snapshot = mcp.call("browser_snapshot", {"session_id": "abc1"})
# Returns YAML with node IDs like: 0: {type: div, children: ...}

# 3. Click a node by ID (from the snapshot)
mcp.call("browser_click", {"session_id": "abc1", "nodeId": 2})

# 4. Type into a search box
mcp.call("browser_type", {"session_id": "abc1", "nodeId": 5, "text": "search query"})

# 5. Close the session when done
mcp.call("browser_close", {"session_id": "abc1"})

Herramientas disponibles

Herramienta

Descripción

Valor

browser_navigate

Navega a una URL con una estrategia de espera configurable

Punto de entrada para todas las interacciones web. Admite load, domcontentloaded, networkidle0 y networkidle2

browser_snapshot

Obtén el árbol de accesibilidad YAML con IDs de nodo únicos

Representación estructurada de la página, ideal para que los LLM la comprendan. Los IDs de nodo permiten apuntar con precisión para hacer clic o escribir

browser_view_node

Consulta el contenido de un nodo por su ID (texto o imagen)

Inspecciona elementos de forma individual sin volver a leer toda la página. Devuelve las imágenes en base64 para su verificación visual

browser_click

Haz clic en un elemento mediante su ID de nodo o un selector CSS

El ID de nodo (obtenido del snapshot) es preferible a los selectores CSS para garantizar fiabilidad y simplicidad

browser_type

Escribe texto en un elemento con un retraso opcional entre pulsaciones

Simula la escritura humana. Apto para cuadros de búsqueda, formularios y campos de texto

browser_fill

Rellena un campo de entrada con un valor al instante

Más rápido que browser_type para campos de formulario. Limpia el valor existente antes de rellenar

browser_go_back

Navega hacia atrás en el historial del navegador

Esencial para flujos de trabajo de varios pasos y para corregir errores de navegación

browser_go_forward

Navega hacia delante en el historial del navegador

Complementa a browser_go_back para una navegación bidireccional

browser_reload

Recarga la página actual

Actualiza el contenido dinámico o se recupera de un estado de página desactualizado

browser_get_page_info

Obtiene la URL y el título de la página actual

Forma rápida de comprobar que la navegación ha sido correcta y conocer el contexto actual

browser_close

Cierra la sesión del navegador y libera recursos

Importante para la limpieza. Las sesiones se cierran automáticamente al superar el tiempo de espera, pero se recomienda cerrarlas explícitamente

Ejecución de las pruebas

# Run all tests
bun test

# Run tests in watch mode
bun test --watch

Requisitos

  • Bun ≥1.1

  • Linux o macOS (se descarga automáticamente) o Chrome/Chromium (alternativa)

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that lets LLM agents control all Chrome browser tabs via accessibility snapshots, element references, and a virtual cursor, supporting operations like click, type, navigate, screenshot, and video recording.
    MIT

View all related MCP servers

Related MCP Connectors

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools for AI agents.

  • MCP server for AI dialogue using various LLM models via AceDataCloud

View all MCP Connectors

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/hasindu-madushan/slim-atlas-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server