mcpField
D
Datto BCDR

Datto BCDR

ローカル
github.comファイル・ストレージ02 週間前に更新

Datto BCDR について

Datto BCDRは、Datto BCDRバックアップポータルを利用するチーム向けのMCPサーバーです。アプライアンス、保護対象エージェント、リカバリーポイント、スクリーンショット検証、オフサイト同期、アラート、アクティビティを参照でき、必須条件がない場合は入力を求めます。

主な機能

  1. 01アプライアンスと保護対象エージェントの一覧
  2. 02リカバリーポイントとスクリーンショット検証の取得
  3. 03スクリーンショット画像とオフサイト同期状態の取得
  4. 04期間指定によるアラートとアクティビティの一覧
  5. 05MCP Appsホストでのデバイスカード表示

活用シーン

  1. 01アプライアンスとバックアップ状態の確認
  2. 02エージェントのリカバリーポイントと検証結果の確認
  3. 03期間を指定したアラートとアクティビティの調査

MCP 対応

MCPクライアントにDatto BCDR APIのアプライアンス、バックアップ、アラート、アクティビティ用ツールを公開します。必須入力がない場合はMCP elicitationを使い、MCP Appsホストではデバイスカードを表示できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"wyre-ai-datto-bcdr": {
"command": "docker",
"args": [
"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.6"
],
"env": {
"DATTO_BCDR_PUBLIC_KEY": "<DATTO_BCDR_PUBLIC_KEY>",
"DATTO_BCDR_PRIVATE_KEY": "<DATTO_BCDR_PRIVATE_KEY>",
"DATTO_BCDR_REGION": "<DATTO_BCDR_REGION>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンド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.6
設定が必要な環境変数
DATTO_BCDR_PUBLIC_KEYシークレットDatto BCDR partner portal public API key
DATTO_BCDR_PRIVATE_KEYシークレットDatto BCDR partner portal private API key
DATTO_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/wyre-ai/datto-bcdr-mcp:v1.1.6

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Datto BCDR MCP サーバー

Release License: Apache 2.0

Datto BCDR(Backup Portal)API 用の Model Context Protocol(MCP)サーバーです。 SIRIS / Alto アプライアンス、保護対象エージェント、リカバリポイント、スクリーンショット検証、 オフサイト同期ステータス、アラート、アクティビティログを AI アシスタントに公開します。

ツール

ツール説明
datto_bcdr_list_devicesパートナーポータル内のすべての SIRIS/Alto アプライアンスを一覧表示します
datto_bcdr_get_deviceserialNumber でアプライアンスの詳細を取得します(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_KEYstdio および AUTH_MODE=env で必要Datto BCDR パートナーポータルの公開鍵
DATTO_BCDR_PRIVATE_KEYstdio および 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_SECRETHTTP では必須サービス間シークレット。この値が空、または既知のプレースホルダー(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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。