MCP.Market

ConnectWise PSA MCP server

by selic·io.github.selic/mcp-connectwise-psa·v0.4.0·5 stars

ConnectWise PSA (Manage) MCP server — tickets, time entries, companies, configurations, BYOK

A85/100grade A
What users say
No reviews yet
Be the first
Safety scan
A85/100

full report

Adoption
Growing

5 stars68 downloads/wk

Reviews

Write one

Nobody has reviewed ConnectWise PSA yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

ConnectWise PSA tools (39, 7 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • cw_add_ticket_note

    Add a note to a ticket. Discussion notes are visible to the customer on portals/emails;

  • cw_create_ticketwrite action

    Create a new service ticket on a board for a company.

  • cw_create_time_entrywrite action

    Log time against a service ticket. Time is attributed to the member whose API keys this session uses.

  • cw_delete_schedule_entrywrite action

    Remove a schedule entry from the dispatch board (e.g. to cancel a scheduled visit).

  • cw_find_endpoint

    Discover which ConnectWise REST endpoint (and its filter fields) fits a task — search a curated

  • cw_get

    Read-only GET for any ConnectWise REST path (the part after /apis/3.0, e.g. /procurement/purchaseorders).

  • cw_get_agreement

    Get one agreement (contract) with its coverage limits and billing cycle. Read-only.

  • cw_get_board

    List the statuses and types available on a service board — the exact names cw_update_ticket

  • cw_get_company

    Get one company by ID.

  • cw_get_configuration

    Get one configuration with full details (serial, model, network, OS, warranty, notes).

  • cw_get_contact

    Get one contact with their phone numbers and email addresses (communication items).

  • cw_get_invoice

    Get one invoice by ID. Read-only.

  • cw_get_member

    Get one member's dispatch profile: timezone, work role, location, capacity, and their working

  • cw_get_ticket

    Get one ticket with its most recent notes (newest first).

  • cw_list_agreements

    List service agreements (contracts), optionally filtered by company or status. Read-only.

  • cw_list_boards

    List service boards. Use to discover exact board names for cw_search_tickets / cw_create_ticket,

  • cw_list_company_sites

    List a company's sites (locations/addresses), with phone and timezone.

  • cw_list_configurations

    List configurations (devices/assets) — servers, firewalls, workstations — optionally filtered by

  • cw_list_invoices

    List invoices, optionally filtered by company, status, or invoice date range (YYYY-MM-DD). Read-only.

  • cw_list_members

    List members (technicians) for dispatch — each with timezone, working-hours calendar name,

  • cw_list_my_time

    List time entries for the member this session acts as, newest first, optionally within a date range.

  • cw_list_my_timesheets

    List timesheets for the member this session acts as, newest first, with their status

  • cw_list_priorities

    List ticket priorities (exact names for cw_create_ticket / cw_update_ticket).

  • cw_list_schedule_entries

    List dispatch/schedule entries, optionally filtered by member, ticket, or date range

  • cw_list_ticket_tasks

    List the task/checklist items on a ticket, with their done state.

  • cw_list_ticket_time

    List all time entries logged against a ticket (by any member), newest first.

  • cw_list_unbilled_time

    List billable time entries not yet on an invoice — what's ready to bill. Filter by company

  • cw_list_work_roles

    List work roles (used when logging time). Excludes inactive by default.

  • cw_member_availability

    Show a member's booked vs free hours on a given day (YYYY-MM-DD): their schedule capacity

  • cw_my_schedule

    List schedule entries assigned to the member this session acts as, optionally within a date range.

  • cw_my_tickets

    List open tickets assigned to the member this session acts as (owner or listed in resources).

  • cw_schedule_ticket

    Schedule a service ticket to a member for a time window. Times are ISO-8601

  • cw_search_companies

    Search companies by name (substring). Use this to find the company ID needed by ticket and configuration tools.

  • cw_search_contacts

    Search contacts by name, optionally within one company.

  • cw_search_tickets

    Search service tickets by company, board, status, summary text, or assigned member.

  • cw_submit_timesheetwrite action

    Submit a timesheet for approval. Get the timesheet id from cw_list_my_timesheets;

  • cw_update_schedule_entrywrite action

    Reschedule or reassign a schedule entry, or mark it done. Times are ISO-8601. Only provided fields change.

  • cw_update_ticketwrite action

    Update a ticket's status, priority, summary, or owner. Only provided fields change.

  • cw_update_time_entrywrite action

    Edit an existing time entry — its notes, start/end, billable flag, or work role. Only provided

Public scan report

scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it

no findings
  • Code scan18 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 30 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10
Overall 85/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How ConnectWise PSA compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
85/100
higher than 70% of 48,255 servers
Tools
39
the typical server has 7
Tools that change things
18%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
5
more than 83% of 28,688 servers
Downloads a week
68
more than 53% of 12,191 servers with a package

What its tools let an agent do: 32 read · 7 change

Install ConnectWise PSA in Claude Code, Cursor or VS Code

Runs npx -y mcp-connectwise-psa on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add mcp-connectwise-psa -- npx -y mcp-connectwise-psa
Add to Cursor

What the publisher says

From the ConnectWise PSA repository's README, as published. We do not edit it. Read it on GitHub

mcp-connectwise-psa

An MCP (Model Context Protocol) server for ConnectWise PSA (Manage) — curated tools across 8 toolsets covering technicians, dispatchers, and billing, plus an escape hatch for the rest of the API and a read-only SQL toolset for on-prem deployments, so an AI assistant works PSA the way each role does:

  • Tickets — search / my tickets / full detail with notes, create, update status/priority/owner, add discussion/internal notes, plus board·status·priority discovery and per-ticket time & tasks. Covers service and project tickets — ConnectWise keeps them on separate resources, so the read tools query both and the by-id tools detect which one an id belongs to
  • Time — log time against tickets (with work role, work type and CW's Deduct for breaks), review your own time, work-role and work-type lookup, and list & submit your timesheets
  • Companies & contacts — fast lookup, contact detail (phones/emails), company sites
  • Configurations — devices/assets with serials, IPs, OS, warranty (read-only)
  • Dispatch (schedule) — schedule entries (list/mine/create/reschedule/cancel), and members with their timezone, working hours, and free-vs-booked availability
  • Invoicing (finance, read-only) — invoices, agreements, and unbilled billable time ready to bill
  • SQL (on-prem only) — read-only T-SQL straight against the cwwebapp Manage database for the cross-table reporting REST cannot express, with a searchable schema catalog and a library of saved queries the assistant can grow. Enabled by configuring CWDB_*; where it is, every session that does not narrow its toolsets has it
  • Toolsets & personas — enable only what a session needs via the x-cw-toolsets header (or CWTOOLSETS); presets tech / dispatch / invoicing / all. Default is all — narrow it per session when a smaller surface is wanted. Each tool also reports its toolset as meta.group, so an aggregator (the MSPStack gateway) can group and switch tools by capability
  • Per-member API keys (BYOK) — each user supplies their own ConnectWise member keys; ConnectWise enforces that member's security role, and every write is attributed to the actual person
  • Transports — stdio for local use, streamable HTTP for shared deployments; Docker image included

Quick start (local, stdio)

npm install && npm run build
CW_SITE=na.myconnectwise.net \
CW_COMPANY_ID=yourcompany \
CW_CLIENT_ID=<integration clientId> \
CW_PUBLIC_KEY=xxxx CW_PRIVATE_KEY=yyyy \
CW_MEMBER_IDENTIFIER=jdoe \
node dist/index.js

Claude Desktop / Claude Code config:

{
  "mcpServers": {
    "connectwise": {
      "command": "node",
      "args": ["/path/to/mcp-connectwise-psa/dist/index.js"],
      "env": {
        "CW_SITE": "na.myconnectwise.net",
        "CW_COMPANY_ID": "yourcompany",
        "CW_CLIENT_ID": "<clientId>",
        "CW_PUBLIC_KEY": "xxxx",
        "CW_PRIVATE_KEY": "yyyy",
        "CW_MEMBER_IDENTIFIER": "jdoe"
      }
    }
  }
}

A clientId is required by the ConnectWise API — register a (free) integration at developer.connectwise.com. API member keys are created in ConnectWise under My Account → API Keys (per member) or System → Members → API Members (integration accounts).

HTTP deployment

CW_SITE=… CW_COMPANY_ID=… CW_CLIENT_ID=… \
node dist/index.js --transport http --port 3000

Or with Docker: docker build -t mcp-connectwise-psa . && docker run -p 3000:3000 -e CWSITE -e CWCOMPANYID -e CWCLIENT_ID mcp-connectwise-psa

Sessions are held in memory — run a single instance (or sticky sessions).

Access control — bring your own keys (BYOK)

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

ConnectWise PSA: common questions

Is ConnectWise PSA MCP server safe?
Yes, by our scan: it is graded A (85/100). Read the ConnectWise PSA safety report
How do I install ConnectWise PSA?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does ConnectWise PSA need an API key?
Yes. The registry entry asks for CW_PUBLIC_KEY, CW_PRIVATE_KEY.
Is ConnectWise PSA maintained?
The last commit was 69 days ago (2026-08-27). The latest release is v0.4.0.
How does ConnectWise PSA compare with other MCP servers?
safety score 85/100 (higher than 70% of 48,255 servers); tools 39 (the typical server has 7); tools that change things 18% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

More from selic →