Datto BCDR について
Datto BCDRは、Datto BCDRバックアップポータルを利用するチーム向けのMCPサーバーです。アプライアンス、保護対象エージェント、リカバリーポイント、スクリーンショット検証、オフサイト同期、アラート、アクティビティを参照でき、必須条件がない場合は入力を求めます。
主な機能
- 01アプライアンスと保護対象エージェントの一覧
- 02リカバリーポイントとスクリーンショット検証の取得
- 03スクリーンショット画像とオフサイト同期状態の取得
- 04期間指定によるアラートとアクティビティの一覧
- 05MCP Appsホストでのデバイスカード表示
活用シーン
- 01アプライアンスとバックアップ状態の確認
- 02エージェントのリカバリーポイントと検証結果の確認
- 03期間を指定したアラートとアクティビティの調査
MCP 対応
MCPクライアントにDatto BCDR APIのアプライアンス、バックアップ、アラート、アクティビティ用ツールを公開します。必須入力がない場合はMCP elicitationを使い、MCP Appsホストではデバイスカードを表示できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e DATTO_BCDR_PUBLIC_KEY -e DATTO_BCDR_PRIVATE_KEY -e DATTO_BCDR_REGION -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/datto-bcdr-mcp:v1.1.6DATTO_BCDR_PUBLIC_KEYシークレットDatto BCDR partner portal public API keyDATTO_BCDR_PRIVATE_KEYシークレットDatto BCDR partner portal private API keyDATTO_BCDR_REGIONRegion: 'us' (default) or 'eu'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/datto-bcdr-mcp:v1.1.6stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Datto BCDR MCP サーバー
Datto BCDR(Backup Portal)API 用の Model Context Protocol(MCP)サーバーです。 SIRIS / Alto アプライアンス、保護対象エージェント、リカバリポイント、スクリーンショット検証、 オフサイト同期ステータス、アラート、アクティビティログを AI アシスタントに公開します。
ツール
| ツール | 説明 |
|---|---|
datto_bcdr_list_devices | パートナーポータル内のすべての SIRIS/Alto アプライアンスを一覧表示します |
datto_bcdr_get_device | serialNumber でアプライアンスの詳細を取得します(MCP Apps ホストではインタラクティブカードとして表示されます) |
datto_bcdr_list_assets | アプライアンス上の保護対象エージェントを一覧表示します |
datto_bcdr_get_asset | 特定の保護対象エージェントを取得します |
datto_bcdr_list_backups | エージェントのリカバリポイントを一覧表示します |
datto_bcdr_list_screenshots | エージェントのスクリーンショット検証を一覧表示します |
datto_bcdr_get_screenshot | スクリーンショット PNG を取得します(base64 画像コンテンツとして返されます) |
datto_bcdr_get_offsite_status | アプライアンスのオフサイト同期ステータスを取得します |
datto_bcdr_list_alerts | ポータルのアラート(日付範囲で絞り込み) |
datto_bcdr_list_activity | アクティビティログ(日付範囲で絞り込み) |
ユーザーが必須の絞り込み条件(日付範囲、シリアル番号など)を省略した場合、 サーバーは MCP エリシテーションを使用して入力を求めます。
機能
- インタラクティブなデバイスカード(MCP Apps、SEP-1865):
datto_bcdr_get_deviceは MCP Apps ホスト(Claude Desktop/web)で読み取り専用のインタラクティブカードとして表示され、アプライアンスのバックアップステータスをひと目で確認できます。デフォルトではニュートラルな表示で、window.__BRAND__の挿入またはMCP_BRAND_*環境変数によるブランド設定に対応しています。他のホストでは従来どおりのプレーンな JSON 動作です。ui/を編集してnpm run build:uiを実行すると、埋め込みカードバンドルが再生成されます。
設定
.env.example をコピーし、以下の変数を設定してください。stdio
トランスポートは DATTO_BCDR_* を読み取り、HTTP サービス間認証の影響を受けません。
| 変数 | 必須 | 説明 |
|---|---|---|
DATTO_BCDR_PUBLIC_KEY | stdio および AUTH_MODE=env で必要 | Datto BCDR パートナーポータルの公開鍵 |
DATTO_BCDR_PRIVATE_KEY | stdio および AUTH_MODE=env で必要 | Datto BCDR パートナーポータルの秘密鍵(シークレット) |
DATTO_BCDR_REGION | いいえ | us(デフォルト)または eu |
MCP_TRANSPORT | いいえ | stdio(デフォルト)または http |
AUTH_MODE | いいえ | gateway(Docker イメージおよび Compose のデフォルト)または env。gateway モードでは、各 /mcp リクエストに X-Datto-BCDR-Public-Key と X-Datto-BCDR-Private-Key が必要で、DATTO_BCDR_* へのフォールバックは行いません。env は S2S 認証の成功後にのみこれらの変数を使用します。 |
CONDUIT_S2S_SECRET | HTTP では必須 | サービス間シークレット。この値が空、または既知のプレースホルダー(replace-with-a-real-secret、your-s2s-secret、your-secret、changeme、change-me、placeholder、secret、example、replace-me、s2s-secret)の場合、HTTP サーバーはエラーを記録してゼロ以外の終了コードで終了します。Compose はこの値がないと起動しません。実際の値をコミットしないでください。openssl rand -hex 32 で生成してください。この値がログに記録されることはありません。 |
MCP_ALLOW_INSECURE_DEV | いいえ | CONDUIT_S2S_SECRET なしで HTTP を起動する場合に限り、ローカル開発用として値を 1 に設定します。プロセスは警告を記録し、X-Gateway-S2S を強制しません。リスナーは 127.0.0.1 に固定されます。ループバック以外の MCP_HTTP_HOST(0.0.0.0 を含む)が指定されている場合、起動を拒否します。既知のプレースホルダーシークレットが指定されている場合も起動を拒否します。 |
MCP_HTTP_HOST | いいえ | MCP_TRANSPORT=http の場合のバインドアドレス。デフォルトは 127.0.0.1 です。CONDUIT_S2S_SECRET が設定されている場合、この値が適用されます。コンテナイメージでは 0.0.0.0 が設定されます。 |
MCP_HTTP_PORT | いいえ | HTTP ポート。デフォルトは 8080 です。 |
/health は認証なしでアクセスでき、認証情報も読み取りません。
HTTP 認証
MCP_TRANSPORT=http を設定し、CONDUIT_S2S_SECRET を設定すると、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。ヘッダーがない場合、または無効な場合は、ベンダーの認証情報が読み込まれる前に 401 が返されます。
ヘッダー値は t=<unix seconds>,v1=<hex hmac-sha256> です。署名対象のメッセージは ASCII 文字列 t=<unix seconds>(同じタイムスタンプのプレフィックス)で、HMAC キーは CONDUIT_S2S_SECRET です。サーバー時刻から 300 秒を超えて離れたタイムスタンプは拒否されます。
import { createHmac } from "node:crypto";
const t = Math.floor(Date.now() / 1000);
const v1 = createHmac("sha256", process.env.CONDUIT_S2S_SECRET).update(`t=${t}`).digest("hex");
const xGatewayS2s = `t=${t},v1=${v1}`;
AUTH_MODE=gateway の場合、/mcp には X-Datto-BCDR-Public-Key と X-Datto-BCDR-Private-Key も必要です(X-Datto-BCDR-Region は任意です)。これらのヘッダーのみが、そのリクエストの認証情報の取得元となります。どちらかのキーがないリクエストは 401 を返し、DATTO_BCDR_PUBLIC_KEY/DATTO_BCDR_PRIVATE_KEY へのフォールバックは行いません。リクエストごとに、認証情報を分離した新しいサーバーインスタンスが作成されます。
WYRE MCP Gateway は、ベンダーごとにプロビジョニングされたサブキーを CONDUIT_S2S_SECRET として使用して X-Gateway-S2S に署名し、Datto ヘッダーを挿入します。
await fetch("http://gateway:8080/mcp", {
method: "POST",
headers: {
"content-type": "application/json",
accept: "application/json, text/event-stream",
"x-gateway-s2s": xGatewayS2s,
"x-datto-bcdr-public-key": publicKey,
"x-datto-bcdr-private-key": privateKey,
},
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/list" }),
});
ローカル開発
npm install
npm run build
DATTO_BCDR_PUBLIC_KEY=... DATTO_BCDR_PRIVATE_KEY=... npm start
CONDUIT_S2S_SECRET が設定されるまで、HTTP は起動しません。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" MCP_TRANSPORT=http npm start
curl http://127.0.0.1:8080/health
サービス間シークレットを使わないローカル HTTP は、開発専用です。127.0.0.1 のみでバインドし、警告をログに記録します。MCP_HTTP_HOST にループバック以外のアドレスが指定されていると、起動は終了します。コンテナーイメージでは MCP_HTTP_HOST=0.0.0.0 が設定されているため、イメージの使用時にこのバイパスを利用するには、-e MCP_HTTP_HOST=127.0.0.1 も指定する必要があります。
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
Docker
イメージはコンテナー内の 0.0.0.0(MCP_HTTP_HOST)でリッスンし、デフォルトで AUTH_MODE=gateway に設定されています。ポートをループバックに公開し、S2S シークレットを渡してください。ゲートウェイモードでは、Datto の認証情報は各リクエストのヘッダーとして渡され、環境変数からは読み込まれません。
docker build -t datto-bcdr-mcp .
docker run --rm \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-p 127.0.0.1:8080:8080 \
datto-bcdr-mcp
CONDUIT_S2S_SECRET が未設定または空の場合、Compose は起動を拒否します。また、AUTH_MODE=gateway を設定し、127.0.0.1:8080:8080 を公開します。DATTO_BCDR_PUBLIC_KEY または DATTO_BCDR_PRIVATE_KEY は注入しません。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
シングルテナント HTTP(AUTH_MODE=env)でも S2S シークレットが必要です。その後、DATTO_BCDR_PUBLIC_KEY と DATTO_BCDR_PRIVATE_KEY が使用されます。
docker run --rm \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=env \
-e DATTO_BCDR_PUBLIC_KEY=your-value \
-e DATTO_BCDR_PRIVATE_KEY=your-value \
-p 127.0.0.1:8080:8080 \
datto-bcdr-mcp
ライセンス
Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。