ConnectWise Automate

io.github.wyre-technology由 GitHub 帳號 wyre-technology 發布v1.8.2更新於 Oct 24, 2026

MCP server for ConnectWise Automate RMM — computers, clients, alerts, and scripts.

概覽

AI 產生的概覽

針對 ConnectWise Automate RMM 的 MCP 伺服器,讓助理瀏覽電腦、客戶、警示與指令碼,並在受管裝置上執行指令碼或重新開機。

可以做什麼
  • 在電腦、客戶、警示與指令碼四個領域之間依決策樹導覽,並可返回主選單。
  • 列出、搜尋並檢視電腦詳細資料,在 MCP Apps 宿主中顯示唯讀互動式裝置卡片。
  • 遠端重新開機電腦並在其上執行指令碼。
  • 列出、檢視、建立與更新客戶。
  • 列出並檢視警示(Automate API 中為唯讀)。
  • 列出指令碼、檢視指令碼詳細資料並在電腦上執行。
適用情境
適合託管服務供應商與 IT 團隊,讓助理在 ConnectWise Automate 中查詢裝置、客戶與警示,或對受管端點觸發指令碼執行與重新開機,而不必切換到 Automate 主控台。
執行需求
以 stdio 在本機執行(npx 或容器映像)或透過 HTTP 執行。需要 CW_AUTOMATE_SERVER_URL、CW_AUTOMATE_CLIENT_ID、CW_AUTOMATE_USERNAME 與 CW_AUTOMATE_PASSWORD;CW_AUTOMATE_2FA_CODE 為選用,設定後改用使用者驗證。npm 套件位於 GitHub Packages,安裝需要具備 read:packages 權限的 GitHub 權杖(NODE_AUTH_TOKEN)。HTTP 模式另需 CONDUIT_S2S_SECRET。
安裝前請注意
保存可存取 RMM 平台的 ConnectWise Automate 憑證(CW_AUTOMATE_CLIENT_ID、CW_AUTOMATE_USERNAME、CW_AUTOMATE_PASSWORD,以及選用的 CW_AUTOMATE_2FA_CODE)。工具可重新開機機器、執行指令碼以及建立或更新客戶,變更會作用於真實端點。HTTP 模式需要 CONDUIT_S2S_SECRET 與閘道標頭;MCP_ALLOW_INSECURE_DEV 會關閉請求驗證,僅限本機開發。安裝套件另需 GitHub 權杖。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ConnectWise Automate,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

ConnectWise Automate MCP Server

A Model Context Protocol (MCP) server for ConnectWise Automate with decision tree architecture for Claude.

One-Click Deployment

[!IMPORTANT] Before you click: this server depends on @wyre-ai/node-connectwise-automate, which is hosted on the GitHub Packages npm registry. GitHub Packages has no anonymous access — even though the package is public, every npm install needs a token. The cloud builder runs npm install for you, so you must give it one, or the build fails with npm error 401 Unauthorized ... npm.pkg.github.com.

  1. Create a GitHub Personal Access Token with the read:packages scope (classic token). Any GitHub account works — you do not need to be a member of the WYRE-AI org to read its public packages.
  2. Add it as a build variable when prompted by the deploy flow:
    • Cloudflare Workers → set a build variable named NODE_AUTH_TOKEN to your PAT (Workers → Settings → Build → Variables and Secrets).
    • DigitalOcean App Platform → set an encrypted env var named GITHUB_TOKEN with scope Build Time to your PAT (the .do/deploy.template.yaml already declares it).

[Deploy to DO]

[Deploy to Cloudflare Workers]

[!NOTE] The DigitalOcean target builds the full Docker image and runs the complete MCP server over HTTP — this is the recommended path for operators. Set CONDUIT_S2S_SECRET (and the CW_AUTOMATE_* secrets) before the first boot; HTTP mode exits if the S2S secret is missing. The template sets AUTH_MODE=env for that single-tenant deploy. This repo has no supported Cloudflare Workers target yet; prefer DigitalOcean or the prebuilt container image (ghcr.io/wyre-ai/connectwise-automate-mcp).

Features

  • Decision Tree Architecture: Navigate between domains (computers, clients, alerts, scripts) to access relevant tools
  • Lazy Loading: Client initialization and domain handlers are loaded on demand
  • Comprehensive API Coverage: Manage computers, clients, alerts, and scripts
  • Interactive Device Card (MCP Apps): cwautomate_computers_get renders as a read-only interactive card in MCP Apps hosts (Claude Desktop/web); neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env vars; plain-JSON behavior is unchanged in other hosts

Installation

This package is published to the GitHub Packages npm registry, which requires a token even for public packages. Authenticate once, then install:

bash
# 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

The repo's .npmrc already points the @wyre-ai scope at GitHub Packages and reads the token from NODE_AUTH_TOKEN, so no further config is needed.

Configuration

Copy .env.example and set the variables below. The stdio transport reads CW_AUTOMATE_* and does not use CONDUIT_S2S_SECRET.

VariableRequiredDescription
CW_AUTOMATE_SERVER_URLFor stdio and AUTH_MODE=envConnectWise Automate server URL (e.g. https://your-server.hostedrmm.com)
CW_AUTOMATE_CLIENT_IDFor stdio and AUTH_MODE=envConnectWise Automate Client ID
CW_AUTOMATE_USERNAMEFor stdio and AUTH_MODE=envIntegrator username or user login
CW_AUTOMATE_PASSWORDFor stdio and AUTH_MODE=envIntegrator password or user password
CW_AUTOMATE_2FA_CODENoTwo-factor authentication code (forces user authentication)
CW_AUTOMATE_AUTH_METHODNointegrator (default) or user
MCP_TRANSPORTNostdio (default) or http
AUTH_MODENogateway (Docker image and Compose default) or env. Gateway mode requires X-CWA-Server, X-CWA-Client-ID, X-CWA-Username, and X-CWA-Password on each /mcp request and never falls back to CW_AUTOMATE_*. env uses those variables only after S2S auth succeeds.
CONDUIT_S2S_SECRETYes for HTTPService-to-service secret. Generate with openssl rand -hex 32. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder (replace-with-a-real-secret, changeme, and the other example values). The value is never logged. Compose will not start without it. Never commit a real value.
MCP_ALLOW_INSECURE_DEVNoSet to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning and does not enforce X-Gateway-S2S. The listener is forced to 127.0.0.1; a wider MCP_HTTP_HOST (including 0.0.0.0) is ignored and the override is logged. A placeholder secret still refuses to start.
MCP_HTTP_HOSTNoBind address when MCP_TRANSPORT=http and CONDUIT_S2S_SECRET is set. Defaults to 127.0.0.1. The container image sets 0.0.0.0.
MCP_HTTP_PORTNoHTTP port. Defaults to 8080.

/health stays unauthenticated and does not read credentials.

HTTP authentication

With MCP_TRANSPORT=http and a real CONDUIT_S2S_SECRET, every /mcp request must include X-Gateway-S2S. The header value is t=<unix seconds>,v1=<hex>, where the hex is HMAC-SHA256 of the literal string t=<unix seconds> keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header is HTTP 401, before vendor credentials are read.

bash
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":{}}'

In AUTH_MODE=gateway, those X-CWA-* headers are the only credential source (X-CWA-2FA and X-CWA-Auth-Method are optional). A request missing any required header is HTTP 401 and does not use CW_AUTOMATE_* from the environment. With AUTH_MODE=env, the signed request uses the CW_AUTOMATE_* variables instead.

Docker

The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode, Automate credentials arrive on each request as headers; they are not read from the environment.

bash
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

Compose refuses to start when CONDUIT_S2S_SECRET is unset, sets AUTH_MODE=gateway, does not inject CW_AUTOMATE_*, and publishes 127.0.0.1:8080:8080:

bash
CONDUIT_S2S_SECRET=your-s2s-secret docker compose up

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses CW_AUTOMATE_*:

bash
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

Local HTTP without a secret is development-only. It binds 127.0.0.1 only and logs a warning. A non-loopback MCP_HTTP_HOST is overridden to 127.0.0.1:

bash
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 node dist/index.js

The DigitalOcean App Platform template is single-tenant: it sets AUTH_MODE=env so the CW_AUTOMATE_* secrets stay the credential source, and it declares CONDUIT_S2S_SECRET. Set that secret in the App Platform UI or the container exits on boot.

Authentication methods

The server supports both ConnectWise Automate authentication methods:

  • integrator (default) – machine-to-machine integrator account. Recommended for automation. Does not use 2FA.
  • user – interactive user login, which can supply a two-factor code.

You normally don't need to set CW_AUTOMATE_AUTH_METHOD: integrator auth is used by default, and user auth is selected automatically when CW_AUTOMATE_2FA_CODE is provided.

Usage

As an MCP Server

Add to your Claude configuration:

json
{  "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"      }    }  }}

Navigation

The server uses a decision tree pattern. Start by navigating to a domain:

  1. Use cwautomate_navigate to select a domain (computers, clients, alerts, scripts)
  2. Domain-specific tools become available
  3. Use cwautomate_back to return to the main menu

Available Domains

Computers
  • List computers with filtering options
  • Get computer details
  • Search computers by name
  • Reboot computers remotely
  • Run scripts on computers
Clients
  • List all clients
  • Get client details
  • Create new clients
  • Update existing clients
Alerts
  • List alerts with filtering (read-only in the Automate API)
  • Get alert details
Scripts
  • List available scripts
  • Get script details
  • Execute scripts on computers

Development

bash
# Install dependenciesnpm install
# Buildnpm run build
# Run testsnpm test
# Type checknpm run typecheck
# Lintnpm run lint

License

Apache-2.0

來源:README.md,提交 3aa588f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.8.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分