Unitrends Backup について
Unitrends Backup MCP サーバーは、バックアップの監視やリカバリー操作を行う AI アシスタントと MCP クライアントに、Unitrends Backup API を提供します。アプライアンス、保護対象、ジョブ、復旧ポイント、アラート、RPO 適合状況を扱います。
主な機能
- 01アプライアンスと保護対象の一覧表示
- 02実行中および過去のバックアップジョブの確認
- 03資産の復旧ポイントの参照
- 04リストアの登録と状態確認
- 05未解決アラームの確認
- 06RPO 適合レポートの取得
活用シーン
- 01アプライアンスと資産のバックアップ状況確認
- 02バックアップジョブと復旧ポイントの追跡
- 03リストア登録後の進行状況の監視
- 04アラートと RPO 適合状況の確認
MCP 対応
バックアップ監視、復旧ポイントの照会、リストア登録、アラート確認など、Unitrends Backup API の操作を MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e UNITRENDS_BASE_URL -e UNITRENDS_USERNAME -e UNITRENDS_PASSWORD -e UNITRENDS_VERIFY_TLS -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/unitrends-mcp:v1.1.5UNITRENDS_BASE_URLBase URL of the Unitrends appliance or MSP Console (e.g. https://unitrends.example.com)UNITRENDS_USERNAMEUnitrends API usernameUNITRENDS_PASSWORDシークレットUnitrends API passwordUNITRENDS_VERIFY_TLSVerify TLS certificates. Set 'false' for self-signed appliances.MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.AUTH_MODEシークレットCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.LOG_LEVELLog verbosity: debug, info, warn, errorローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wyre-ai/unitrends-mcp:v1.1.5stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Unitrends Backup MCP Server
Model Context Protocol サーバーです。Unitrends Backup API を Claude やその他の MCP クライアントに公開します。
できること
Unitrends アプライアンス(または MSP Console)のバックアップ状況を、AI アシスタントで直接確認できます。アプライアンスや保護対象のアセットの一覧表示、実行中および過去のバックアップジョブの監視、リカバリポイントの参照、リストアやレプリケーションのキュー登録、未解決のアラームや RPO コンプライアンスの確認が可能です。
- インタラクティブなアプライアンスカード(MCP Apps):
unitrends_get_applianceは MCP Apps ホスト(Claude Desktop/web)でインタラクティブなカードとして表示されます。デフォルトではニュートラルなデザインで、window.__BRAND__の挿入またはMCP_BRAND_*環境変数でブランド設定ができます。他のホストでは従来どおり JSON が返されます。
ツール
| ツール | 目的 |
|---|---|
unitrends_list_appliances | MSP Console 配下のアプライアンスを一覧表示します |
unitrends_get_appliance | 1 台のアプライアンスの詳細を取得します(MCP Apps ホストではインタラクティブなカードとして表示されます) |
unitrends_list_assets | 保護対象のアセットを一覧表示します(applianceId が必須です。未指定の場合は入力を求めます) |
unitrends_get_asset | 1 件のアセットの詳細を取得します |
unitrends_list_running_jobs | 現在実行中およびキューに登録されたバックアップジョブを取得します |
unitrends_list_job_history | 過去のジョブを取得します(日付範囲の入力を求めます) |
unitrends_list_recovery_points | アセットのリカバリポイントを取得します |
unitrends_queue_restore | リストアをキューに登録します(破壊的操作 — 確認が必要です) |
unitrends_get_restore_status | リストアの進捗を確認します |
unitrends_list_alerts | 未解決のアラームを取得します |
unitrends_get_success_rate | RPO コンプライアンスレポートを取得します(日付範囲の入力を求めます) |
認証情報
.env.example をコピーします。このファイルの CONDUIT_S2S_SECRET は空のままにしてください。
ローカル(env モードおよび stdio)
stdio トランスポートは以下の変数を読み込みます。CONDUIT_S2S_SECRET は使用しません。
export UNITRENDS_BASE_URL="https://unitrends.example.com"
export UNITRENDS_USERNAME="..."
export UNITRENDS_PASSWORD="..."
export UNITRENDS_VERIFY_TLS="true" # 'false' for self-signed appliances
HTTP サービス間認証
MCP_TRANSPORT=http の場合、CONDUIT_S2S_SECRET が必要です。値が空、または既知のプレースホルダー(changeme、change-me、placeholder、secret、example、your-s2s-secret、your-secret、replace-me、replace-with-a-real-secret、s2s-secret)の場合、プロセスはエラーを記録してゼロ以外の終了コードで終了します。シークレットが出力されることはありません。openssl rand -hex 32 で生成してください。
MCP_ALLOW_INSECURE_DEV=1 を設定した場合に限り、シークレットなしで HTTP を起動できます。このフラグは正確に 1 でなければなりません。プロセスは警告を記録し、X-Gateway-S2S を検証せず、127.0.0.1 のみでリッスンします。このモードでは、ループバック以外の MCP_HTTP_HOST(0.0.0.0 を含む)は無視され、上書きがログに記録されます。既知のプレースホルダーが設定されている場合は、引き続き起動が拒否されます。この迂回手段を使うには、シークレットの設定を解除してください。
実際のシークレットが設定されている場合、MCP_HTTP_HOST が反映されます(0.0.0.0 も指定できます)。MCP_HTTP_HOST が未設定でシークレットが設定されている場合、サーバーは 0.0.0.0 にバインドします。シークレットがない場合、バインドアドレスは 127.0.0.1 です。コンテナーイメージでは MCP_HTTP_HOST=0.0.0.0 が設定されています。
実際のシークレットが設定されている場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。値は t=<unix seconds>,v1=<hex hmac-sha256> です。MAC は、ヘッダーにも含まれる同じプレフィックスの ASCII 文字列 t=<unix seconds> に対し、CONDUIT_S2S_SECRET をキーとして HMAC-SHA256 で計算します。タイムスタンプはサーバーの時刻から 300 秒以内でなければなりません。ヘッダーがないか無効な場合は 401 が返され、ベンダーの認証情報が読み取られる前にリクエストが拒否されます。
/health は認証なしで利用でき、認証情報を読み取りません。コンテナーのヘルスチェックに使用されます。
ホスト型(ゲートウェイモード)
AUTH_MODE=gateway(Compose のデフォルト)では、すべての /mcp リクエストに以下のヘッダーが必要です。必須ヘッダーが欠けているリクエストは 401 となり、プロセス環境の UNITRENDS_* にはフォールバックしません。
X-Unitrends-Base-URL(必須)X-Unitrends-Username(必須)X-Unitrends-Password(必須、シークレット)X-Unitrends-Verify-TLS(任意、デフォルトはtrue)X-Gateway-S2S(CONDUIT_S2S_SECRETが設定されている場合は必須)
// Gateway injects vendor credentials and the X-Gateway-S2S proof
const response = await fetch("http://gateway:8080/mcp", {
method: "POST",
headers: {
"content-type": "application/json",
accept: "application/json, text/event-stream",
"x-gateway-s2s": "<t=unix,v1=hmac-sha256 of t=unix, keyed with CONDUIT_S2S_SECRET>",
"x-unitrends-base-url": "https://unitrends.example.com",
"x-unitrends-username": "your_username",
"x-unitrends-password": "your_password",
},
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/list" }),
});
シングルテナント HTTP(イメージのデフォルトである AUTH_MODE=env)では、引き続き有効な X-Gateway-S2S ヘッダーが必要です。そのうえで、リクエストに認証情報ヘッダーが含まれていない場合は、環境から UNITRENDS_* を読み取ります。
実行
npm install
npm run build
npm start # stdio
# HTTP refuses to start until CONDUIT_S2S_SECRET is a real secret
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" MCP_TRANSPORT=http npm start
# Local HTTP only, without a service-to-service secret (always binds 127.0.0.1)
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
Docker
イメージはコンテナー内の 0.0.0.0 でリッスンし、デフォルトで AUTH_MODE=env を使用します。ポートをループバックに公開し、S2S シークレットを渡してください。CONDUIT_S2S_SECRET が空、または既知のプレースホルダーの場合、HTTP は起動しません。
docker build -t unitrends-mcp .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e UNITRENDS_BASE_URL="https://unitrends.example.com" \
-e UNITRENDS_USERNAME="..." \
-e UNITRENDS_PASSWORD="..." \
-p 127.0.0.1:8080:8080 \
unitrends-mcp
ゲートウェイモードでは、これらのベンダー変数を読み取りません。認証情報は各リクエストで渡し、リクエストには CONDUIT_S2S_SECRET で署名された X-Gateway-S2S も含める必要があります。
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=gateway \
-p 127.0.0.1:8080:8080 \
unitrends-mcp
Compose は、CONDUIT_S2S_SECRET が未設定または空の場合は起動を拒否し、AUTH_MODE=gateway を設定します。また、UNITRENDS_BASE_URL、UNITRENDS_USERNAME、UNITRENDS_PASSWORD は注入せず、127.0.0.1:8080:8080 を公開します。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
ライセンス
Apache 2.0 — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。