mcpField
D
Datto BCDR

Datto BCDR

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

Datto BCDR について

Datto BCDR は、Datto BCDR パートナーポータルにアクセスする AI アシスタント向けの MCP サーバーです。デバイス、保護対象のエージェント、復旧ポイント、スクリーンショット検証、オフサイト同期状況、アラート、履歴を扱い、MCP Apps ホストでは操作可能なデバイスカードも表示します。

主な機能

  1. 01SIRIS と Alto のデバイス一覧
  2. 02保護対象エージェントと復旧ポイントの確認
  3. 03スクリーンショット検証の取得
  4. 04オフサイト同期状況の確認
  5. 05アラートとアクティビティ履歴の確認
  6. 06操作可能なデバイスカードの表示

活用シーン

  1. 01デバイスのバックアップ状況の確認
  2. 02エージェントの復旧ポイントの調査
  3. 03スクリーンショット検証結果の確認
  4. 04ポータルのアラートと最近の履歴の確認

MCP 対応

MCP サーバーとして、ツールを通じて Datto BCDR ポータルのデータを MCP クライアントに公開します。MCP Apps ホストでは読み取り専用の操作可能なデバイスカードを返せます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wyre-technology-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-technology/datto-bcdr-mcp:v1.1.4"
],
"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-technology/datto-bcdr-mcp:v1.1.4
設定が必要な環境変数
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-technology/datto-bcdr-mcp:v1.1.4

ツール

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

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

詳細

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 つのサーバーを複数のクライアントで再利用できます。