# ConnectWise PSA

Connects your AI assistant to ConnectWise Manage for handling tickets, schedule entries, time tracking, and client records.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Author: mspstack
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/mspstack/mcp-connectwise-psa
- Updated: 2026-10-07
- HTML: https://affpapa.org/en/nevibecode/mcp/connectwise-psa

## What it does

This server exposes ConnectWise PSA capabilities through eight modular toolsets. The assistant can search service and project tickets, inspect linked tasks, update priorities, and append internal discussion notes. Technicians can also look up company records, review configuration assets, and submit weekly timesheets.

Sessions run on personal keys. Because each teammate supplies member API keys, ConnectWise enforces standard permission boundaries and records user attribution on every write. Presets like `tech`, `dispatch`, and `invoicing` narrow the visible tool catalog, keeping the prompt context focused. For on-premises instances, a dedicated read-only T-SQL tool queries the database schema directly.

Connecting fails immediately without a free `CW_CLIENT_ID` registered at the ConnectWise developer portal alongside valid member API keys. The package runs locally via standard I/O or as an HTTP daemon inside a Docker container.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `CW_SITE`, `CW_COMPANY_ID`, `CW_CLIENT_ID`, `CW_PUBLIC_KEY`, `CW_PRIVATE_KEY`, `CW_MEMBER_IDENTIFIER`, `CW_TOOLSETS`, `CW_DB_HOST`, `CW_DB_NAME`, `CW_DB_USER` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add mcp-connectwise-psa -e CW_SITE=<CW_SITE> -e CW_COMPANY_ID=<CW_COMPANY_ID> -e CW_CLIENT_ID=<CW_CLIENT_ID> -e CW_PUBLIC_KEY=<CW_PUBLIC_KEY> -e CW_PRIVATE_KEY=<CW_PRIVATE_KEY> -e CW_DB_PASSWORD=<CW_DB_PASSWORD> -- npx -y mcp-connectwise-psa
```
Replace <…> with your own values. 7 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add connectwise-psa --env CW_SITE=<CW_SITE> --env CW_COMPANY_ID=<CW_COMPANY_ID> --env CW_CLIENT_ID=<CW_CLIENT_ID> --env CW_PUBLIC_KEY=<CW_PUBLIC_KEY> --env CW_PRIVATE_KEY=<CW_PRIVATE_KEY> -- npx -y mcp-connectwise-psa
```
Replace <…> with your own values. 7 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "connectwise-psa": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-connectwise-psa"
            ],
            "env": {
                "CW_SITE": "<CW_SITE>",
                "CW_COMPANY_ID": "<CW_COMPANY_ID>",
                "CW_CLIENT_ID": "<CW_CLIENT_ID>",
                "CW_PUBLIC_KEY": "<CW_PUBLIC_KEY>",
                "CW_PRIVATE_KEY": "<CW_PRIVATE_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. 7 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "connectwise-psa": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "mcp-connectwise-psa"
            ],
            "env": {
                "CW_SITE": "<CW_SITE>",
                "CW_COMPANY_ID": "<CW_COMPANY_ID>",
                "CW_CLIENT_ID": "<CW_CLIENT_ID>",
                "CW_PUBLIC_KEY": "<CW_PUBLIC_KEY>",
                "CW_PRIVATE_KEY": "<CW_PRIVATE_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. 7 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e CW_SITE=<CW_SITE> -e CW_COMPANY_ID=<CW_COMPANY_ID> -e CW_CLIENT_ID=<CW_CLIENT_ID> -e CW_PUBLIC_KEY=<CW_PUBLIC_KEY> -e CW_PRIVATE_KEY=<CW_PRIVATE_KEY> connectwise-psa npx -y mcp-connectwise-psa
```
Replace <…> with your own values. 7 more environment variables are in the server README

## When to use it
- record billable work hours against open service tickets
- review technician schedules and check availability blocks
- retrieve client configuration items and hardware serial numbers
- inspect unbilled time and active customer agreements

## Example prompts
- List all high priority tickets assigned to me right now
- Log 30 minutes on ticket 45210 under Remote Support
- Check engineer availability for tomorrow morning

## Similar
- [Reactive Resume](https://affpapa.org/en/nevibecode/mcp/reactive-resume.md) — MCP server · ★ 44908
- [screenpipe](https://affpapa.org/en/nevibecode/mcp/screenpipe.md) — MCP server · ★ 22082
- [Inbox Zero](https://affpapa.org/en/nevibecode/mcp/inbox-zero.md) — MCP server · ★ 12826
- [kaneo](https://affpapa.org/en/nevibecode/mcp/kaneo.md) — MCP server · ★ 9623
- [Mindwtr](https://affpapa.org/en/nevibecode/mcp/mindwtr.md) — MCP server · ★ 2330
- [Azure DevOps (ADO)](https://affpapa.org/en/nevibecode/mcp/azure-devops-ado.md) — MCP server · ★ 2071

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
