mcpField
D
Datto SaaS Protection

Datto SaaS Protection

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

Datto SaaS Protection について

Datto SaaS Protection の MCP サーバーは、Datto REST API を MCP クライアントに接続します。Microsoft 365 と Google Workspace のバックアップを管理するチーム向けに、保護状態やシートを確認でき、確認付きの一括変更と読み取り専用カードにも対応します。

主な機能

  1. 01保護対象の顧客とドメインの一覧
  2. 02シートと保護状態の確認
  3. 03アプリケーション別のバックアップ状況
  4. 04確認付きのシート一括変更
  5. 05インタラクティブなシートカード

活用シーン

  1. 01顧客ごとの SaaS バックアップ範囲の監査
  2. 02特定シートの保護状態の確認
  3. 03アプリケーション別バックアップ統計の確認
  4. 04シートの一括ライセンス付与・一時停止・解除

MCP 対応

Datto SaaS Protection のドメイン、シート、アプリケーション、バックアップ統計を MCP クライアント向けのツールとして公開し、一括変更には確認を求めます。MCP Apps 対応ホストでは、シート情報を読み取り専用カードで表示できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wyre-technology-datto-saas-protection": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATTO_SAAS_API_KEY",
"-e",
"DATTO_SAAS_REGION",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-technology/datto-saas-protection-mcp:v2.1.4"
],
"env": {
"DATTO_SAAS_API_KEY": "<DATTO_SAAS_API_KEY>",
"DATTO_SAAS_REGION": "<DATTO_SAAS_REGION>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンドdocker run -i --rm -e DATTO_SAAS_API_KEY -e DATTO_SAAS_REGION -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/datto-saas-protection-mcp:v2.1.4
設定が必要な環境変数
DATTO_SAAS_API_KEYシークレットDatto SaaS Protection (Backupify) API key
DATTO_SAAS_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-saas-protection-mcp:v2.1.4

ツール

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

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

詳細

Datto SaaS Protection MCP サーバー

CI License: Apache 2.0

Model Context Protocol サーバーです。Datto SaaS Protection(Backupify) API を Claude やその他の MCP クライアントに公開します。

できること

ドキュメント化された Datto REST API (https://api.datto.com/v1/saas/...)を使用して、Microsoft 365 および Google Workspace の顧客向けに、SaaS バックアップの状況を AI アシスタントに提供します。保護対象の顧客/ドメインの一覧表示、シートとその保護状態の確認、アプリケーションごとのバックアップ状況の確認のほか、確認を行ったうえで、複数のシートのライセンス付与、一時停止、ライセンス解除ができます。

  • インタラクティブなシートカード(MCP Apps):datto_saas_get_seat は MCP Apps ホスト(Claude Desktop/web)でインタラクティブなカードとして表示されます。読み取り専用で、シートの種類と Datto におけるシートの状態を表示します。デフォルトではニュートラルなデザインで、window.__BRAND__ の挿入または MCP_BRAND_* 環境変数によるブランド設定が可能です。他のホストでのプレーンな JSON の動作に変更はありません。

ツール

ツールDatto エンドポイント注釈
datto_saas_list_domainsGET /v1/saas/domains読み取り専用
datto_saas_list_seatsGET /v1/saas/{saasCustomerId}/seats読み取り専用
datto_saas_get_seatGET /v1/saas/{saasCustomerId}/seats(1 つのシートに絞り込み)読み取り専用
datto_saas_list_applicationsGET /v1/saas/{saasCustomerId}/applications読み取り専用
datto_saas_get_backup_statsGET /v1/saas/{saasCustomerId}/detailedBackupStats読み取り専用
datto_saas_bulk_seat_changePUT /v1/saas/{saasCustomerId}/{externalSubscriptionId}/bulkSeatChange書き込み、破壊的(確認を求めます)

まず datto_saas_list_domains を実行してください。ほかのすべてのツールで必要となる saasCustomerId と externalSubscriptionId が返されます。

以前のバージョンでは、list_clients、list_backups、queue_restore、 get_restore_status、list_activity、get_license_usage が公開されていました。これらは Datto が提供していないルート(/v1/saas/clients、/restores、…)を使用しており、 常に 404 を返すため、削除されました。

認証情報

Datto Partner Portal(Admin > Integrations > API Keys)で API キーを作成します。API では、公開キーとシークレットキーのペアを使った HTTP Basic 認証を使用します。API ホストは api.datto.com のみです。リージョン別(EU)の API ホストはありません。

.env.example をコピーし、以下の変数を設定します。

変数必須説明
DATTO_SAAS_PUBLIC_KEYstdio および AUTH_MODE=env の場合Datto REST API の公開キー
DATTO_SAAS_SECRET_KEYstdio および AUTH_MODE=env の場合Datto REST API のシークレットキー
MCP_TRANSPORTいいえstdio(デフォルト)または http
AUTH_MODEいいえgateway(Docker イメージおよび Compose)または env。Gateway モードでは、各 /mcp リクエストに X-Datto-SaaS-Public-Key と X-Datto-SaaS-Secret-Key が必要で、DATTO_SAAS_* へのフォールバックは行われません。env では、S2S 認証に成功した後にのみこれらの変数が使用されます。未設定の場合は env になります。
CONDUIT_S2S_SECRETHTTP の場合は必須サービス間シークレット。この値が空、または既知のプレースホルダー(changeme、secret、replace-me、your-s2s-secret、replace-with-a-real-secret、その他のサンプル値、および未解決の ${...} テンプレート)の場合、HTTP サーバーはエラーをログに記録し、0 以外の終了コードで終了します。openssl rand -hex 32 で生成してください。Compose はこの値がないと起動しません。この値がログに記録されることはありません。
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いいえ有効な CONDUIT_S2S_SECRET が設定されている場合のバインドアドレス。未設定の場合は 127.0.0.1 がデフォルトです。コンテナイメージと Compose では、コンテナ内で 0.0.0.0 が設定されます。
MCP_HTTP_PORTいいえHTTP ポート。デフォルトは 8080 です。

/health は認証不要のままで、認証情報を読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。

ローカル(env モード)
export DATTO_SAAS_PUBLIC_KEY="..."
export DATTO_SAAS_SECRET_KEY="..."
ホステッド(gateway モード)

WYRE MCP Gateway は、リクエストごとにヘッダーを通じて認証情報を挿入します。

  • X-Datto-SaaS-Public-Key(必須、シークレット)
  • X-Datto-SaaS-Secret-Key(必須、シークレット)
  • X-Datto-SaaS-Region(下位互換性のために受け付けますが、無視されます)

公開キーまたはシークレットキーがないリクエストには HTTP 401 が返され、プロセス環境内の DATTO_SAAS_PUBLIC_KEY / DATTO_SAAS_SECRET_KEY へのフォールバックは行われません。

HTTP 認証

MCP_TRANSPORT=http で CONDUIT_S2S_SECRET が設定されている場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。検証処理は src/s2s-verify.ts の verifyS2sHeader です。ヘッダー値は t=<unix seconds>,v1=<hex> で、hex は CONDUIT_S2S_SECRET をキーとして、文字列 t=<unix seconds> を HMAC-SHA256 でハッシュ化した値(小文字の 16 進数 64 文字)です。タイムスタンプはサーバーの時計と 300 秒以内の差である必要があります。ヘッダーがない場合、または無効な場合は、ベンダー認証情報が読み取られる前に HTTP 401 が返されます。

TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
  -H "X-Datto-SaaS-Public-Key: $DATTO_SAAS_PUBLIC_KEY" \
  -H "X-Datto-SaaS-Secret-Key: $DATTO_SAAS_SECRET_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

実行

npm install
npm run build
npm start                       # stdio
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" MCP_TRANSPORT=http npm start

CONDUIT_S2S_SECRET が有効なシークレットになるまで、HTTP は起動しません。シークレットなしでのローカル HTTP は開発専用であり、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 シークレットを渡してください。Gateway モードでは、Datto の認証情報はリクエストごとにヘッダーとして渡され、環境変数からは読み取られません。

docker build -t datto-saas-protection-mcp .
docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -p 127.0.0.1:8080:8080 \
  datto-saas-protection-mcp

CONDUIT_S2S_SECRET が未設定の場合、Compose は起動しません。Gateway サービスでは AUTH_MODE=gateway が設定され、DATTO_SAAS_PUBLIC_KEY と DATTO_SAAS_SECRET_KEY は挿入されず、127.0.0.1:8080:8080 が公開されます。

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

シングルテナント HTTP(AUTH_MODE=env)でも S2S シークレットが必要で、その後 DATTO_SAAS_PUBLIC_KEY と DATTO_SAAS_SECRET_KEY が使用されます。これは上記の Gateway Compose サービスとは別の構成です。

docker run \
  -e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
  -e AUTH_MODE=env \
  -e DATTO_SAAS_PUBLIC_KEY=your-public-key \
  -e DATTO_SAAS_SECRET_KEY=your-secret-key \
  -p 127.0.0.1:8080:8080 \
  datto-saas-protection-mcp

ライセンス

Apache 2.0 — LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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