webroot-mcp
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>.
Параметры заголовков
Заголовок | Тип | Обязательный | Значение по умолчанию | Допустимые значения | Описание поля | Пример |
| string | да | нет | нет | Электронная почта учетной записи GSM |
|
| string | да | нет | нет | Соответствующий пароль |
|
| string | да | нет | нет | Unity API Client ID (необходимо запросить у Webroot) |
|
| string | да | нет | нет | Unity API Client Secret |
|
| string | да | нет | нет | Parent Key Code консоли GSM |
|
Отсутствие любого заголовка возвращает 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-уровня этого сервера.
Переменные окружения
Переменная | Тип | Обязательная | Значение по умолчанию | Описание |
| int | нет |
| Порт прослушивания HTTP |
| string | нет |
| Адрес прослушивания HTTP |
| string | нет |
| Базовый URL Webroot Unity API |
Конечная точка MCP
POST /mcp— протокол MCP (потоковый HTTP-транспорт)GET /health— проверка работоспособности, возвращает{"status": "ok"}(чисто локальная проверка, не зависит от Webroot API)
Список инструментов
Все 10 инструментов доступны только для чтения (readOnlyHint=True); в этом сервисе нет инструментов записи/удаления.
Инструмент | Функция | Параметры |
| Вывести список всех сайтов (учетных записей клиентов) в этой консоли GSM | нет |
| Вывести список защищенных конечных устройств на указанном сайте |
|
| Вывести список групп конечных устройств на указанном сайте |
|
| Вывести список политик безопасности для этой консоли GSM | нет |
| Получить историю обнаружения угроз для сайта за период (не более 3 месяцев) |
|
| Получить записи заблокированного трафика DNS Protection для сайта (требуется включенный DNSP) |
|
| Вывести список категорий контентной фильтрации DNS Protection (требуется включенный DNSP) | нет |
| Вывести список кодов причин блокировки DNS Protection (требуется включенный DNSP) | нет |
| Получить сводную статистику трафика DNS Protection (требуется включенный DNSP) |
|
| Получить статус агента конечного устройства в реальном времени / информацию об авторизации |
|
Ограничения 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как есть.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityBmaintenanceAn MCP server for ConnectWise Manage PSA, enabling management of tickets, projects, contacts, billing, and service operations through ConnectWise Manage's API.19Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP 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
- AlicenseNot gradedqualityAmaintenanceMCP 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.4835MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that exposes Acronis Cyber Protect Cloud APIs as 14 read-only tools for managing alerts, tasks, agents, resources, policies, and tenants.
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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