Let your AI assistant work directly with ConnectWise Manage. Search tickets, log time, look up companies and contacts, manage projects — through natural conversation instead of clicking through the CWM interface.
This is a Model Context Protocol (MCP) server that gives Claude (or any MCP-compatible AI) 27 tools covering the daily operations ConnectWise Manage shops depend on. Works with both cloud-hosted and self-hosted CWM instances — just point it at your server.
Part of the MSP Claude Plugins ecosystem — a growing suite of AI integrations for the MSP stack including Autotask, Datto RMM, IT Glue, HaloPSA, NinjaOne, Huntress, and more. Built by MSPs, for MSPs.
| Variable | Required | Description |
|---|---|---|
CW_MANAGE_COMPANY_ID |
Yes | Your ConnectWise company identifier |
CW_MANAGE_PUBLIC_KEY |
Yes | API member public key |
CW_MANAGE_PRIVATE_KEY |
Yes | API member private key |
CW_MANAGE_CLIENT_ID |
Yes | Client ID from ConnectWise Developer Portal |
CW_MANAGE_URL |
No | API base URL (see below) |
CW_MANAGE_REJECT_UNAUTHORIZED |
No | Set to false for self-signed certs (default: true) |
MCP_TRANSPORT |
No | stdio (default) or http |
MCP_HTTP_PORT |
No | HTTP port (default: 8080) |
AUTH_MODE |
No | env (default) or gateway for header-based auth |
| Instance Type | URL |
|---|---|
| Cloud (North America) | https://api-na.myconnectwise.net (default) |
| Cloud (Europe) | https://api-eu.myconnectwise.net |
| Cloud (Australia) | https://api-au.myconnectwise.net |
| Self-hosted | https://cwm.yourcompany.com |
For self-hosted instances, set CW_MANAGE_URL to your server's base URL. The server automatically appends /v4_6_release/apis/3.0 unless the URL already contains that path.
If your self-hosted instance uses a self-signed certificate, also set CW_MANAGE_REJECT_UNAUTHORIZED=false.
- Log in to your ConnectWise Manage instance
- Navigate to System > Members > API Members
- Create a new API member with appropriate permissions
- Generate API keys for the member
- Get your Client ID from the ConnectWise Developer Portal
cw_search_tickets— Search service tickets with conditionscw_get_ticket— Get a ticket by IDcw_create_ticket— Create a new service ticketcw_update_ticket— Update a ticket (JSON Patch)
cw_search_companies— Search companiescw_get_company— Get a company by IDcw_create_company— Create a new companycw_update_company— Update a company (JSON Patch)
cw_search_contacts— Search contactscw_get_contact— Get a contact by IDcw_create_contact— Create a new contact
cw_search_projects— Search projectscw_get_project— Get a project by IDcw_create_project— Create a new project
cw_search_time_entries— Search time entriescw_get_time_entry— Get a time entry by IDcw_create_time_entry— Create a new time entry
cw_search_members— Search members/technicianscw_get_member— Get a member by ID
cw_search_configurations— Search configuration items (assets)cw_get_configuration— Get a configuration item by ID
cw_list_boards— List service boardscw_list_priorities— List ticket prioritiescw_list_statuses— List statuses for a board
cw_search_activities— Search activitiescw_get_activity— Get an activity by IDcw_create_activity— Create a new activity
cw_test_connection— Test connection (hits/system/info)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"connectwise-manage": {
"command": "npx",
"args": ["@wyre-technology/connectwise-manage-mcp"],
"env": {
"CW_MANAGE_COMPANY_ID": "your-company-id",
"CW_MANAGE_PUBLIC_KEY": "your-public-key",
"CW_MANAGE_PRIVATE_KEY": "your-private-key",
"CW_MANAGE_CLIENT_ID": "your-client-id"
}
}
}
}For a self-hosted instance:
{
"mcpServers": {
"connectwise-manage": {
"command": "npx",
"args": ["@wyre-technology/connectwise-manage-mcp"],
"env": {
"CW_MANAGE_URL": "https://cwm.yourcompany.com",
"CW_MANAGE_COMPANY_ID": "your-company-id",
"CW_MANAGE_PUBLIC_KEY": "your-public-key",
"CW_MANAGE_PRIVATE_KEY": "your-private-key",
"CW_MANAGE_CLIENT_ID": "your-client-id",
"CW_MANAGE_REJECT_UNAUTHORIZED": "false"
}
}
}
}docker compose up -dRun with HTTP transport for multi-tenant gateway deployments:
MCP_TRANSPORT=http AUTH_MODE=gateway node dist/index.jsPass credentials per-request via headers: X-CW-Company-Id, X-CW-Public-Key, X-CW-Private-Key, X-CW-Client-Id, and optionally X-CW-URL.
# Install dependencies
npm install
# Build
npm run build
# Run in development
npm run dev
# Type check
npm run typecheck
# Run tests
npm test- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Apache-2.0
Built by WYRE Technology — part of the MSP Claude Plugins ecosystem