ConnectWise Manage MCP
MCP server for ConnectWise Manage (PSA) providing ticket management, company/contact CRM, project management, and time tracking.
🔗 Companion Plugin
Pair this MCP server with the ConnectWise PSA plugin for skills, commands, and API knowledge alongside direct API access.
Installation
Run the MCP server with npx:
npx @wyre-technology/connectwise-manage-mcp Or install the package:
npm install @wyre-technology/connectwise-manage-mcp MCPB Bundle (Claude Desktop)
Download the .mcpb bundle from
GitHub Releases
for a zero-config Claude Desktop install. No Node.js or terminal required — just open the
bundle in Claude Desktop via Settings → MCP Servers → Install from file.
Requires Claude Desktop 0.10+.
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"connectwise-manage": {
"command": "npx",
"args": [
"@wyre-technology/connectwise-manage-mcp"
],
"env": {
"CW_MANAGE_COMPANY_ID": "your-cw-manage-company-id",
"CW_MANAGE_PUBLIC_KEY": "your-cw-manage-public-key",
"CW_MANAGE_PRIVATE_KEY": "your-cw-manage-private-key",
"CW_MANAGE_CLIENT_ID": "your-cw-manage-client-id"
}
}
}
} Authentication
| Variable | Required | Description |
|---|---|---|
CW_MANAGE_COMPANY_ID | Yes | 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 | ConnectWise client ID |
Getting Credentials
Vendor portal: https://developer.connectwise.com/ClientID
Prerequisites
- ConnectWise Manage account with Administrator role
- Knowledge of your ConnectWise company identifier (the prefix in your ConnectWise URL)
- An "Integrator" user role configured for API access (NOT a regular member role — see Member Maintenance docs)
- ConnectWise Developer Network account (free) to obtain CW_MANAGE_CLIENT_ID at developer.connectwise.com/ClientID
Steps
- Visit https://developer.connectwise.com/ClientID and sign in (or register a free ConnectWise Developer Network account).
- Request a Client ID for your integration. Fill in: integration name (e.g., "WYRE Gateway"), description, ConnectWise product (Manage), and integration owner contact details.
- Save the issued Client ID to CW_MANAGE_CLIENT_ID. This identifies your integration globally to ConnectWise.
- Sign in to your ConnectWise Manage instance as an Administrator.
- Navigate to System → Members → API Members.
- Click "+" to create a new API Member, or edit an existing one.
- Set the API Member name (descriptive, e.g., "WYRE Gateway").
- Set the role to one with appropriate permissions for the entities you need.
- In the API Keys tab on the API Member, generate a new key pair.
- Save BOTH the public key (becomes CW_MANAGE_PUBLIC_KEY) and the private key (becomes CW_MANAGE_PRIVATE_KEY)
- ConnectWise only shows the private key once.
- Set CW_MANAGE_COMPANY_ID to your ConnectWise company identifier (the prefix in your portal URL).
Required Scopes / Permissions
Configure the API Member's role to grant access to the entities you need (Tickets, Companies, Time Entries, etc.). Least-privilege per your gateway scope.
Credential Format
Public/private keys are long random strings. Company ID is the URL prefix. Client ID is a UUID issued by ConnectWise Developer Network.
Rotation
Regenerate from the same API Member → API Keys tab. Old key pair invalidated when new pair is generated.
Architecture
Decision tree with lazy-loaded domain handlers.
Available Tools (10)
Tools are organized into 4 domains:
Tickets
Service ticket management.
| Tool | Description |
|---|---|
List tickets | List tickets with filters |
Get ticket | Get ticket details |
Create ticket | Create a new ticket |
Update ticket | Update ticket fields |
Companies
Company management.
| Tool | Description |
|---|---|
List companies | List companies |
Get company | Get company details |
Contacts
Contact management.
| Tool | Description |
|---|---|
List contacts | List contacts |
Get contact | Get contact details |
Projects
Project management.
| Tool | Description |
|---|---|
List projects | List projects |
Get project | Get project details |
Rate Limits
60 requests per minute. The underlying client library handles rate limiting automatically.