Skip to main content
Glama
MSPbotsAI

webroot-mcp

by MSPbotsAI

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 contextvars de Python, no mediante una instancia de cliente global/compartida.

  • Puntos de entrada: POST /mcp (protocolo MCP) y GET /health (comprobación de salud).

  • Puerto predeterminado: 8080 (configurable mediante MCP_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

X-Webroot-Username

string

Ninguno

Ninguno

Correo de la cuenta de la consola GSM

admin@example.com

X-Webroot-Password

string

Ninguno

Ninguno

Contraseña correspondiente

••••••••

X-Webroot-Client-Id

string

Ninguno

Ninguno

ID de cliente de Unity API (debe solicitarse a Webroot)

client_abc123@example.com

X-Webroot-Client-Secret

string

Ninguno

Ninguno

Secreto de cliente de Unity API

a1B2c3D4%e5F6

X-Webroot-Parent-Keycode

string

Ninguno

Ninguno

Parent Key Code de la consola GSM

AB12-GSMT-3456-CD78-9EF0

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

MCP_HTTP_PORT

int

No

8080

Puerto de escucha HTTP

MCP_HTTP_HOST

string

No

0.0.0.0

Dirección de escucha HTTP

WEBROOT_BASE_URL

string

No

https://unityapi.webrootcloudav.com

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

webroot_get_sites

Lista todos los sitios (cuentas de cliente) bajo esta consola GSM

Ninguno

webroot_get_endpoints

Lista los dispositivos terminales protegidos bajo un sitio especificado

site_id (obligatorio), page_size (opcional, predeterminado 50, límite máximo 200)

webroot_get_groups

Lista los grupos de endpoints bajo un sitio especificado

site_id (obligatorio)

webroot_get_policies

Lista las políticas de seguridad bajo esta consola GSM

Ninguno

webroot_get_threat_history

Obtiene el historial de detección de amenazas de un sitio en un rango de fechas (el rango no puede superar los 3 meses)

site_id, start_date, end_date (todos obligatorios), page_size (opcional, límite máximo 200), page_nr (opcional)

webroot_get_dnsp_blocked_traffic

Obtiene los registros de tráfico bloqueado de DNS Protection de un sitio (requiere que la consola tenga DNSP habilitado)

site_id, start_date, end_date (todos obligatorios), page_size (opcional, límite máximo 200), page_nr (opcional)

webroot_get_dnsp_categories

Lista las categorías de filtrado de contenido de DNS Protection (requiere que la consola tenga DNSP habilitado)

Ninguno

webroot_get_dnsp_block_reasons

Lista los códigos de motivo de bloqueo de DNS Protection (requiere que la consola tenga DNSP habilitado)

Ninguno

webroot_get_dnsp_traffic_summary

Obtiene las estadísticas resumidas de tráfico de DNS Protection (requiere que la consola tenga DNSP habilitado)

start_date, end_date (ambos obligatorios)

webroot_get_agent_status

Obtiene el estado/la información de autorización en tiempo real del agente del endpoint

batch_size (opcional, predeterminado 50, límite máximo 200)

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

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_history requieren un site_id al 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_history rechaza 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; transmite start_date/end_date tal cual.

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