webroot-mcp
webroot-mcp
MCP-Server für Webroot (OpenText Endpoint Security / SecureAnywhere, verwaltet über die Global Site Manager "GSM"-Konsole). Stellt die GSM-Konsolen-Sites, Endpoints, Gruppen, Richtlinien, Bedrohungsverlauf, Echtzeit-Agentenstatus und DNS Protection (DNSP)-Methoden der Webroot Unity API als MCP-Tools bereit.
Overview
Zustandsloser HTTP-Dienst. Es werden niemals Anmeldeinformationen gespeichert – jede Anfrage liefert ihre eigenen Anmeldeinformationen über Header, die nur für die Dauer dieser einzelnen Anfrage verwendet werden.
Unterstützt gleichzeitige Anfragen; die Isolierung der Anmeldeinformationen pro Anfrage erfolgt über Python
contextvars, nicht über eine globale/ gemeinsame Client-Instanz.Einstiegspunkte:
POST /mcp(MCP-Protokoll) undGET /health(Gesundheitsprüfung).Standardport:
8080(konfigurierbar überMCP_HTTP_PORT).
Related MCP server: kaseya-vsa-mcp
Authentication
Die Webroot Unity API implementiert standardmäßiges OAuth2 unter Verwendung des Passwort-Grants:
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": "...", ...}Das Zugriffstoken ist nur ~5 Minuten gültig, daher authentifiziert sich dieser Server bei jedem einzelnen Tool-Aufruf neu, anstatt es über MCP-Anfragen hinweg zu cachen – nichts wird gecacht oder gespeichert. Jeder echte API-Aufruf sendet dann Authorization: Bearer <access_token>.
HEADER 授权参数说明
Header | 类型 | 是否必填 | 默认值 | 枚举值 | 字段描述 | Example |
| string | 是 | 无 | 无 | GSM 控制台账号邮箱 |
|
| string | 是 | 无 | 无 | 对应密码 |
|
| string | 是 | 无 | 无 | Unity API Client ID(需联系 Webroot 申请) |
|
| string | 是 | 无 | 无 | Unity API Client Secret |
|
| string | 是 | 无 | 无 | GSM 控制台的 Parent Key Code |
|
Fehlt ein Header, wird 401 zurückgegeben:
{
"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": []
}Eine ungültige Anmeldeinformation erscheint als strukturierter Fehler auf Tool-Ebene (siehe „Fehlerbehandlung“ unten) während des internen Anmeldeschritts, nicht als HTTP-Fehler von diesem Server.
Environment Variables
Variable | 类型 | 是否必填 | 默认值 | 说明 |
| int | 否 |
| HTTP 监听端口 |
| string | 否 |
| HTTP 监听地址 |
| string | 否 |
| Webroot Unity API 基础 URL |
MCP Endpoint
POST /mcp— MCP-Protokoll (streambarer HTTP-Transport)GET /health— Gesundheitsprüfung, gibt{"status": "ok"}zurück (reine lokale Prüfung, hängt nicht von der Webroot-API ab)
Tool List
Alle 10 Tools sind schreibgeschützt (readOnlyHint=True); es gibt keine Schreib-/Lösch-Tools in diesem Dienst.
Tool | 功能 | 参数 |
| 列出该 GSM 控制台下所有站点(客户账号) | 无 |
| 列出指定站点下的受保护终端设备 |
|
| 列出指定站点下的终端分组 |
|
| 列出该 GSM 控制台下的安全策略 | 无 |
| 获取指定站点在某日期范围内的威胁检测历史(范围不能超过 3 个月) |
|
| 获取指定站点的 DNS Protection 拦截流量记录(需该控制台已启用 DNSP) |
|
| 列出 DNS Protection 内容过滤分类(需该控制台已启用 DNSP) | 无 |
| 列出 DNS Protection 拦截原因代码(需该控制台已启用 DNSP) | 无 |
| 获取 DNS Protection 流量汇总统计(需该控制台已启用 DNSP) |
|
| 获取终端 Agent 的实时状态/授权信息 |
|
page_size/batch_size-Obergrenzen: Die öffentliche API-Referenz des Anbieters dokumentiert für diese Parameter auf keinem der obigen Endpunkte ein Maximum, daher wendet dieser Server seinen eigenen Standard (50) und eine harte Obergrenze (200) an, anstatt einen unbegrenzten Wert durchzureichen.
Antworten sind das JSON des Anbieters, kompakt serialisiert (keine hübsche Formatierung, ensure_ascii=False) und auf 20.000 Zeichen begrenzt – ein übermäßig großes Listenfeld wird mit truncated/original_count-Markierungen abgeschnitten, anstatt jemals einen unbegrenzten Blob zurückzugeben.
Error Handling
Fehler werden als In-Band-JSON-Umschlag zurückgegeben (eine normale Tool-Ergebniszeichenfolge, kein MCP-Protokollfehler):
{"error": {"code": "not_found", "message": "...", "retryable": false}}code ist eines aus einem festen Vokabular: not_configured, unauthorized, not_found, invalid_argument, rate_limited, upstream_error. retryable teilt dem Aufrufer mit, ob ein erneuter Versuch desselben Aufrufs erfolgreich sein könnte (true für rate_limited/upstream_error, sonst false). Ein leeres Ergebnisset (z. B. eine Site ohne Endpoints) ist ein normales erfolgreiches Ergebnis, kein not_found-Fehler.
Ausgehende Aufrufe an die Webroot-API verwenden ein 5s-Verbindungs- / 30s-Lese-Timeout und wiederholen 429/5xx-Antworten bis zu 3 Mal mit Backoff (unter Beachtung von Retry-After, begrenzt auf 20s), wobei ein einzelner gepoolter HTTP-Client für die Prozesslebensdauer wiederverwendet wird.
测试示例
# 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": {}
}
}'Live-verifiziert (2026-07-30) gegen eine echte GSM-Konsole, alle 10 Tools Ende-zu-Ende über diesen laufenden Server mit echten Anmeldeinformationen aufgerufen: webroot_get_sites gab 92 echte Sites zurück (z. B. „Pinnacle Technologies“, „Hohimer Wealth Management“); webroot_get_policies gab 11 echte Richtlinien zurück; webroot_get_agent_status gab echte Statusdaten pro Gerät zurück; webroot_get_endpoints und webroot_get_groups (unter Verwendung einer echten Site-ID) gaben beide echte Daten zurück (6 Endpoints, 1 Gruppe mit 46 Geräten); webroot_get_threat_history gab ein gültiges (leeres) Ergebnis für einen echten 2-Monats-Zeitraum zurück. Die 4 DNS Protection-Tools (webroot_get_dnsp_categories/_block_reasons/_traffic_summary/_blocked_traffic) erreichten alle korrekt die API und gaben den eigenen dnsp_not_enabled-Fehler des Anbieters zurück – was beweist, dass die Anfrage-/Authentifizierungspipeline korrekt ist; DNS Protection ist für die GSM-Konsole dieses speziellen Testkontos einfach nicht aktiviert (siehe Bekannte Lücken).
API Reference
Öffentlich, keine Anmeldung erforderlich: https://unityapi.webrootcloudav.com/Docs/en/APIDoc (Leitfaden behandelt die OAuth2-Authentifizierung vollständig; API-Referenz behandelt die Parameter und Antwortform jedes Methodenaufrufs)
Known Gaps
Der Umfang entspricht genau den 10 konfigurierten Endpunkten von MSPbots, nicht der vollständigen API-Oberfläche des Anbieters – die Unity API deckt auch ECom (Lizenzbestellung/-verwaltung), Benachrichtigungen, Agentenbefehle, Site-Erstellung/-Bearbeitung und die OpenText Secure Cloud Platform API ab; diese sind hier nicht im Umfang enthalten.
Die 4 DNS Protection (DNSP)-Tools konnten nicht mit echten Daten verifiziert werden – DNS Protection ist ein Add-on-Produkt, das für die GSM-Konsole des Testkontos nicht aktiviert ist (
dnsp_not_enabled-Fehler, live bestätigt). Die anderen 6 Tools funktionierten mit echten Daten unter Verwendung desselben Zugriffstokens, was bestätigt, dass dies eine Kontofunktionslücke ist, kein Implementierungsfehler.webroot_get_endpoints/webroot_get_groups/webroot_get_threat_historyerfordern einesite_id, auf die der authentifizierte GSM-Benutzer tatsächlich Zugriff hat – Webroot GSM-Zugriff ist pro Site; der Versuch, diese Aufrufe gegen eine Site auszuführen, für die der Benutzer keinen Zugriff hat, gibt einen sauberen"User does not have access to this console"-Fehler zurück (live bei einer der 92 Sites während des Tests beobachtet), kein Fehler in diesem Server.webroot_get_threat_historylehnt Datumsbereiche über 3 Monate ab (Invalid data entered - Date Range Over 3 Months, live bestätigt) – dieser Server erzwingt oder teilt den Bereich nicht automatisch; er reichtstart_date/end_dateunverändert durch.
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