mcpField
C
ConnectWise Automate

ConnectWise Automate

本地服务
github.com云与基础设施1今天更新

关于 ConnectWise Automate

ConnectWise Automate 是面向使用 ConnectWise Automate RMM 的运维人员和服务提供商的 MCP 服务。它通过决策树导航提供计算机、客户、警报和脚本等领域工具,并按需加载处理程序。

主要功能

  1. 01按领域进行决策树导航
  2. 02按需加载客户端和处理程序
  3. 03搜索计算机、查看详情、重启及运行脚本
  4. 04列出和管理客户
  5. 05访问警报和脚本

适用场景

  1. 01查找和检查受管计算机
  2. 02远程重启计算机或运行脚本
  3. 03查看警报并管理客户记录

MCP 相关

该 MCP 服务将 Claude 等兼容 MCP 的客户端连接到 ConnectWise Automate。客户端可通过领域导航访问计算机、客户、警报和脚本相关工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"wyre-technology-connectwise-automate": {
"command": "docker",
"args": [
"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-technology/connectwise-automate-mcp:v1.8.2"
],
"env": {
"CW_AUTOMATE_SERVER_URL": "<CW_AUTOMATE_SERVER_URL>",
"CW_AUTOMATE_CLIENT_ID": "<CW_AUTOMATE_CLIENT_ID>",
"CW_AUTOMATE_USERNAME": "<CW_AUTOMATE_USERNAME>",
"CW_AUTOMATE_PASSWORD": "<CW_AUTOMATE_PASSWORD>",
"CW_AUTOMATE_2FA_CODE": "<CW_AUTOMATE_2FA_CODE>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令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-technology/connectwise-automate-mcp:v1.8.2
需要配置的环境变量
CW_AUTOMATE_SERVER_URLConnectWise Automate server URL (e.g. https://your-server.hostedrmm.com)
CW_AUTOMATE_CLIENT_ID密钥ConnectWise Automate integrator client ID
CW_AUTOMATE_USERNAMEIntegrator username or user credential
CW_AUTOMATE_PASSWORD密钥Integrator password or user password
CW_AUTOMATE_2FA_CODE密钥Two-factor authentication code, if required by the account
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/connectwise-automate-mcp:v1.8.2

工具

还没有获取到工具列表

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

详细介绍

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。

  1. 创建一个具有 read:packages 范围的 GitHub 个人访问令牌 (经典令牌)。 任何 GitHub 账户都可以——读取其公开包不需要成为 WYRE-AI 组织的成员。
  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 已声明该变量)。

部署到 DO

部署到 Cloudflare Workers

说明

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_URLstdio 和 AUTH_MODE=env 必填ConnectWise Automate 服务 URL(例如 https://your-server.hostedrmm.com)
CW_AUTOMATE_CLIENT_IDstdio 和 AUTH_MODE=env 必填ConnectWise Automate 客户端 ID
CW_AUTOMATE_USERNAMEstdio 和 AUTH_MODE=env 必填集成商用户名或用户登录名
CW_AUTOMATE_PASSWORDstdio 和 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_SECRETHTTP 必填服务到服务密钥。使用 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"
      }
    }
  }
}
导航

该服务器采用决策树模式。首先导航到某个领域:

  1. 使用 cwautomate_navigate 选择领域(计算机、客户端、警报、脚本)
  2. 相应领域的工具随即可用
  3. 使用 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

评论

支持 Markdown

第一次接触 MCP?

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

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