关于 Datto RMM
Datto RMM MCP 服务面向 IT 团队和 Agent,可查询及管理设备、告警、站点、作业和审计数据。它提供读取与操作工具,并为兼容的 MCP Apps 主机提供交互式告警卡片。
主要功能
- 01列出、搜索和查看设备
- 02查看并解决告警
- 03浏览站点和组件
- 04运行并检查快速作业
- 05获取审计与补丁状态
- 06在 MCP Apps 中显示交互式告警卡片
适用场景
- 01按主机名查找设备
- 02查看或解决未处理的告警
- 03在设备上运行快速作业
- 04检查软件清单或补丁状态
MCP 相关
它将 Datto RMM 操作作为 MCP 工具提供,包括带只读注解的数据查询工具。告警详情工具可在兼容的 MCP Apps 主机中显示交互式卡片。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e DATTO_API_KEY -e DATTO_API_SECRET -e DATTO_PLATFORM -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/datto-rmm-mcp:v1.10.1DATTO_API_KEY密钥Datto RMM API keyDATTO_API_SECRET密钥Datto RMM API secret keyDATTO_PLATFORMDatto RMM API platform/zone: pinotage, merlot, concord, vidal, zinfandel, or syrahMCP_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+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/wyre-ai/datto-rmm-mcp:v1.10.1stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Datto RMM MCP 服务
适用于 Datto RMM 的 MCP 服务,可让 Claude 与你的 Datto RMM 帐户交互。
一键部署
重要
**点击之前请注意:**此服务依赖
@wyre-ai/node-datto-rmm, 该包托管在 GitHub Packages npm 注册表中。GitHub Packages 不支持 匿名访问——即使该包是公开的,每次npm install也都需要令牌。云端构建器会替你运行npm install,因此你必须向它提供令牌,否则 构建会失败,并显示npm error 401 Unauthorized ... npm.pkg.github.com。
- 创建一个具有
read:packages权限范围的 GitHub Personal Access Token(classic token)。 任何 GitHub 帐户都可以——读取其公开软件包不需要加入wyre-technology组织。- 在部署流程提示时,将其添加为构建变量:
- Cloudflare Workers → 将名为
NODE_AUTH_TOKEN的构建变量设为你的 PAT (Workers → Settings → Build → Variables and Secrets)。- DigitalOcean App Platform → 将名为
GITHUB_TOKEN的加密环境变量 设为你的 PAT,并将范围设为 Build Time(.do/deploy.template.yaml已声明此变量)。 另外,设置运行时密钥CONDUIT_S2S_SECRET(openssl rand -hex 32)。 如果缺少该值或使用已知的占位值,HTTP 服务将退出。
说明
DigitalOcean 目标会构建完整的 Docker 镜像,并通过 HTTP 运行完整的 MCP 服务——这是面向运维人员的推荐方式。本仓库没有 Cloudflare Workers 入口文件(
src/worker.ts),因此 Workers 按钮目前并非受支持的部署目标;建议使用 DigitalOcean 或预构建的容器镜像 (ghcr.io/wyre-ai/datto-rmm-mcp)。
功能
- 设备管理:列出、搜索设备并获取设备详情
- 警报管理:查看并解决警报
- 交互式警报卡片(MCP Apps):在 MCP Apps 宿主(Claude Desktop/web)中,
datto_get_alert会呈现为交互式卡片,并支持卡片内的“解决警报”往返交互;默认采用中性色调,可通过注入window.__BRAND__或设置MCP_BRAND_*环境变量进行品牌定制;在其他宿主中,纯 JSON 行为保持不变 - 站点管理:列出站点并查看站点详情
- 快速作业:在设备上运行快速作业
- 审计数据:获取完整的设备审计信息或软件清单
安装
通过 MCP Gateway(推荐)
此服务专为与 MCP Gateway 搭配使用而设计,由 MCP Gateway 处理身份验证和凭据管理。
在 HTTP 模式下,网关通过 X-Gateway-S2S 证明自己是调用方。其值的格式为 t=<unix seconds>,v1=<hex hmac-sha256>。MAC 使用 CONDUIT_S2S_SECRET 作为密钥,对 ASCII 字符串 t=<unix seconds>(即标头中出现的相同前缀)执行 HMAC-SHA256 运算。时间戳与服务器时钟的偏差必须在 300 秒以内。缺少标头或标头无效时会返回 401。密钥绝不会写入日志。
将任务归因于最终用户
Datto RMM 会记录创建任务的 API 账号,且不提供覆盖该账号的方法,因此在共用服务账号的情况下,控制台中的每个快速任务都会显示为由集成创建,而不是由提出请求的人创建。
如果网关发送 X-Mcp-User-Upn 标头,该身份会附加到任务名称中,这是唯一会显示在控制台活动列表中的字段:
Restart Service [[email protected]]
仅当 AUTH_MODE=gateway 时才会采用该标头。 如果前面没有网关,该标头的值由调用方自行决定,因此将任务归因于该标头中的身份会显得权威,实际上却是调用方自行声明的。无论哪种情况,这都只是用于标注的建议值,绝不会影响授权。值中的方括号和控制字符会被移除,长度也会受到限制,因此无法伪造后缀或导致名称损坏。
本地开发
此服务的 @wyre-technology/* 依赖项位于 GitHub Packages npm 注册表中,即使是公共包也需要令牌。先完成一次身份验证,再安装:
# Authenticate npm to GitHub Packages (token needs the read:packages scope)
export NODE_AUTH_TOKEN=$(gh auth token) # or a PAT with read:packages
npm install
npm run build
npm start
仓库的 .npmrc 已将 @wyre-technology 作用域指向 GitHub Packages,并从 NODE_AUTH_TOKEN 读取令牌,因此无需进行其他配置。
配置
复制 .env.example。Stdio 和 AUTH_MODE=env 会从环境变量读取供应商凭据。网关模式不会这样做。
| 变量 | 必需 | 说明 |
|---|---|---|
DATTO_API_KEY | Stdio 和 AUTH_MODE=env 必需 | Datto RMM API 密钥 |
DATTO_API_SECRET | Stdio 和 AUTH_MODE=env 必需 | Datto RMM API 密钥 |
DATTO_PLATFORM | 否 | API 平台:pinotage、merlot、concord(默认)、vidal、zinfandel 或 syrah |
MCP_TRANSPORT | 否 | stdio(默认)或 http |
AUTH_MODE | 否 | env(镜像默认值)或 gateway(Compose 默认值)。网关模式要求每个 /mcp 请求都包含 X-Datto-API-Key 和 X-Datto-API-Secret,且绝不会回退到 DATTO_*。只有在 S2S 身份验证成功后,env 才会使用这些变量。 |
CONDUIT_S2S_SECRET | HTTP 必需 | 服务间密钥。若此值为空或为已知占位符(changeme、placeholder、your-s2s-secret、replace-with-a-real-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 时的绑定地址。若设置了真实的 CONDUIT_S2S_SECRET,则会采用此值;未设置时默认为 0.0.0.0,因此容器部署无需更改。容器镜像会将其设为 0.0.0.0。 |
MCP_HTTP_PORT | 否 | HTTP 端口。默认为 8080。 |
/health 无需身份验证,也不会读取凭据。Stdio 传输不会使用 CONDUIT_S2S_SECRET。
与 MCP Gateway 配合使用单租户 AUTH_MODE=env 时,也可以通过 X_API_KEY 和 X_API_SECRET 环境变量注入凭据。使用此方式时,HTTP 请求仍必须包含有效的 X-Gateway-S2S 标头。
HTTP 身份验证
设置 MCP_TRANSPORT=http 和 CONDUIT_S2S_SECRET 后,每个 /mcp 请求都必须包含 X-Gateway-S2S: t=<unix seconds>,v1=<hex hmac-sha256 of the string t=...>。如果缺少标头或标头无效,则会在读取任何供应商凭据之前返回 401。
在 AUTH_MODE=gateway 下,/mcp 还要求包含 X-Datto-API-Key 和 X-Datto-API-Secret(X-Datto-Platform 可选)。这些标头是该请求唯一的凭据来源。缺少这些标头的请求会返回 401,且不会回退到 DATTO_API_KEY / DATTO_API_SECRET。
平台选择
Datto RMM 使用区域 API 端点。请选择与您的账户匹配的平台:
| 平台 | 区域/说明 |
|---|---|
pinotage | 南非 |
merlot | 欧洲 |
concord | 美国东部(默认) |
vidal | 加拿大 |
zinfandel | 美国西部 |
syrah | 澳大利亚 |
可用工具
仅从 Datto RMM 读取数据的工具会在其 tools/list 定义中带有 annotations: { readOnlyHint: true }。
支持此 MCP 提示的客户端(例如
Microsoft 365 Copilot / Copilot Studio)可以跳过这些工具每次调用时的
确认提示。创建、更新、解决或运行任何内容的工具都不会标注为只读。
| 工具 | 描述 | 只读 |
|---|---|---|
datto_list_devices | 列出设备,可选择按站点筛选 | 是 |
datto_find_device | 按主机名查找设备(精确或部分匹配),并解析其 UID | 是 |
datto_get_device | 按 UID 获取设备详情 | 是 |
datto_list_alerts | 列出未关闭的警报,可选择按站点筛选 | 是 |
datto_get_alert | 按 UID 获取警报详情(在 MCP Apps 宿主中呈现为交互式卡片) | 是 |
datto_resolve_alert | 解决警报 | 否 |
datto_list_sites | 列出所有站点 | 是 |
datto_get_site | 获取站点详情 | 是 |
datto_list_components | 列出组件(查找 componentUid 及其用于 datto_run_quickjob 的预期 variables),可选择按名称子字符串筛选 | 是 |
datto_run_quickjob | 在设备上运行快速作业(返回供下方作业工具使用的作业 UID) | 否 |
datto_get_job | 按 UID 获取快速作业的状态/详情 | 是 |
datto_get_job_components | 获取构成快速作业的组件 | 是 |
datto_get_job_results | 获取快速作业在指定设备上的结果 | 是 |
datto_get_job_stdout | 获取快速作业在指定设备上捕获的标准输出 | 是 |
datto_get_job_stderr | 获取快速作业在指定设备上捕获的标准错误 | 是 |
datto_get_device_audit | 获取设备审计数据(全部或仅软件) | 是 |
datto_get_device_patches | 获取设备的 Windows 补丁安装状态 | 是 |
datto_get_site_patches | 获取站点中所有设备的 Windows 补丁安装状态 | 是 |
Docker
使用预构建镜像(无需构建,无需令牌)
镜像在容器内监听 0.0.0.0(MCP_HTTP_HOST),并默认使用 AUTH_MODE=env。请将端口发布到环回地址,并传入 S2S 密钥。若 CONDUIT_S2S_SECRET 为空或为已知占位符,HTTP 将拒绝启动。
docker pull ghcr.io/wyre-ai/datto-rmm-mcp:latest
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e DATTO_API_KEY=xxx \
-e DATTO_API_SECRET=xxx \
-e DATTO_PLATFORM=concord \
-p 127.0.0.1:8080:8080 \
ghcr.io/wyre-ai/datto-rmm-mcp:latest
该镜像是公开的,可匿名拉取,因此此方式完全不需要 GitHub 令牌。
网关模式不会读取这些供应商变量。凭据会随每个请求传入,且请求还必须携带使用 CONDUIT_S2S_SECRET 签名的 X-Gateway-S2S:
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=gateway \
-p 127.0.0.1:8080:8080 \
ghcr.io/wyre-ai/datto-rmm-mcp:latest
如果未设置 CONDUIT_S2S_SECRET,Compose 将拒绝启动;它会设置 AUTH_MODE=gateway,不会注入 DATTO_API_KEY 或 DATTO_API_SECRET,并发布 127.0.0.1:8080:8080:
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
从源代码构建
构建过程会从 GitHub Packages 安装 @wyre-ai/node-datto-rmm。尽管该软件包是公开的,仍需要令牌(参见
一键部署)。Dockerfile 会将其作为
GITHUB_TOKEN 构建参数接收——若省略该参数,构建会在 npm ci 阶段因
npm error 401 Unauthorized ... npm.pkg.github.com 而失败:
docker build --build-arg GITHUB_TOKEN=$(gh auth token) -t datto-rmm-mcp .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e DATTO_API_KEY=xxx \
-e DATTO_API_SECRET=xxx \
-e DATTO_PLATFORM=concord \
-p 127.0.0.1:8080:8080 \
datto-rmm-mcp
令牌会写入临时 .npmrc,并在同一层中删除,因此绝不会被烘焙进镜像。
说明
镜像默认使用端口 8080 上的
MCP_TRANSPORT=http。除非前面有代理,否则请将其发布到环回地址 (-p 127.0.0.1:8080:8080)。健康检查:curl http://127.0.0.1:8080/health(无需凭据)。只有在CONDUIT_S2S_SECRET为有效密钥后,HTTP 才会启动。
不带密钥的本地 HTTP 仅供开发使用。它会绑定到 127.0.0.1 并记录警告。若 MCP_HTTP_HOST 不是环回地址,启动将退出:
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
License
Apache-2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。