mcpField
D
Datto BCDR

Datto BCDR

本地服务
github.com文件与存储02 周前更新

关于 Datto BCDR

Datto BCDR 是面向使用 Datto BCDR 备份门户的团队的 MCP 服务,可读取设备、受保护 Agent、恢复点、截图验证、异地同步、告警和活动记录。缺少必要筛选条件时,它会通过 MCP elicitation 请求补充。

主要功能

  1. 01列出设备与受保护 Agent
  2. 02查询恢复点和截图验证
  3. 03获取截图图像与异地同步状态
  4. 04按日期范围列出告警和活动
  5. 05在 MCP Apps 宿主中显示设备卡片

适用场景

  1. 01检查设备及其备份状态
  2. 02核查 Agent 的恢复点和截图验证
  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 的模型上下文协议(MCP)服务。 向 AI 助手提供 SIRIS / Alto 设备、受保护的 Agent、恢复点、屏幕截图验证、 异地同步状态、警报和活动日志。

工具

工具描述
datto_bcdr_list_devices列出合作伙伴门户中的所有 SIRIS/Alto 设备
datto_bcdr_get_device根据 serialNumber 获取设备详情(在 MCP Apps 宿主中呈现为交互式卡片)
datto_bcdr_list_assets列出设备上的受保护 Agent
datto_bcdr_get_asset获取指定的受保护 Agent
datto_bcdr_list_backups列出 Agent 的恢复点
datto_bcdr_list_screenshots列出 Agent 的屏幕截图验证
datto_bcdr_get_screenshot获取屏幕截图 PNG(以 base64 图像内容形式返回)
datto_bcdr_get_offsite_status获取设备的异地同步状态
datto_bcdr_list_alerts门户警报(按日期范围筛选)
datto_bcdr_list_activity活动日志(按日期范围筛选)

当用户未提供必需的筛选条件(日期范围、序列号等)时,服务会使用 MCP elicitation 提示用户填写。

功能

  • 交互式设备卡片(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否仅限本地开发时,精确设置为 1,以便在未设置 CONDUIT_S2S_SECRET 的情况下启动 HTTP。进程会记录警告,且不会强制执行 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 密钥。在 gateway 模式下,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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。