webroot-mcp
webroot-mcp
Servidor MCP para Webroot (seguridad de endpoints de OpenText / SecureAnywhere, gestionado a través de la consola Global Site Manager "GSM"). Expone los sitios, endpoints, grupos, políticas, historial de amenazas, estado del agente en tiempo real y métodos de DNS Protection (DNSP) de la Unity API de Webroot como herramientas MCP.
Descripción general
Servicio HTTP sin estado. Nunca se persisten credenciales — cada solicitud aporta sus propias credenciales mediante cabeceras, utilizadas únicamente durante la vida de esa única solicitud.
Admite solicitudes concurrentes; el aislamiento de credenciales por solicitud se realiza mediante
contextvarsde Python, no mediante una instancia de cliente global/compartida.Puntos de entrada:
POST /mcp(protocolo MCP) yGET /health(comprobación de salud).Puerto predeterminado:
8080(configurable medianteMCP_HTTP_PORT).
Related MCP server: kaseya-vsa-mcp
Autenticación
La Unity API de Webroot implementa OAuth2 estándar, utilizando la concesión de contraseña:
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": "...", ...}El token de acceso es válido solo ~5 minutos, por lo que este servidor se re-autentica de nuevo en cada llamada de herramienta en lugar de almacenarlo en caché entre solicitudes MCP — no se almacena ni persiste nada. Cada llamada real a la API envía entonces Authorization: Bearer <access_token>.
Descripción de parámetros de autorización
Cabecera | Tipo | ¿Obligatorio? | Valor predeterminado | Valores de enumeración | Descripción del campo | Ejemplo |
| string | Sí | Ninguno | Ninguno | Correo de la cuenta de la consola GSM |
|
| string | Sí | Ninguno | Ninguno | Contraseña correspondiente |
|
| string | Sí | Ninguno | Ninguno | ID de cliente de Unity API (debe solicitarse a Webroot) |
|
| string | Sí | Ninguno | Ninguno | Secreto de cliente de Unity API |
|
| string | Sí | Ninguno | Ninguno | Parent Key Code de la consola GSM |
|
La ausencia de cualquier cabecera devuelve 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": []
}Una credencial no válida se manifiesta como un error estructurado a nivel de herramienta (ver "Manejo de errores" más abajo) durante el paso de inicio de sesión interno, no como un error a nivel HTTP de este servidor.
Variables de entorno
Variable | Tipo | ¿Obligatorio? | Valor predeterminado | Descripción |
| int | No |
| Puerto de escucha HTTP |
| string | No |
| Dirección de escucha HTTP |
| string | No |
| URL base de la Unity API de Webroot |
Endpoint MCP
POST /mcp— protocolo MCP (transporte HTTP transmisible)GET /health— comprobación de salud, devuelve{"status": "ok"}(sonda puramente local, no depende de la API de Webroot)
Lista de herramientas
Las 10 herramientas son de solo lectura (readOnlyHint=True); no hay herramientas de escritura/eliminación en este servicio.
Herramienta | Función | Parámetros |
| Lista todos los sitios (cuentas de cliente) bajo esta consola GSM | Ninguno |
| Lista los dispositivos terminales protegidos bajo un sitio especificado |
|
| Lista los grupos de endpoints bajo un sitio especificado |
|
| Lista las políticas de seguridad bajo esta consola GSM | Ninguno |
| Obtiene el historial de detección de amenazas de un sitio en un rango de fechas (el rango no puede superar los 3 meses) |
|
| Obtiene los registros de tráfico bloqueado de DNS Protection de un sitio (requiere que la consola tenga DNSP habilitado) |
|
| Lista las categorías de filtrado de contenido de DNS Protection (requiere que la consola tenga DNSP habilitado) | Ninguno |
| Lista los códigos de motivo de bloqueo de DNS Protection (requiere que la consola tenga DNSP habilitado) | Ninguno |
| Obtiene las estadísticas resumidas de tráfico de DNS Protection (requiere que la consola tenga DNSP habilitado) |
|
| Obtiene el estado/la información de autorización en tiempo real del agente del endpoint |
|
Límites de page_size/batch_size: la referencia pública de la API del proveedor no documenta un máximo para estos parámetros en ningún endpoint de los anteriores, por lo que este servidor aplica su propio valor predeterminado (50) y límite máximo (200) en lugar de transmitir un valor sin límite.
Las respuestas son el JSON del proveedor, serializado de forma compacta (sin formato bonito, ensure_ascii=False) y limitado a 20.000 caracteres — un campo de lista sobredimensionado se trunca con los marcadores truncated/original_count en lugar de devolver nunca un blob sin límite.
Manejo de errores
Los errores se devuelven como un envoltorio JSON en banda (un resultado de herramienta normal como cadena, no un error de protocolo MCP):
{"error": {"code": "not_found", "message": "...", "retryable": false}}code es uno de un vocabulario fijo: not_configured, unauthorized, not_found, invalid_argument, rate_limited, upstream_error. retryable indica al llamante si reintentar la misma llamada podría tener éxito (true para rate_limited/upstream_error, false en caso contrario). Un conjunto de resultados vacío (por ejemplo, un sitio sin endpoints) es un resultado exitoso normal, no un error not_found.
Las llamadas salientes a la API de Webroot utilizan un tiempo de espera de conexión de 5s / lectura de 30s, y reintentan respuestas 429/5xx hasta 3 veces con retroceso (respetando Retry-After, limitado a 20s), reutilizando un único cliente HTTP agrupado durante toda la vida del proceso.
Ejemplo de prueba
# 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": {}
}
}'Verificado en vivo (2026-07-30) contra una consola GSM real, las 10 herramientas llamadas de extremo a extremo a través de este servidor en ejecución con credenciales reales: webroot_get_sites devolvió 92 sitios reales (por ejemplo, "Pinnacle Technologies", "Hohimer Wealth Management"); webroot_get_policies devolvió 11 políticas reales; webroot_get_agent_status devolvió datos reales de estado por dispositivo; webroot_get_endpoints y webroot_get_groups (usando un ID de sitio real) devolvieron ambos datos reales (6 endpoints, 1 grupo con 46 dispositivos); webroot_get_threat_history devolvió un resultado válido (vacío) para un rango real de 2 meses. Las 4 herramientas de DNS Protection (webroot_get_dnsp_categories/_block_reasons/_traffic_summary/_blocked_traffic) alcanzaron correctamente la API y devolvieron el error dnsp_not_enabled del propio proveedor — lo que demuestra que la canalización de solicitud/autenticación es correcta; DNS Protection simplemente no está habilitado para la consola GSM de esta cuenta de prueba en particular (ver Limitaciones conocidas).
Referencia de la API
Pública, sin necesidad de inicio de sesión: https://unityapi.webrootcloudav.com/Docs/en/APIDoc (La Guía cubre la autenticación OAuth2 en su totalidad; la Referencia de la API cubre los parámetros y la forma de las respuestas de cada método)
Limitaciones conocidas
El alcance es exactamente los 10 endpoints configurados de MSPbots, no la superficie completa de la API del proveedor — la Unity API también cubre ECom (pedido/gestión de licencias), Notificaciones, emisión de comandos al agente, creación/edición de sitios y la API de la plataforma OpenText Secure Cloud; todo eso queda fuera del alcance aquí.
Las 4 herramientas de DNS Protection (DNSP) no pudieron verificarse con datos reales — DNS Protection es un producto adicional que no está habilitado para la consola GSM de la cuenta de prueba (error
dnsp_not_enabled, confirmado en vivo). Las otras 6 herramientas tuvieron éxito con datos reales usando exactamente el mismo token de acceso, lo que confirma que se trata de una carencia de funcionalidad de la cuenta, no de un error de implementación.webroot_get_endpoints/webroot_get_groups/webroot_get_threat_historyrequieren unsite_idal que el usuario GSM autenticado tenga realmente acceso — el acceso GSM de Webroot es por sitio; intentar estas llamadas contra un sitio al que el usuario no tiene acceso concedido devuelve un error limpio"User does not have access to this console"(observado en vivo para uno de los 92 sitios durante las pruebas), no un error de este servidor.webroot_get_threat_historyrechaza rangos de fechas superiores a 3 meses (Invalid data entered - Date Range Over 3 Months, confirmado en vivo) — este servidor no impone ni divide automáticamente el rango; transmitestart_date/end_datetal cual.
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