Connects Claude to ConnectWise Automate's RMM platform through a decision tree navigation pattern. You navigate into specific domains (computers, clients, alerts, scripts), then get access to the relevant operations like listing and rebooting machines, acknowledging alerts, or executing scripts remotely. The lazy loading approach means handlers only initialize when you enter a domain, which keeps things lean. Requires your Automate server URL and integrator credentials (supports 2FA if needed). Reach for this when you're managing MSP infrastructure through ConnectWise and want Claude to handle routine tasks like checking computer status, creating clients, or running maintenance scripts across your fleet.
A Model Context Protocol (MCP) server for ConnectWise Automate with decision tree architecture for Claude.
[!IMPORTANT] Before you click: this server depends on
@wyre-technology/node-connectwise-automate, which is hosted on the GitHub Packages npm registry. GitHub Packages has no anonymous access — even though the package is public, everynpm installneeds a token. The cloud builder runsnpm installfor you, so you must give it one, or the build fails withnpm error 401 Unauthorized ... npm.pkg.github.com.
- Create a GitHub Personal Access Token with the
read:packagesscope (classic token). Any GitHub account works — you do not need to be a member of thewyre-technologyorg to read its public packages.- Add it as a build variable when prompted by the deploy flow:
- Cloudflare Workers → set a build variable named
NODE_AUTH_TOKENto your PAT (Workers → Settings → Build → Variables and Secrets).- DigitalOcean App Platform → set an encrypted env var named
GITHUB_TOKENwith scope Build Time to your PAT (the.do/deploy.template.yamlalready declares it).
[!NOTE] The DigitalOcean target builds the full Docker image and runs the complete MCP server over HTTP — this is the recommended path for operators. This repo has no Cloudflare Workers entrypoint (
src/worker.ts), so the Workers button is not a supported target yet; prefer DigitalOcean or the prebuilt container image (ghcr.io/wyre-technology/connectwise-automate-mcp).
This package is published to the GitHub Packages npm registry, which requires a token even for public packages. Authenticate once, then install:
# 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-technology/connectwise-automate-mcp
The repo's .npmrc already points the @wyre-technology scope at GitHub Packages and
reads the token from NODE_AUTH_TOKEN, so no further config is needed.
Set the following environment variables:
| Variable | Required | Description |
|---|---|---|
CW_AUTOMATE_SERVER_URL | Yes | Your ConnectWise Automate server URL (e.g. https://your-server.hostedrmm.com) |
CW_AUTOMATE_CLIENT_ID | Yes | ConnectWise Automate Client ID |
CW_AUTOMATE_USERNAME | Yes | Integrator username or user login |
CW_AUTOMATE_PASSWORD | Yes | Integrator password or user password |
CW_AUTOMATE_2FA_CODE | No | Two-factor authentication code (forces user authentication) |
CW_AUTOMATE_AUTH_METHOD | No | integrator (default) or user |
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.
Add to your Claude configuration:
{
"mcpServers": {
"connectwise-automate": {
"command": "npx",
"args": ["@wyre-technology/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"
}
}
}
}
The server uses a decision tree pattern. Start by navigating to a domain:
cwautomate_navigate to select a domain (computers, clients, alerts, scripts)cwautomate_back to return to the main menu# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Type check
npm run typecheck
# Lint
npm run lint
Apache-2.0
CW_AUTOMATE_SERVER_URL*ConnectWise Automate server URL (e.g. https://your-server.hostedrmm.com)
CW_AUTOMATE_CLIENT_ID*secretConnectWise Automate integrator client ID
CW_AUTOMATE_USERNAME*Integrator username or user credential
CW_AUTOMATE_PASSWORD*secretIntegrator password or user password
CW_AUTOMATE_2FA_CODEsecretTwo-factor authentication code, if required by the account
MCP_TRANSPORTdefault: stdioTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODEdefault: envCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELdefault: infoLog verbosity: debug, info, warn, error
makafeli/n8n-workflow-builder
danishashko/make-mcp
lukisch/n8n-manager-mcp
io.github.us-all/airflow
io.github.infoinlet-marketplace/mcp-workflow