Skip to main content
Glama
MSPbotsAI

webroot-mcp

by MSPbotsAI

webroot-mcp

MCP-сервер для Webroot (OpenText endpoint security / SecureAnywhere, управление через консоль Global Site Manager "GSM"). Предоставляет сайты, конечные точки, группы, политики, историю угроз, статус агентов в реальном времени и методы DNS Protection (DNSP) консоли GSM из Webroot Unity API в виде MCP-инструментов.

Обзор

  • Stateless HTTP-сервис. Учетные данные нигде не сохраняются — каждый запрос передает свои собственные учетные данные через заголовки, которые используются только в течение времени выполнения этого единственного запроса.

  • Поддерживает конкурентные запросы; изоляция учетных данных на уровне запроса реализована через Python contextvars, а не через глобальный/общий экземпляр клиента.

  • Точки входа: POST /mcp (протокол MCP) и GET /health (проверка работоспособности).

  • Порт по умолчанию: 8080 (настраивается через MCP_HTTP_PORT).

Related MCP server: kaseya-vsa-mcp

Аутентификация

Webroot Unity API реализует стандартный OAuth2 с использованием предоставления пароля:

POST https://unityapi.webrootcloudav.com/auth/token
  grant_type=password&username=...&password=...&client_id=...&client_secret=...
  &scope=Console.GSM SkyStatus.GSM
-> {"access_token": "...", "expires_in": 299, "refresh_token": "...", ...}

Токен доступа действителен всего ~5 минут, поэтому этот сервер заново аутентифицируется при каждом вызове инструмента, а не кэширует его между MCP-запросами — ничего не кэшируется и не сохраняется. Каждый реальный вызов API затем отправляет Authorization: Bearer <access_token>.

Параметры заголовков

Заголовок

Тип

Обязательный

Значение по умолчанию

Допустимые значения

Описание поля

Пример

X-Webroot-Username

string

да

нет

нет

Электронная почта учетной записи GSM

admin@example.com

X-Webroot-Password

string

да

нет

нет

Соответствующий пароль

••••••••

X-Webroot-Client-Id

string

да

нет

нет

Unity API Client ID (необходимо запросить у Webroot)

client_abc123@example.com

X-Webroot-Client-Secret

string

да

нет

нет

Unity API Client Secret

a1B2c3D4%e5F6

X-Webroot-Parent-Keycode

string

да

нет

нет

Parent Key Code консоли GSM

AB12-GSMT-3456-CD78-9EF0

Отсутствие любого заголовка возвращает 401:

{
  "error": "Missing credentials",
  "message": "This server requires the X-Webroot-Username, X-Webroot-Password, X-Webroot-Client-Id, X-Webroot-Client-Secret, X-Webroot-Parent-Keycode headers",
  "required_headers": ["X-Webroot-Username", "X-Webroot-Password", "X-Webroot-Client-Id", "X-Webroot-Client-Secret", "X-Webroot-Parent-Keycode"],
  "optional_headers": []
}

Неверные учетные данные отображаются как структурированная ошибка уровня инструмента (см. «Обработка ошибок» ниже) на этапе внутреннего входа в систему, а не как ошибка HTTP-уровня этого сервера.

Переменные окружения

Переменная

Тип

Обязательная

Значение по умолчанию

Описание

MCP_HTTP_PORT

int

нет

8080

Порт прослушивания HTTP

MCP_HTTP_HOST

string

нет

0.0.0.0

Адрес прослушивания HTTP

WEBROOT_BASE_URL

string

нет

https://unityapi.webrootcloudav.com

Базовый URL Webroot Unity API

Конечная точка MCP

  • POST /mcp — протокол MCP (потоковый HTTP-транспорт)

  • GET /health — проверка работоспособности, возвращает {"status": "ok"} (чисто локальная проверка, не зависит от Webroot API)

Список инструментов

Все 10 инструментов доступны только для чтения (readOnlyHint=True); в этом сервисе нет инструментов записи/удаления.

Инструмент

Функция

Параметры

webroot_get_sites

Вывести список всех сайтов (учетных записей клиентов) в этой консоли GSM

нет

webroot_get_endpoints

Вывести список защищенных конечных устройств на указанном сайте

site_id (обязательный), page_size (необязательный, по умолчанию 50, жесткий максимум 200)

webroot_get_groups

Вывести список групп конечных устройств на указанном сайте

site_id (обязательный)

webroot_get_policies

Вывести список политик безопасности для этой консоли GSM

нет

webroot_get_threat_history

Получить историю обнаружения угроз для сайта за период (не более 3 месяцев)

site_id, start_date, end_date (все обязательные), page_size (необязательный, жесткий максимум 200), page_nr (необязательный)

webroot_get_dnsp_blocked_traffic

Получить записи заблокированного трафика DNS Protection для сайта (требуется включенный DNSP)

site_id, start_date, end_date (все обязательные), page_size (необязательный, жесткий максимум 200), page_nr (необязательный)

webroot_get_dnsp_categories

Вывести список категорий контентной фильтрации DNS Protection (требуется включенный DNSP)

нет

webroot_get_dnsp_block_reasons

Вывести список кодов причин блокировки DNS Protection (требуется включенный DNSP)

нет

webroot_get_dnsp_traffic_summary

Получить сводную статистику трафика DNS Protection (требуется включенный DNSP)

start_date, end_date (оба обязательные)

webroot_get_agent_status

Получить статус агента конечного устройства в реальном времени / информацию об авторизации

batch_size (необязательный, по умолчанию 50, жесткий максимум 200)

Ограничения page_size/batch_size: в публичной справочной документации API поставщика не указан максимум для этих параметров ни для одной из вышеуказанных конечных точек, поэтому этот сервер применяет собственное значение по умолчанию (50) и жесткий максимум (200), а не передает неограниченное значение.

Ответы представляют собой JSON поставщика, сериализованный компактно (без форматирования, ensure_ascii=False) и ограниченный 20 000 символов — слишком большое поле списка обрезается с помощью маркеров truncated/original_count, а не возвращается неограниченный блок данных.

Обработка ошибок

Ошибки возвращаются в виде встроенного JSON-конверта (обычная строка результата инструмента, а не ошибка протокола MCP):

{"error": {"code": "not_found", "message": "...", "retryable": false}}

code — одно из фиксированного набора: not_configured, unauthorized, not_found, invalid_argument, rate_limited, upstream_error. retryable сообщает вызывающей стороне, может ли повторная попытка того же вызова увенчаться успехом (true для rate_limited/upstream_error, false в противном случае). Пустой набор результатов (например, сайт без конечных точек) — это обычный успешный результат, а не ошибка not_found.

Исходящие вызовы Webroot API используют таймаут подключения 5 с / таймаут чтения 30 с и повторяют ответы 429/5xx до 3 раз с экспоненциальной задержкой (с учетом Retry-After, максимум 20 с), используя единый пул HTTP-соединений на время жизни процесса.

Примеры тестирования

# Health check
curl -s http://localhost:8080/health

# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp \
  -H "X-Webroot-Username: admin@example.com" \
  -H "X-Webroot-Password: <your-password>" \
  -H "X-Webroot-Client-Id: <your-client-id>" \
  -H "X-Webroot-Client-Secret: <your-client-secret>" \
  -H "X-Webroot-Parent-Keycode: <your-parent-keycode>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: <session-id-from-initialize>" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "webroot_get_sites",
      "arguments": {}
    }
  }'

Проверено вживую (2026-07-30) на реальной консоли GSM: все 10 инструментов вызывались сквозным образом через этот запущенный сервер с реальными учетными данными: webroot_get_sites вернул 92 реальных сайта (например, "Pinnacle Technologies", "Hohimer Wealth Management"); webroot_get_policies вернул 11 реальных политик; webroot_get_agent_status вернул реальные данные о статусе каждого устройства; webroot_get_endpoints и webroot_get_groups (с использованием реального идентификатора сайта) оба вернули реальные данные (6 конечных точек, 1 группа с 46 устройствами); webroot_get_threat_history вернул допустимый (пустой) результат для реального диапазона в 2 месяца. Все 4 инструмента DNS Protection (webroot_get_dnsp_categories/_block_reasons/_traffic_summary/_blocked_traffic) корректно обращались к API и возвращали собственную ошибку поставщика dnsp_not_enabled — что доказывает корректность конвейера запросов/аутентификации; DNS Protection просто не включен для консоли GSM этой конкретной тестовой учетной записи (см. «Известные ограничения»).

Справочник по API

  • Публичный, без входа в систему: https://unityapi.webrootcloudav.com/Docs/en/APIDoc (Руководство полностью описывает OAuth2-аутентификацию; Справочник по API охватывает параметры и структуру ответов каждого метода)

Известные ограничения

  • Область действия ограничена 10 настроенными конечными точками MSPbots, а не полным API поставщика — Unity API также охватывает ECom (заказ/управление лицензиями), уведомления, отправку команд агенту, создание/редактирование сайтов и платформенный API OpenText Secure Cloud; все это выходит за рамки данного проекта.

  • 4 инструмента DNS Protection (DNSP) не удалось проверить на реальных данных — DNS Protection является дополнительным продуктом, который не включен для консоли GSM тестовой учетной записи (ошибка dnsp_not_enabled, подтверждено вживую). Остальные 6 инструментов успешно работали с реальными данными, используя тот же самый токен доступа, что подтверждает, что это ограничение учетной записи, а не ошибка реализации.

  • webroot_get_endpoints/webroot_get_groups/webroot_get_threat_history требуют site_id, к которому у аутентифицированного пользователя GSM действительно есть доступ — доступ Webroot GSM осуществляется по сайтам; попытка вызова этих методов для сайта, к которому у пользователя нет доступа, возвращает понятную ошибку "User does not have access to this console" (наблюдалось вживую для одного из 92 сайтов во время тестирования), а не ошибку этого сервера.

  • webroot_get_threat_history отклоняет диапазоны дат более 3 месяцев (Invalid data entered - Date Range Over 3 Months, подтверждено вживую) — этот сервер не применяет и не разбивает диапазон автоматически; он передает start_date/end_date как есть.

F
license - not found
Not graded
quality - not tested
C
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
    MCP server for Kaseya VSA — endpoints, patches, procedures, alarms, and tickets. Enables AI assistants to manage and monitor devices via the Kaseya VSA RMM platform.
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for ConnectWise PSA (Manage) enabling ticket management, time entry, and read-only lookups of companies, contacts, and configurations with role-based access control and bring-your-own-API-keys support.
    483
    5
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that exposes Acronis Cyber Protect Cloud APIs as 14 read-only tools for managing alerts, tasks, agents, resources, policies, and tenants.

View all related MCP servers

Related MCP Connectors

  • MCP Server for agents to onboard, pay, and provision services autonomously with InFlow

  • A paid remote MCP for Unity-MCP, built to return verdicts, receipts, usage logs, and audit-ready JSO

  • A paid remote MCP for developer endpoint scanner MCP, built to return verdicts, receipts, usage logs

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/MSPbotsAI/webroot-mcp'

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