mcpField
D
Datto SaaS Protection

Datto SaaS Protection

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

Datto SaaS Protection について

Datto SaaS Protection MCP Serverは、Datto REST APIのMicrosoft 365およびGoogle Workspaceのバックアップ情報を、AIアシスタントやMCPクライアントに公開します。顧客・ライセンス席・バックアップ状況を確認でき、確認後に席のライセンスを一括変更できます。

主な機能

  1. 01保護対象の顧客とドメインの一覧
  2. 02席と保護状態の確認
  3. 03アプリ別バックアップ状況の確認
  4. 04確認付きの席ライセンス一括変更
  5. 05インタラクティブな読み取り専用席カード

活用シーン

  1. 01顧客のSaaSバックアップ範囲の確認
  2. 02席ごとの保護状態の確認
  3. 03アプリ別バックアップ統計の確認
  4. 04席のライセンス付与や一時停止

MCP 対応

MCPサーバーとして、顧客ドメイン、席、アプリ、バックアップ統計を照会するDatto REST APIツールと、確認が必要な席の一括変更ツールを公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"wyre-ai-datto-saas-protection": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATTO_SAAS_PUBLIC_KEY",
"-e",
"DATTO_SAAS_SECRET_KEY",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/datto-saas-protection-mcp:v3.0.1"
],
"env": {
"DATTO_SAAS_PUBLIC_KEY": "<DATTO_SAAS_PUBLIC_KEY>",
"DATTO_SAAS_SECRET_KEY": "<DATTO_SAAS_SECRET_KEY>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンドdocker run -i --rm -e DATTO_SAAS_PUBLIC_KEY -e DATTO_SAAS_SECRET_KEY -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/datto-saas-protection-mcp:v3.0.1
設定が必要な環境変数
DATTO_SAAS_PUBLIC_KEYシークレットDatto REST API public key (Partner Portal > Admin > Integrations > API Keys)
DATTO_SAAS_SECRET_KEYシークレットDatto REST API secret key
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-saas-protection-mcp:v3.0.1

ツール

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

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

詳細

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