MCP server for ConnectWise Automate (RMM) — computer management, patching, scripting, and monitoring tools for AI assistants
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add connectwise-automate --env CW_AUTOMATE_SERVER_URL='<CW_AUTOMATE_SERVER_URL>' --env CW_AUTOMATE_CLIENT_ID='<CW_AUTOMATE_CLIENT_ID>' --env CW_AUTOMATE_USERNAME='<CW_AUTOMATE_USERNAME>' --env CW_AUTOMATE_PASSWORD='<CW_AUTOMATE_PASSWORD>' --env CW_AUTOMATE_2FA_CODE='<CW_AUTOMATE_2FA_CODE>' -- 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 ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4~/.codex/config.toml
[mcp_servers.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", "ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4"]
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>" }
# codex mcp add connectwise-automate --env CW_AUTOMATE_SERVER_URL='<CW_AUTOMATE_SERVER_URL>' --env CW_AUTOMATE_CLIENT_ID='<CW_AUTOMATE_CLIENT_ID>' --env CW_AUTOMATE_USERNAME='<CW_AUTOMATE_USERNAME>' --env CW_AUTOMATE_PASSWORD='<CW_AUTOMATE_PASSWORD>' --env CW_AUTOMATE_2FA_CODE='<CW_AUTOMATE_2FA_CODE>' -- 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 ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4~/.cursor/mcp.json
{
"mcpServers": {
"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",
"ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4"
],
"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>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"connectwise-automate": {
"type": "stdio",
"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",
"ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4"
],
"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>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"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",
"ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4"
],
"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>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"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",
"ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4"
],
"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>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"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",
"ghcr.io/wyre-ai/connectwise-automate-mcp:v2.0.4"
],
"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>"
}
}
}
}Environment variables
CW_AUTOMATE_SERVER_URLCW_AUTOMATE_CLIENT_IDCW_AUTOMATE_USERNAMECW_AUTOMATE_PASSWORDCW_AUTOMATE_2FA_CODE
Replace the placeholders with your own credentials and keep them out of version control.