Skip to main content
Glama

Auto Browser

CI License: MIT MCP Server Local First Glama Open in GitHub Codespaces

Auto Browser demo

Предоставьте своему ИИ-агенту настоящий браузер с возможностью участия человека.

Auto Browser — это управляющая панель браузера на базе MCP для авторизованных рабочих процессов. Она предоставляет клиентам MCP, ИИ-агентам и операторам общий браузер Playwright с возможностью перехвата управления человеком, повторно используемыми профилями аутентификации, одобрениями, журналами аудита и развертыванием по принципу «локально в первую очередь» (local-first).

Работает с:

  • Claude Desktop

  • Cursor

  • любым MCP-клиентом, поддерживающим HTTP или stdio

  • прямыми REST-запросами, если вам нужно управление через curl

Почему Auto Browser

  • MCP-native с первого дня. Интерфейс браузера изначально упакован как MCP-сервер, а не добавлен позже.

  • Перехват управления человеком, когда веб-интерфейс становится нестабильным. noVNC позволяет сохранить доступ к активной сессии, когда человеку нужно вмешаться.

  • Войдите один раз, используйте повторно. Сохраняйте именованные профили аутентификации и открывайте новые сессии, в которых вы уже авторизованы.

  • Local-first по умолчанию. Запускайте весь стек на своем компьютере с помощью Docker Compose или используйте Codespaces для быстрого ознакомления.

  • Встроенные механизмы безопасности. Одобрения, идентификация оператора, очистка персональных данных (PII), квитанции Witness и шаблоны соответствия требованиям — все это часть продукта.

Related MCP server: Browser-Use MCP Server

Основные моменты релиза (v1.0.2)

  • Обновления безопасности фреймворка с фиксацией версий FastAPI и Starlette на текущей исправленной ветке

  • Более безопасные границы ошибок в действиях браузера, CDP, OCR, mesh, рабочих процессах, туннелях, социальных функциях и поверхностях обмена токенами

  • Усиление ограничения частоты запросов (rate-limit) с использованием ограниченных корзин и хешированных идентификаторов операторов

  • Ужесточение политики хостов и путей для производственных ALLOWED_HOSTS, путей профилей аутентификации и корневых каталогов загрузки

  • Платформенный интерфейс 1.0, включая делегирование mesh с подписью, маршруты рабочих процессов, /dashboard, перехват через noVNC, транспорт MCP, журналы аудита и проверки готовности

Полную историю релизов см. в CHANGELOG.md.

Для чего подходит

  • внутренние панели управления и инструменты администрирования

  • QA с участием оператора и отладка браузера

  • рабочие процессы с авторизацией «войти один раз, использовать позже»

  • нестабильные сайты, где человеку может потребоваться восстановить поток действий

  • рабочие процессы агентов на базе MCP, которым нужен настоящий браузер, а не просто получение HTML

Что не является целью

  • скрытная работа или обход защиты от ботов

  • разгадывание CAPTCHA

  • несанкционированный парсинг или автоматизация учетных записей

  • обманная подмена личности или инструменты обхода

Что вы получаете

Управление браузером

Безопасность оператора

Развертывание и интеграция

Сессии на базе Playwright со скриншотами, сводками DOM, выдержками OCR, управлением вкладками, загрузками и инспекцией сети

шлюзы одобрения, заголовки идентификации оператора, события аудита, очистка PII, квитанции Witness и профили защиты

MCP через HTTP, встроенный мост stdio, REST API, Docker Compose, Codespaces, профили аутентификации и опциональная изоляция сессий

Быстрый старт

git clone https://github.com/LvcidPsyche/auto-browser.git
cd auto-browser
docker compose up --build

Этого достаточно для локальной разработки с настройками по умолчанию.

Опционально:

cp .env.example .env
make doctor

Запустите make doctor из обычного терминала с доступом к локальному Docker и разрешением на открытие сокетов localhost.

Откройте:

  • Документация API: http://127.0.0.1:8000/docs

  • Панель управления оператора: http://127.0.0.1:8000/dashboard

  • Визуальный перехват управления: http://127.0.0.1:6080/vnc.html?autoconnect=true&resize=scale

Все опубликованные порты по умолчанию привязаны к 127.0.0.1.

Попробуйте в Codespaces

Open in GitHub Codespaces

Codespaces автоматически подготавливает стек. Панель управления и вкладки noVNC обычно готовы примерно через 90 секунд.

Первая полезная демонстрация

Наиболее показательный сценарий в этом репозитории:

  1. создание сессии

  2. ручной вход, если сайту нужен человек

  3. сохранение сессии как именованного профиля аутентификации

  4. открытие новой сессии из этого профиля

  5. продолжение работы без повторной авторизации

Начните здесь:

Минимальное создание сессии:

curl -s http://127.0.0.1:8000/sessions \
  -X POST \
  -H 'content-type: application/json' \
  -d '{"name":"demo","start_url":"https://example.com"}' | jq

Минимальное наблюдение:

curl -s http://127.0.0.1:8000/sessions/<session-id>/observe | jq

MCP-клиенты

Auto Browser предоставляет:

  • HTTP MCP-эндпоинт по адресу http://127.0.0.1:8000/mcp

  • удобные эндпоинты http://127.0.0.1:8000/mcp/tools и http://127.0.0.1:8000/mcp/tools/call

  • встроенный мост stdio в scripts/mcp_stdio_bridge.py

Профиль инструментов MCP по умолчанию — curated, который сохраняет интерфейс браузера компактным для лучшего выбора инструментов. Если вам нужен полный набор внутренних инструментов, установите:

MCP_TOOL_PROFILE=full

Пример вызова инструмента:

curl -s http://127.0.0.1:8000/mcp/tools/call \
  -X POST \
  -H 'content-type: application/json' \
  -d '{
    "name":"browser.create_session",
    "arguments":{
      "name":"demo",
      "start_url":"https://example.com"
    }
  }' | jq

Руководства по настройке клиентов:

Безопасность и соответствие требованиям

Для реального частного развертывания установите как минимум:

APP_ENV=production
API_BEARER_TOKEN=<strong-random-secret>
REQUIRE_OPERATOR_ID=true
AUTH_STATE_ENCRYPTION_KEY=<44-char-fernet-key>
REQUIRE_AUTH_STATE_ENCRYPTION=true
REQUEST_RATE_LIMIT_ENABLED=true
METRICS_ENABLED=true

COMPLIANCE_TEMPLATE может применить предварительно настроенную политику при запуске:

Шаблон

Шифрование Auth

ID оператора

Очистка PII

Изоляция

Макс. возраст сессии

HIPAA

требуется

требуется

все уровни

docker_ephemeral

PCI-DSS

требуется

требуется

все уровни

docker_ephemeral

SOC2

-

требуется

сеть + текст

общий

24ч

GDPR

-

-

все уровни

общий

24ч

Все шаблоны требуют одобрения загрузок. HIPAA, SOC2 и PCI-DSS также включают квитанции Witness. При запуске примененная политика записывается в /data/compliance-manifest.json.

Пример:

COMPLIANCE_TEMPLATE=HIPAA docker compose up

Подробности развертывания, размещенные заметки Witness, режимы аутентификации CLI и руководство по reverse-SSH см. в:

Обзор архитектуры

flowchart LR
    User[Human operator] -->|watch / takeover| noVNC[noVNC]
    LLM[OpenAI / Claude / Gemini] -->|shared tools| Controller[Controller API]
    Controller -->|Playwright protocol| Browser[Browser node]
    noVNC --> Browser
    Browser --> Artifacts[(screenshots / traces / auth state)]
    Controller --> Artifacts
    Controller --> Policy[Allowlist + approval gates]

Основные компоненты:

  • browser-node/ запускает Chromium, Xvfb, x11vnc и noVNC

  • controller/ предоставляет контроллер FastAPI, транспорт MCP, политики и эндпоинты оркестрации

  • data/ хранит артефакты выполнения, состояние аутентификации, одобрения, журналы аудита и опциональные кэши CLI

  • scripts/ содержит локальные вспомогательные скрипты для проверки готовности, дымовых тестов, мостов и проверок релиза

Руководство по репозиторию

Путь

Что содержит

controller/

API контроллера, транспорт MCP, тесты и упаковка

browser-node/

среда выполнения браузера и слой подключения Playwright

examples/

примеры потоков и настройка MCP-клиентов

integrations/langchain/

адаптеры LangChain, LangGraph и CrewAI

docs/

архитектура, развертывание, усиление безопасности и документация по запуску

scripts/

проверка готовности, дымовые тесты, мост stdio и помощники аутентификации

ops/

шаблоны вспомогательных сервисов и операционные активы

Общие команды

Команда

Назначение

make help

список доступных команд репозитория

make lint

запуск проверок Ruff для приложения, тестов и вспомогательных скриптов

make test

запуск тестов контроллера в Docker

make test-local

запуск тестов контроллера на хосте (Python 3.10+)

make doctor

запуск локальной проверки готовности

make release-audit

запуск более полной проверки валидации релиза

make smoke-isolation

проверка изоляции Docker для каждой сессии

make smoke-reverse-ssh

проверка удаленного доступа через reverse-SSH

Карта документации

Если вы хотите...

Начните здесь

понять структуру системы

docs/architecture.md

подключить Claude Desktop или Cursor

docs/mcp-clients.md

запустить примеры curl

examples/README.md

развернуть на доверенном хосте

docs/deployment.md

изучить производственные ограничения

docs/production-hardening.md

просмотреть историю релизов

CHANGELOG.md

увидеть планы развития проекта

ROADMAP.md

Участие в разработке

Если вы хотите помочь, начните с:

Если Auto Browser оказался полезным, звезда поможет другим людям найти его.

Available Tools

2 tools
browser.find_elementsA

Find all elements matching a CSS selector and return their text, href, value, bounding box, and visibility. Useful before clicking or scraping multiple items.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
selectorYes
session_idYesID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description does not elaborate on behavioral traits beyond returning element data. It does not clarify whether the tool modifies browser state (e.g., scrolling) or has side effects. Given that annotations already cover some aspects, the description adds minimal extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences: the first states functionality and return data, the second provides usage context. There is no redundant information, and every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with three parameters and no output schema. The description covers the main purpose and return data, which is sufficient for basic usage. However, it omits details like error handling, performance considerations for large selectors, or the exact format of the bounding box. Still, given the low complexity, it is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 33% description coverage; only session_id has a description. The tool description does not explain the 'limit' parameter (default 20, max 100) or the 'selector' parameter (CSS format). It mentions returning 'all elements' but does not clarify the effect of the limit, which could mislead an agent into expecting unlimited results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds all elements matching a CSS selector and returns specific properties (text, href, etc.). The verb 'find' and resource 'elements' are unambiguous, and it distinguishes itself from the sibling tool 'browser.list_memory_profiles' which has a completely different purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a usage hint 'Useful before clicking or scraping multiple items,' providing context for when to use the tool. However, it does not explicitly mention when not to use it or alternative tools for similar tasks, but the sibling tool is unrelated, so differentiation is not critical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browser.list_memory_profilesA
Read-onlyIdempotent

List all saved memory profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds no additional behavioral context beyond confirming the read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, straightforward purpose) and strong annotations, the description adequately covers the context, though it lacks return format details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the baseline of 3 applies as the description adds no parameter-specific meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (all saved memory profiles), accurately distinguishing it from related tools like get_memory_profile and save_memory_profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing saved profiles but does not explicitly discuss when to use this tool over alternatives or provide any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 13 tool updatesv1.4.2
    • Removedbrowser.activate_tab
    • Removedbrowser.close_session
    • Removedbrowser.close_tab
    • Removedbrowser.eval_js
    • Removedbrowser.execute_action
    • Addedbrowser.find_elements
    • Removedbrowser.get_auth_profile
    • Removedbrowser.get_console
    • Removedbrowser.get_session
    • Removedbrowser.list_sessions
    • Removedbrowser.observe
    • Removedbrowser.save_auth_profile
    • Removedharness.get_status
  2. 33 tool updatesv1.4.2
    • Changedbrowser.activate_tab2 fields changed
      • addedInput schema / properties / index / description
        Added value: +"Zero-based index of the target tab, as reported by browser.list_tabs."
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Changedbrowser.close_session1 field changed
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Changedbrowser.close_tab2 fields changed
      • addedInput schema / properties / index / description
        Added value: +"Zero-based index of the target tab, as reported by browser.list_tabs."
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Removedbrowser.create_session
    • Removedbrowser.drag_drop
    • Changedbrowser.eval_js1 field changed
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Changedbrowser.execute_action3 fields changed
      • addedInput schema / properties / action / description
        Added value: +"The browser action to execute, in the shared action schema: an action type (navigate, click, type, scroll, wait, done, …) plus its arguments, e.g. a URL for navigate or an element selector/index for click and type."
      • addedInput schema / properties / approval_id / description
        Added value: +"ID of a granted approval that authorizes this action when the active policy requires one. Omit when the action does not need approval."
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Removedbrowser.find_elements
    • Removedbrowser.fork_session
    • Changedbrowser.get_auth_profile1 field changed
      • addedInput schema / properties / profile_name / description
        Added value: +"Name of the saved auth profile to inspect, as listed by browser.list_auth_profiles."
    • Changedbrowser.get_console1 field changed
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Removedbrowser.get_html
    • Removedbrowser.get_memory_profile
    • Removedbrowser.get_network_log
    • Removedbrowser.get_page_errors
    • Removedbrowser.get_request_failures
    • Changedbrowser.get_session1 field changed
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Removedbrowser.list_auth_profiles
    • Removedbrowser.list_downloads
    • Removedbrowser.list_tabs
    • Changedbrowser.observe1 field changed
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Removedbrowser.readiness_check
    • Removedbrowser.request_human_takeover
    • Changedbrowser.save_auth_profile1 field changed
      • addedInput schema / properties / session_id / description
        Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
    • Removedbrowser.save_memory_profile
    • Removedbrowser.screenshot
    • Removedbrowser.set_viewport
    • Removedbrowser.stop_trace
    • Removedbrowser.verify_witness
    • Removedbrowser.wait_for_selector
    • Changedharness.get_status1 field changed
      • addedInput schema / properties / run_id / description
        Added value: +"ID of the convergence run, as returned by harness.start_convergence or listed by harness.list_runs."
    • Removedharness.get_trace
    • Removedharness.list_runs
  3. 1 tool updatev1.3.1
    • Addedbrowser.verify_witness
  4. 3 tool updatesv1.1.1
    • Addedharness.get_status
    • Addedharness.get_trace
    • Addedharness.list_runs
  5. 5 tool updatesv1.0.5
    • Changedbrowser.execute_action1 field changed
      • changedInput schema / $defs / BrowserActionDecision / properties / action / enum
        Previous value: -[
        -  "navigate",
        -  "click",
        -  "hover",
        -  "select_option",
        -  "type",
        -  "press",
        -  "scroll",
        -  "wait",
        -  "reload",
        -  "go_back",
        -  "go_forward",
        -  "upload",
        -  "social_login",
        -  "social_post",
        -  "social_comment",
        -  "social_like",
        -  "social_follow",
        -  "social_unfollow",
        -  "social_repost",
        -  "social_dm",
        -  "request_human_takeover",
        -  "done"
        -]New value: +[
        +  "navigate",
        +  "click",
        +  "hover",
        +  "select_option",
        +  "type",
        +  "press",
        +  "scroll",
        +  "wait",
        +  "reload",
        +  "go_back",
        +  "go_forward",
        +  "upload",
        +  "request_human_takeover",
        +  "done"
        +]
    • Removedsocial.extract_posts
    • Removedsocial.extract_profile
    • Removedsocial.login
    • Removedsocial.search
  6. 36 tool updatesv1.0.3
    • Changedbrowser.activate_tab3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.close_session3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.close_tab3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.create_session13 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / auth_profile / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 120,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / memory_profile
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 120,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Load a named memory profile into this session.",
        +  "title": "Memory Profile"
        +}
      • changedInput schema / properties / name / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 200,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / protection_mode
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "normal",
        +        "confidential"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Protection Mode"
        +}
      • changedInput schema / properties / proxy_password / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 500,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / proxy_persona
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 200,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Proxy Persona"
        +}
      • changedInput schema / properties / proxy_server / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / proxy_username / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 200,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / start_url / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 2000,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / storage_state_path / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / totp_secret / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 500,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / user_agent / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 2000,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedbrowser.drag_drop3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.eval_js3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.execute_action14 fields changed
      • changedInput schema / $defs / BrowserActionDecision / properties / element_id / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / file_path / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / key / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 120,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / label / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 1000,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / platform / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 120,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / recipient / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 200,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / selector / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 2000,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / text / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 5000,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / url / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 2000,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / username / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / $defs / BrowserActionDecision / properties / value / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 1000,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Removedbrowser.find_by_vision
    • Changedbrowser.find_elements3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.fork_session3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.get_auth_profile1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbrowser.get_console3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.get_html3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Addedbrowser.get_memory_profile
    • Changedbrowser.get_network_log3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.get_page_errors3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.get_request_failures3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.get_session3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.list_auth_profiles1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbrowser.list_downloads3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Addedbrowser.list_memory_profiles
    • Changedbrowser.list_sessions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbrowser.list_tabs3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.observe5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / limit / maximum
        Previous value: -100New value: +200
      • addedInput schema / properties / preset
        Added value: +{
        +  "default": "normal",
        +  "enum": [
        +    "fast",
        +    "normal",
        +    "rich"
        +  ],
        +  "title": "Preset",
        +  "type": "string"
        +}
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Addedbrowser.readiness_check
    • Changedbrowser.request_human_takeover3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.save_auth_profile3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Addedbrowser.save_memory_profile
    • Changedbrowser.screenshot3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.set_viewport3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.stop_trace3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedbrowser.wait_for_selector3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedsocial.extract_posts3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedsocial.extract_profile3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedsocial.login3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
    • Changedsocial.search3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / session_id / maxLength
        Added value: +120
      • addedInput schema / properties / session_id / minLength
        Added value: +1
  7. 32 tool updatesv0.5.0
    • First observedbrowser.activate_tab
    • First observedbrowser.close_session
    • First observedbrowser.close_tab
    • First observedbrowser.create_session
    • First observedbrowser.drag_drop
    • First observedbrowser.eval_js
    • First observedbrowser.execute_action
    • First observedbrowser.find_by_vision
    • First observedbrowser.find_elements
    • First observedbrowser.fork_session
    • First observedbrowser.get_auth_profile
    • First observedbrowser.get_console
    • First observedbrowser.get_html
    • First observedbrowser.get_network_log
    • First observedbrowser.get_page_errors
    • First observedbrowser.get_request_failures
    • First observedbrowser.get_session
    • First observedbrowser.list_auth_profiles
    • First observedbrowser.list_downloads
    • First observedbrowser.list_sessions
    • First observedbrowser.list_tabs
    • First observedbrowser.observe
    • First observedbrowser.request_human_takeover
    • First observedbrowser.save_auth_profile
    • First observedbrowser.screenshot
    • First observedbrowser.set_viewport
    • First observedbrowser.stop_trace
    • First observedbrowser.wait_for_selector
    • First observedsocial.extract_posts
    • First observedsocial.extract_profile
    • First observedsocial.login
    • First observedsocial.search

TDQS

A3.6/5.0
Disambiguation5/5

The two tools serve completely different purposes: one lists saved profiles, the other finds DOM elements. There is no overlap or ambiguity.

Naming Consistency5/5

Both tools consistently use the 'browser.' prefix followed by a verb_noun pattern in snake_case (list_memory_profiles, find_elements).

Tool Count1/5

Only 2 tools for a browser automation server is far too few. Essential operations like navigation, clicking, input, and scraping are missing, making the tool set feel incomplete for its stated domain.

Completeness1/5

The tool surface is severely incomplete. There is no way to navigate, interact with elements, or scrape content, leaving agents unable to perform basic browser automation tasks.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    F
    maintenance
    This server provides cloud browser automation capabilities using Browserbase, Puppeteer, and Stagehand. This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a cloud browser environment.
    5,333
    3,406
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLMs like Claude to navigate the web through Puppeteer-based tools and Steel. Based on the Web Voyager framework, it provides tools for all the standard web actions click clicking/scrolling/typing/etc and taking screenshots.
    16
    54
    MIT

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/LvcidPsyche/auto-browser'

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