mcpField
D
Datto BCDR

Datto BCDR

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

关于 Datto BCDR

Datto BCDR 是面向 AI 助手的 MCP 服务,用于访问 Datto BCDR 合作伙伴门户。它提供设备、受保护 Agent、恢复点、截图验证、异地同步状态、警报和活动记录,并可在 MCP Apps 主机中显示交互式设备卡片。

主要功能

  1. 01列出 SIRIS 和 Alto 设备
  2. 02查看受保护 Agent 和恢复点
  3. 03获取截图验证结果
  4. 04检查异地同步状态
  5. 05查看警报和活动记录
  6. 06显示交互式设备卡片

适用场景

  1. 01检查设备备份状态
  2. 02查看 Agent 的恢复点
  3. 03核对截图验证结果
  4. 04查看门户警报和近期活动

MCP 相关

该 MCP 服务通过工具向 MCP 客户端提供 Datto BCDR 门户数据,也可在 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 的模型上下文协议(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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。