Skip to main content
Glama

Возможности

  • Автоматизация браузера: навигация, клики, ввод текста, заполнение форм и выполнение JavaScript

  • Лёгкость по умолчанию: ~в 5 раз меньше памяти, чем Chromium, ~в 25 раз меньше снимков, чем сырой HTML

  • Снимки страниц: компактные YAML-снимки дерева доступности с уникальными ID узлов для точного нацеливания на элементы

  • Оптимизированный под LLM контекст: снимки урезаны до семантически необходимого, что сохраняет крошечный расход контекста — вы можете уместить больше страниц и более длинные сессии в то же окно

  • Настраиваемый резервный браузер: двухуровневая модель — сначала лёгкий браузер, затем переход на headful Chrome, Browserless или Browserbase облачные браузеры только когда браузер по умолчанию обнаружен как бот, падает или истекает по таймауту.

  • Ограничение частоты запросов: оставайтесь незаметными. Принудительная настраиваемая минимальная задержка между запросами к определённым доменам с шаблонами подстановки (*, *.reddit.com) плюс опциональный джиттер, чтобы ваш агент работал в своём темпе, а не долбил сайт и не срабатывал его защиту от ботов.

  • Поддержка прокси: маршрутизация каждого запроса через HTTP-прокси одной настройкой PROXY_SERVER — применяется автоматически к обоим браузерным уровням, так что ваш реальный IP никогда не касается цели. Поддерживается встроенная базовая аутентификация (http://user:pass@host:port).

  • Надёжное управление сессиями: посессионная сериализация, опциональный лимит сессий (MAX_SESSIONS), восстановление после сбоя в середине сессии с повторным воспроизведением истории и корректное завершение работы.

  • Управление сессиями: повторное использование сессий для нескольких операций с уникальными ID сессий

  • Кроссплатформенность: работает на Linux и macOS, с настраиваемым резервным реальным браузером при необходимости

Related MCP server: opencode-browser-control

Бенчмарк

SlimAtlas был протестирован против Playwright MCP (headless и headful Chromium) с использованием slim-atlas-bench — 25 реальных сайтов в 5 категориях, по 3 прогона каждый (всего 225), всё запускалось в Docker на localhost.

Настройка: каждый сервис работает как MCP-сервер в собственном Docker-контейнере. Тестовый стенд измеряет задержку на вызов инструмента (навигация + снимок) через langchain-mcp-adapters и фиксирует RAM контейнера через Docker stats API. Снимки оцениваются в токенах при ~4 символа/токен (та же методология, что и для базовой линии сырого HTML).

Метрика (медиана)

SlimAtlas

Playwright Headless

Playwright Headful

Навигация + снимок (мс)

1,383

1,116

687

RAM контейнера (МБ)

124

635

815

Токены снимка

414

940

1,843

SlimAtlas обменивает скорость навигации на радикально меньшее потребление ресурсов. Chromium быстрее загружает страницы, но использует в 5–6 раз больше RAM и производит в 2–4 раза больше токенов на снимок — две затраты, которые доминируют в масштабе в агентных рабочих процессах.

Результаты

Установка

Требуется Bun ≥1.1.

# Install dependencies
bun install

Бинарник браузера загружается автоматически при первом запуске.

Резервный браузер: уровень 1 — всегда лёгкий браузер. Уровень 2 — FALLBACK_BROWSER — одно из значений: headful (headful Chrome), browserbase (облачный), browserless (облачный) или none (по умолчанию, без резерва). Когда браузер по умолчанию падает, истекает по таймауту или обнаруживается как бот, сессия один раз переключается на настроенный резерв. Chrome поставляется вместе с Puppeteer; Browserbase/Browserless требуют учётных данных API (см. ниже).

Использование

Запуск 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 предоставляет единую конечную точку Streamable HTTP /mcp. Каждый клиент получает собственную сессию через заголовок mcp-session-id; MAX_SESSIONS ограничивает параллелизм. Укажите вашему MCP-клиенту на неё:

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

С аутентификацией:

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

Совет: используйте --host=0.0.0.0 для удалённого доступа, но всегда устанавливайте MCP_AUTH_TOKEN в этом случае. Сервер говорит только по обычному HTTP — завершайте TLS на фронте (Caddy/nginx), иначе Bearer-токен будет передаваться по сети в открытом виде.

Docker

Образ включает бинарник Lightpanda на этапе сборки, поэтому контейнер запускается самодостаточно и никогда не перезагружает его:

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

Зафиксируйте релиз Lightpanda для воспроизводимых сборок (любой тег lightpanda-io/browser — по умолчанию nightly):

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

Мультиархитектурность обрабатывается автоматически — сборка определяет архитектуру контейнера через uname -m (x86_64lightpanda-x86_64-linux, aarch64lightpanda-aarch64-linux), так что бинарник всегда соответствует собираемой платформе.

Apple Silicon (Mac на M-чипах): передайте --platform linux/arm64 для нативной сборки/запуска. Без этого Docker Desktop может по умолчанию выбрать amd64 и запустить контейнер под Rosetta, что приведёт к сбою запуска бинарника Lightpanda (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

Вариант с headful-резервом. Образ по умолчанию запускает только Lightpanda (FALLBACK_BROWSER=none). Чтобы включить резерв headful Chrome (нужен только если вы устанавливаете FALLBACK_BROWSER=headful во время выполнения), соберите headful-вариант — он добавляет библиотеки времени выполнения Chrome + Xvfb (~150МБ) и предустанавливает 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 запускается лениво внутри контейнера при первой сессии, которая переходит на headful Chrome — никакого entrypoint или ручного xvfb-run не нужно.

Режим Stdio

Для MCP-клиентов, которые запускают сервер как подпроцесс (локальный, одноклиентский), используйте транспорт stdio:

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

Конфигурация

Добавьте в конфигурацию вашего MCP-клиента:

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

Совет: установите FALLBACK_BROWSER=none, чтобы использовать только лёгкий браузер и честно распространять ошибки. Используйте headful или browserbase, чтобы включить резерв реального браузера.

См. docs/configs.md для всех переменных окружения и CLI-флагов.

Резервный браузер

FALLBACK_BROWSER

Браузер уровня 2

Примечания

none (по умолчанию)

Только лёгкий браузер; ошибки распространяются честно

headful

Headful Chrome

Реальное окно на macOS; требует xvfb на headless Linux

browserbase

Browserbase cloud

Требует BROWSERBASE_API_KEY + BROWSERBASE_PROJECT_ID

Пропустите браузер по умолчанию для заведомо сложных доменов с помощью SKIP_LIGHTPANDA_DOMAINS (через запятую, с учётом поддоменов). Совпавшие хосты стартуют сразу на резервном браузере. Требует FALLBACK_BROWSER != none (иначе список игнорируется с предупреждением).

Ограничение частоты запросов

Вежливый, антидетекционный темп для вашего агента. RateLimiter обеспечивает серверную минимальную задержку между вызовами browser_navigate к перечисленным вами доменам, с опциональным случайным джиттером, чтобы ритм не был фиксированным, идентифицируемым интервалом. Вёдра ключуются по хосту для всех сессий (потому что целевой сайт видит ваш IP, а не ваши сессии), и шаблоны поддерживают подстановочные символы:

Шаблон

Совпадения

Ведро

*

Каждый хост

Каждый хост ограничивается независимо

*.reddit.com

Только поддомены (www.reddit.com, old.reddit.com) — не reddit.com

Все совпавшие поддомены делят одно ведро

g2.com

g2.com + его поддомены

Apex + поддомены делят одно ведро

Отключено по умолчанию. Включите непустым списком доменов и ненулевой задержкой:

# 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

Прокси

Держите ваш реальный IP подальше от цели. Установите один PROXY_SERVER, и SlimAtlas маршрутизирует весь HTTP-трафик обоих браузерных уровней через него — никакой ручной настройки для каждого браузера:

  • Лёгкий браузер (уровень 1) — передаётся через его нативный флаг --http-proxy.

  • Резерв Chrome (уровень 2) — применяется через --proxy-server при запуске.

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

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

Встроенная базовая аутентификация (http://user:pass@host:port) поддерживается на уровне лёгкого браузера. Для прокси с IP-allowlist (без учётных данных) всё просто работает на обоих уровнях. (Постраничная аутентификация Chrome через page.authenticate — в планах.)

CLI-флаги

Каждую переменную окружения также можно передать как CLI-флаг в нижнем регистре в форме --flag=value. CLI-флаги переопределяют переменные окружения. Неизвестные флаги приводят к выходу сервера при запуске. См. docs/configs.md для полного списка.

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

Чтобы использовать флаги из MCP-клиента, добавьте их в массив 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"
      ]
    }
  }
}

Рабочий процесс использования

# 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"})

Доступные инструменты

Tool

Описание

Значение

browser_navigate

Переход на URL с настраиваемой стратегией ожидания

Точка входа для всех веб-взаимодействий. Поддерживает load, domcontentloaded, networkidle0, networkidle2

browser_snapshot

Получить YAML-дерево доступности с уникальными ID узлов

Структурированное представление страницы, идеальное для понимания LLM. ID узлов обеспечивают точное нацеливание для кликов/ввода

browser_view_node

Просмотр содержимого конкретного узла по ID (текст или изображение)

Проверка отдельных элементов без полного повторного чтения страницы. Возвращает изображения в формате base64 для визуальной проверки

browser_click

Клик по элементу по ID узла или CSS-селектору

ID узла (из снимка) рекомендуется использовать вместо CSS-селекторов для надёжности и простоты

browser_type

Ввод текста в элемент с необязательной задержкой между нажатиями клавиш

Имитирует ввод человеком. Используйте для поисковых полей, форм и текстовых полей ввода

browser_fill

Мгновенное заполнение элемента ввода значением

Быстрее, чем browser_type, для полей форм. Очищает существующее значение перед заполнением

browser_go_back

Переход назад в истории браузера

Необходимо для многошаговых рабочих процессов и исправления ошибок навигации

browser_go_forward

Переход вперёд в истории браузера

Дополняет browser_go_back для двунаправленной навигации

browser_reload

Перезагрузка текущей страницы

Обновление динамического контента или восстановление после устаревшего состояния страницы

browser_get_page_info

Получение URL и заголовка текущей страницы

Быстрый способ проверить успешность навигации и текущий контекст

browser_close

Закрытие сеанса браузера и освобождение ресурсов

Важно для очистки. Сеансы автоматически закрываются по тайм-ауту, но рекомендуется явное закрытие

Запуск тестов

# Run all tests
bun test

# Run tests in watch mode
bun test --watch

Требования

  • Bun ≥1.1

  • Linux или macOS (загружается автоматически) или Chrome/Chromium (запасной вариант)

Лицензия

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