Skip to main content
Glama
MSPbotsAI

webroot-mcp

by MSPbotsAI

webroot-mcp

Webroot(OpenText エンドポイントセキュリティ / SecureAnywhere、 Global Site Manager(GSM)コンソールで管理)用のMCPサーバー。Webroot Unity API のGSMコンソールサイト、エンドポイント、グループ、ポリシー、脅威 履歴、リアルタイムエージェントステータス、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を実装しており、パスワード グラントを使用します:

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> ヘッダーを送信します。

ヘッダー認証パラメータ

ヘッダー

型

必須

デフォルト

列挙値

フィールド説明

例

X-Webroot-Username

string

はい

なし

なし

GSM コンソールアカウントのメールアドレス

admin@example.com

X-Webroot-Password

string

はい

なし

なし

対応するパスワード

••••••••

X-Webroot-Client-Id

string

はい

なし

なし

Unity API クライアントID(Webroot への申請が必要)

client_abc123@example.com

X-Webroot-Client-Secret

string

はい

なし

なし

Unity API クライアントシークレット

a1B2c3D4%e5F6

X-Webroot-Parent-Keycode

string

はい

なし

なし

GSM コンソールのペアレントキーコード

AB12-GSMT-3456-CD78-9EF0

ヘッダーが1つでも欠けていると 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レベルのエラーではありません。

環境変数

変数

型

必須

デフォルト

説明

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)。このサービスには 書き込み/削除ツールはありません。

ツール

機能

パラメータ

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

指定したサイトのリアルタイムエージェントステータスを取得

site_id(必須)、page_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 件、デバイス 46 台のグループ 1 件); 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 リファレンス

既知のギャップ

  • スコープは MSPbots が設定した 10 エンドポイントのみであり、ベンダーの 全 API サーフェスではない — Unity API は ECom(ライセンス 注文/管理)、通知、エージェントコマンド発行、サイト 作成/編集、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.
    -