关于 ConnectWise Automate
ConnectWise Automate 的 MCP 服务,通过决策树为 Claude 和其他 MCP 客户端提供 RMM 管理工具。它覆盖计算机、客户、警报和脚本,并可按需加载领域工具。
主要功能
- 01管理计算机、客户、警报和脚本
- 02决策树导航领域工具
- 03按需初始化客户端与处理器
- 04计算机详情可呈现交互卡片
适用场景
- 01筛选并查看计算机及其详情
- 02远程重启计算机或运行脚本
- 03管理客户记录
- 04查看警报和可用脚本
MCP 相关
作为 MCP 服务向客户端开放 ConnectWise Automate 的计算机、客户、警报和脚本工具;支持 stdio 与 HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e CW_AUTOMATE_SERVER_URL -e CW_AUTOMATE_CLIENT_ID -e CW_AUTOMATE_USERNAME -e CW_AUTOMATE_PASSWORD -e CW_AUTOMATE_2FA_CODE -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4CW_AUTOMATE_SERVER_URLConnectWise Automate server URL (e.g. https://your-server.hostedrmm.com)CW_AUTOMATE_CLIENT_ID密钥ConnectWise Automate integrator client IDCW_AUTOMATE_USERNAMEIntegrator username or user credentialCW_AUTOMATE_PASSWORD密钥Integrator password or user passwordCW_AUTOMATE_2FA_CODE密钥Two-factor authentication code, if required by the accountMCP_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/connectwise-automate-mcp:v2.0.4stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
ConnectWise Automate MCP 服务
一个适用于 ConnectWise Automate 的模型上下文协议(MCP)服务,采用决策树架构,供 Claude 使用。
一键部署
重要
**点击前请注意:**此服务依赖
@wyre-ai/node-connectwise-automate, 该包托管在 GitHub Packages npm 注册表中。GitHub Packages 不支持匿名访问—— 即使该包是公开的,每次npm install仍需要令牌。云端构建器会为你运行npm install, 因此你必须提供令牌,否则构建会失败,并显示npm error 401 Unauthorized ... npm.pkg.github.com。
- 创建一个具有
read:packages范围的 GitHub 个人访问令牌 (经典令牌)。 任何 GitHub 账户都可以——读取其公开包不需要成为WYRE-AI组织的成员。- 部署流程提示时,将其添加为构建变量:
- Cloudflare Workers → 将名为
NODE_AUTH_TOKEN的构建变量设为你的 PAT (Workers → Settings → Build → Variables and Secrets)。- DigitalOcean App Platform → 将名为
GITHUB_TOKEN的加密环境变量设为你的 PAT, 范围选择 Build Time(.do/deploy.template.yaml已声明该变量)。
说明
DigitalOcean 部署目标会构建完整的 Docker 镜像,并通过 HTTP 运行完整的 MCP 服务——这是推荐给运维人员的方式。首次启动前请设置
CONDUIT_S2S_SECRET(以及CW_AUTOMATE_*密钥); 如果缺少 S2S 密钥,HTTP 模式将退出。该模板为此单租户部署设置了AUTH_MODE=env。 此仓库目前尚无受支持的 Cloudflare Workers 部署目标;建议使用 DigitalOcean 或预构建容器镜像 (ghcr.io/wyre-ai/connectwise-automate-mcp)。
功能
- 决策树架构:在各个领域(计算机、客户端、警报、脚本)之间导航,以访问相关工具
- 按需加载:按需初始化客户端并加载领域处理程序
- 全面的 API 覆盖:管理计算机、客户端、警报和脚本
- 交互式设备卡片(MCP Apps):在 MCP Apps 宿主(Claude Desktop/web)中,
cwautomate_computers_get会显示为只读交互式卡片;默认使用中性样式,可通过注入window.__BRAND__或设置MCP_BRAND_*环境变量进行品牌定制;在其他宿主中的纯 JSON 行为保持不变
安装
此软件包发布在 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 @wyre-ai/connectwise-automate-mcp
仓库中的 .npmrc 已将 @wyre-ai 作用域指向 GitHub Packages,并从 NODE_AUTH_TOKEN 读取令牌,
因此无需进行其他配置。
配置
复制 .env.example,并设置以下变量。stdio 传输会读取 CW_AUTOMATE_*,不会使用 CONDUIT_S2S_SECRET。
| 变量 | 必填 | 描述 |
|---|---|---|
CW_AUTOMATE_SERVER_URL | stdio 和 AUTH_MODE=env 必填 | ConnectWise Automate 服务 URL(例如 https://your-server.hostedrmm.com) |
CW_AUTOMATE_CLIENT_ID | stdio 和 AUTH_MODE=env 必填 | ConnectWise Automate 客户端 ID |
CW_AUTOMATE_USERNAME | stdio 和 AUTH_MODE=env 必填 | 集成商用户名或用户登录名 |
CW_AUTOMATE_PASSWORD | stdio 和 AUTH_MODE=env 必填 | 集成商密码或用户密码 |
CW_AUTOMATE_2FA_CODE | 否 | 双因素身份验证代码(强制使用 user 身份验证) |
CW_AUTOMATE_AUTH_METHOD | 否 | integrator(默认)或 user |
MCP_TRANSPORT | 否 | stdio(默认)或 http |
AUTH_MODE | 否 | gateway(Docker 镜像和 Compose 默认值)或 env。Gateway 模式要求每个 /mcp 请求都包含 X-CWA-Server、X-CWA-Client-ID、X-CWA-Username 和 X-CWA-Password,且绝不会回退到 CW_AUTOMATE_*。只有在 S2S 身份验证成功后,env 才会使用这些变量。 |
CONDUIT_S2S_SECRET | HTTP 必填 | 服务到服务密钥。使用 openssl rand -hex 32 生成。如果该值为空或为已知占位值(replace-with-a-real-secret、changeme 及其他示例值),HTTP 服务会记录错误并以非零状态退出。该值绝不会被记录。没有此值时,Compose 不会启动。切勿提交真实密钥。 |
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 时使用的绑定地址。默认为 127.0.0.1。容器镜像设为 0.0.0.0。 |
MCP_HTTP_PORT | 否 | HTTP 端口。默认为 8080。 |
/health 不需要身份验证,也不会读取凭据。
HTTP 身份验证
当 MCP_TRANSPORT=http 且 CONDUIT_S2S_SECRET 为真实密钥时,每个 /mcp 请求都必须包含 X-Gateway-S2S。标头值格式为 t=<unix seconds>,v1=<hex>,其中十六进制值是以 CONDUIT_S2S_SECRET 为密钥、对字面字符串 t=<unix seconds> 计算得出的 HMAC-SHA256(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-CWA-Server: https://your-server.hostedrmm.com" \
-H "X-CWA-Client-ID: your-client-id" \
-H "X-CWA-Username: your-username" \
-H "X-CWA-Password: your-password" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
在 AUTH_MODE=gateway 下,这些 X-CWA-* 标头是唯一的凭据来源(X-CWA-2FA 和 X-CWA-Auth-Method 为可选项)。请求缺少任何必需标头时,会返回 HTTP 401,且不会使用环境中的 CW_AUTOMATE_*。在 AUTH_MODE=env 下,已签名请求会使用 CW_AUTOMATE_* 变量。
Docker
镜像在容器内监听 0.0.0.0(MCP_HTTP_HOST),并默认使用 AUTH_MODE=gateway。请将端口发布到 loopback,并传入 S2S 密钥。在 gateway 模式下,Automate 凭据会随每个请求通过标头传入,不会从环境中读取。
docker build -t connectwise-automate-mcp .
docker run \
-e CONDUIT_S2S_SECRET=your-s2s-secret \
-p 127.0.0.1:8080:8080 \
connectwise-automate-mcp
如果未设置 CONDUIT_S2S_SECRET,Compose 将拒绝启动;它会设置 AUTH_MODE=gateway,不会注入 CW_AUTOMATE_*,并发布 127.0.0.1:8080:8080:
CONDUIT_S2S_SECRET=your-s2s-secret docker compose up
单租户 HTTP(AUTH_MODE=env)仍然需要 S2S 密钥,然后使用 CW_AUTOMATE_*:
docker run \
-e CONDUIT_S2S_SECRET=your-s2s-secret \
-e AUTH_MODE=env \
-e CW_AUTOMATE_SERVER_URL=https://your-server.hostedrmm.com \
-e CW_AUTOMATE_CLIENT_ID=your-client-id \
-e CW_AUTOMATE_USERNAME=your-username \
-e CW_AUTOMATE_PASSWORD=your-password \
-p 127.0.0.1:8080:8080 \
connectwise-automate-mcp
不使用密钥的本地 HTTP 仅限开发环境。它只绑定到 127.0.0.1,并会记录警告。非 loopback 的 MCP_HTTP_HOST 会被覆盖为 127.0.0.1:
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 node dist/index.js
DigitalOcean App Platform 模板为单租户配置:它设置 AUTH_MODE=env,以便继续将 CW_AUTOMATE_* 密钥作为凭据来源,并声明 CONDUIT_S2S_SECRET。请在 App Platform 界面中设置该密钥,否则容器会在启动时退出。
身份验证方式
该服务器支持两种 ConnectWise Automate 身份验证方式:
integrator(默认)——机器对机器集成账户。推荐用于自动化。不使用双重身份验证(2FA)。user——交互式用户登录,可提供双重身份验证代码。
通常无需设置 CW_AUTOMATE_AUTH_METHOD:默认使用集成账户身份验证;提供
CW_AUTOMATE_2FA_CODE 时,会自动选择 user 身份验证。
用法
作为 MCP 服务
添加到你的 Claude 配置中:
{
"mcpServers": {
"connectwise-automate": {
"command": "npx",
"args": ["@wyre-ai/connectwise-automate-mcp"],
"env": {
"CW_AUTOMATE_SERVER_URL": "https://your-server.hostedrmm.com",
"CW_AUTOMATE_CLIENT_ID": "your-client-id",
"CW_AUTOMATE_USERNAME": "your-username",
"CW_AUTOMATE_PASSWORD": "your-password"
}
}
}
}
导航
该服务器采用决策树模式。首先导航到某个领域:
- 使用
cwautomate_navigate选择领域(计算机、客户端、警报、脚本) - 相应领域的工具随即可用
- 使用
cwautomate_back返回主菜单
可用领域
计算机
- 筛选并列出计算机
- 获取计算机详情
- 按名称搜索计算机
- 远程重启计算机
- 在计算机上运行脚本
客户端
- 列出所有客户端
- 获取客户端详情
- 创建新客户端
- 更新现有客户端
警报
- 筛选并列出警报(Automate API 中为只读)
- 获取警报详情
脚本
- 列出可用脚本
- 获取脚本详情
- 在计算机上执行脚本
开发
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Type check
npm run typecheck
# Lint
npm run lint
许可证
Apache-2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。