Skip to main content
Glama
MSPbotsAI

webroot-mcp

by MSPbotsAI

webroot-mcp

用于 Webroot(OpenText 端点安全 / SecureAnywhere,通过 Global Site Manager "GSM" 控制台管理)的 MCP 服务器。将 Webroot Unity API 的 GSM 控制台站点、端点、分组、策略、威胁历史、实时 Agent 状态以及 DNS Protection(DNSP)方法以 MCP 工具的形式暴露出来。

概述

  • 无状态 HTTP 服务。不会持久化任何凭据——每个请求都通过请求头自带凭据,仅在该单个请求的生命周期内使用。

  • 支持并发请求;每个请求的凭据隔离通过 Python contextvars 实现,而非使用全局/共享客户端实例。

  • 入口点:POST /mcp(MCP 协议)和 GET /health(健康检查)。

  • 默认端口:8080(可通过 MCP_HTTP_PORT 配置)。

Related MCP server: mcp-connectwise-psa

身份验证

Webroot Unity API 实现标准 OAuth2,使用密码授权(password grant):

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>。

HEADER 授权参数说明

Header

类型

是否必填

默认值

枚举值

字段描述

Example

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

是

无

无

GSM 控制台的 Parent Key Code

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 级错误。

环境变量

Variable

类型

是否必填

默认值

说明

MCP_HTTP_PORT

int

否

8080

HTTP 监听端口

MCP_HTTP_HOST

string

否

0.0.0.0

HTTP 监听地址

WEBROOT_BASE_URL

string

否

https://unityapi.webrootcloudav.com

Webroot Unity API 基础 URL

MCP 端点

  • POST /mcp — MCP 协议(流式 HTTP 传输)

  • GET /health — 健康检查,返回 {"status": "ok"}(纯本地探测,不依赖 Webroot API)

工具列表

全部 10 个工具均为只读(readOnlyHint=True);该服务不包含任何写入/删除工具。

Tool

功能

参数

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

获取终端 Agent 的实时状态/授权信息

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 告知调用方重试同一调用是否可能成功(rate_limited/upstream_error 为 true,否则为 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(使用真实站点 ID)均返回了真实数据(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 错误——证明请求/身份验证管道是正确的;只是该特定测试账户的 GSM 控制台未启用 DNS Protection(参见"已知差距")。

API 参考

已知差距

  • 范围恰好是 MSPbots 配置的 10 个端点,而非厂商的完整 API 面——Unity API 还涵盖 ECom(许可证订购/管理)、通知、Agent 命令下发、站点创建/编辑以及 OpenText Secure Cloud 平台 API;这些不在本服务范围内。

  • 4 个 DNS Protection(DNSP)工具无法用真实数据验证——DNS Protection 是一个附加产品,测试账户的 GSM 控制台未启用该产品(dnsp_not_enabled 错误,已在线确认)。其他 6 个工具使用完全相同的访问令牌成功获取了真实数据,确认这是账户功能差距,而非实现缺陷。

  • webroot_get_endpoints/webroot_get_groups/webroot_get_threat_history 需要经过身份验证的 GSM 用户实际有权访问的 site_id——Webroot GSM 访问是按站点授权的;对用户未被授予访问权限的站点调用这些方法会返回干净的 "User does not have access to this console" 错误(测试期间在 92 个站点中的 1 个上在线观察到),而非该服务器的缺陷。

  • webroot_get_threat_history 拒绝超过 3 个月的日期范围(Invalid data entered - Date Range Over 3 Months,已在线确认)——该服务器不强制或自动拆分该范围;它按原样透传 start_date/end_date。

Related MCP Connectors

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
    C
    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.
    99 npm
    6
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that exposes Acronis Cyber Protect Cloud APIs as 14 read-only tools for managing alerts, tasks, agents, resources, policies, and tenants.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Check Point Harmony Endpoint that exposes policy, asset, vulnerability, quarantine, and remediation API methods as MCP tools, with per-request credential isolation and automatic two-step authentication.
    -