mcpField
D
Datto RMM

Datto RMM

本地服务
github.com云与基础设施42 周前更新

关于 Datto RMM

Datto RMM MCP 服务面向 IT 团队和 Agent,可查询及管理设备、告警、站点、作业和审计数据。它提供读取与操作工具,并为兼容的 MCP Apps 主机提供交互式告警卡片。

主要功能

  1. 01列出、搜索和查看设备
  2. 02查看并解决告警
  3. 03浏览站点和组件
  4. 04运行并检查快速作业
  5. 05获取审计与补丁状态
  6. 06在 MCP Apps 中显示交互式告警卡片

适用场景

  1. 01按主机名查找设备
  2. 02查看或解决未处理的告警
  3. 03在设备上运行快速作业
  4. 04检查软件清单或补丁状态

MCP 相关

它将 Datto RMM 操作作为 MCP 工具提供,包括带只读注解的数据查询工具。告警详情工具可在兼容的 MCP Apps 主机中显示交互式卡片。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wyre-ai-datto-rmm": {
"command": "docker",
"args": [
"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.1"
],
"env": {
"DATTO_API_KEY": "<DATTO_API_KEY>",
"DATTO_API_SECRET": "<DATTO_API_SECRET>",
"DATTO_PLATFORM": "<DATTO_PLATFORM>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令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.1
需要配置的环境变量
DATTO_API_KEY密钥Datto RMM API key
DATTO_API_SECRET密钥Datto RMM API secret key
DATTO_PLATFORMDatto RMM API platform/zone: pinotage, merlot, concord, vidal, zinfandel, or syrah
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-rmm-mcp:v1.10.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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。

  1. 创建一个具有 read:packages 权限范围的 GitHub Personal Access Token(classic token)。 任何 GitHub 帐户都可以——读取其公开软件包不需要加入 wyre-technology 组织。
  2. 在部署流程提示时,将其添加为构建变量:
    • 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 服务将退出。

部署到 DO

部署到 Cloudflare Workers

说明

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_KEYStdio 和 AUTH_MODE=env 必需Datto RMM API 密钥
DATTO_API_SECRETStdio 和 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_SECRETHTTP 必需服务间密钥。若此值为空或为已知占位符(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

评论

支持 Markdown

第一次接触 MCP?

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

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