ConnectWise Manage
MCP server for ConnectWise Manage PSA — companies, tickets, projects, time entries, and more.
Connector by wyre-technology · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/wyre-technology-connectwise-manage-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 58 read · 20 write · 5 delete · 1 not yet classified
- Secrets
- 3 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Docker image
Tools by what they do 84
Read from the source code; the running server may list different tools.
Read 58 · Look things up without changing anything.
cw_get_activitycw_get_adjustmentcw_get_agreementcw_get_agreement_additionscw_get_agreement_recapcw_get_catalog_itemcw_get_companycw_get_configurationcw_get_contactcw_get_inventory_on_handcw_get_invoicecw_get_member
Show 46 more tools
cw_get_opportunitycw_get_procurement_productcw_get_projectcw_get_project_ticketcw_get_project_ticket_notescw_get_purchase_ordercw_get_purchase_order_itemscw_get_sales_ordercw_get_sales_order_productscw_get_ticketcw_get_ticket_configurationscw_get_ticket_notescw_get_time_entrycw_list_adjustment_typescw_list_boardscw_list_catalog_categoriescw_list_catalog_subcategoriescw_list_communication_typescw_list_manufacturerscw_list_prioritiescw_list_schedule_statusescw_list_schedule_typescw_list_statusescw_list_warehouse_binscw_list_warehousescw_search_activitiescw_search_agreement_recapscw_search_agreementscw_search_catalog_itemscw_search_companiescw_search_configurationscw_search_contactscw_search_invoicescw_search_memberscw_search_opportunitiescw_search_opportunity_forecastscw_search_opportunity_notescw_search_procurement_productscw_search_project_ticketscw_search_projectscw_search_purchase_orderscw_search_sales_orderscw_search_sales_stagescw_search_schedule_entriescw_search_ticketscw_search_time_entries
Write 20 · Create, change, send or run things.
cw_add_adjustment_detailcw_add_project_ticket_notecw_add_ticket_notecw_close_adjustmentcw_create_activitycw_create_adjustmentcw_create_agreement_additioncw_create_catalog_itemcw_create_companycw_create_contactcw_create_projectcw_create_schedule_entry
Show 8 more tools
cw_create_ticketcw_create_time_entrycw_update_agreement_additioncw_update_catalog_itemcw_update_companycw_update_contactcw_update_ticketcw_update_time_entry
Delete 5 · Delete, drop, revoke or wipe things.
cw_delete_time_entrycw_update_contact_typescw_update_invoicecw_update_schedule_entrycw_update_ticket_configurations
Not yet classified 1 · We could not tell from the name and description.
cw_test_connection
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
CW_MANAGE_CLIENT_IDCW_MANAGE_PRIVATE_KEYCW_MANAGE_PUBLIC_KEY
Other settings (environment variables or headers).
AUTH_MODECW_MANAGE_COMPANY_IDCW_MANAGE_URLLOG_LEVELMCP_TRANSPORT
Network hosts it talks to 8
api-au.myconnectwise.net· found in codeapi-eu.myconnectwise.net· found in codeapi-na.myconnectwise.net· found in codecwm.yourcompany.com· found in codegithub.com· found in codeglama.ai· found in codelogin.microsoftonline.com· found in codemcp.yourdomain.com· found in code
Tools (84)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
cw_add_adjustment_detailAdd one line to an open inventory adjustment. quantityAdjusted is signed and applied to the current on-hand, so pass a negative number to remove stock: zeroing a bin holding 7 units means quantityAdjusted = -7. ConnectWise takes whole units only on this field. Both warehouseId and warehouseBinId are required by the API, not just the bin. Adding a line still moves no stock: nothing posts until cw_close_adjustment. For a serialised item, pass the exact serial numbers being adjusted in serialNumbers; ConnectWise stores them as one comma-joined string capped at 1000 characters, and a negative adju…
cw_add_project_ticket_noteAdd a note to a project ticket. Use internalAnalysisFlag for internal-only notes or resolutionFlag for resolution notes. Defaults to a plain discussion note. emailContactFlag, emailResourceFlag, and emailCcFlag are not note fields, are not sent, and never default to true. memberId is sent as member.id only when set.
cw_add_ticket_noteAdd a note to a service ticket. Use detailDescriptionFlag for a discussion note, internalAnalysisFlag for an internal-only note, or resolutionFlag for a resolution note. Defaults to a plain discussion note. Nothing is emailed unless processNotifications is true. emailContactFlag, emailResourceFlag, and emailCcFlag never default to true and are not sent: POST /service/tickets/{id}/notes (ServiceNote) does not have those fields (they belong to TimeEntry and to the ticket automaticEmail* fields). Sending them is what returns 400. A true flag only turns on processNotifications, unless you set proc…
cw_close_adjustmentPost an inventory adjustment by setting closedFlag to true. THIS IS THE WRITE THAT MOVES STOCK: closing the adjustment applies every detail line to on-hand quantities and writes the matching general ledger entries. It is not reversible except by a counter-adjustment. ConnectWise will not let a closed adjustment be reopened, edited or deleted, so the only way back is a second adjustment posting the opposite quantities. Call cw_get_adjustment and check every line first, and confirm with the user before calling this.
cw_create_activityCreate a new activity.
cw_create_adjustmentCreate an inventory adjustment header in ConnectWise Manage and return its ID. This writes the header only and moves no stock: add lines with cw_add_adjustment_detail, then post it with cw_close_adjustment. The open header stays open until someone deletes it in the ConnectWise UI. This server has no delete tool. Do not call cw_close_adjustment unless the user intends to post stock. ConnectWise has no 'summary' field on an adjustment: the free-text fields are reason (max 100 characters, which is what shows in the adjustment list) and notes (unbounded).
cw_create_agreement_additionCreate a new addition (recurring line item) on an agreement (Manage POST /finance/agreements/{agreementId}/additions). Requires a catalog item (productId) and billCustomer. NOTE: field coverage here was verified against a community-maintained ConnectWise Manage type reference, not the official REST docs directly -- if Manage rejects the create with a validation error on a field not listed here, that field is real but missing from this tool's schema.
cw_create_catalog_itemCreate a new catalog item (product SKU) in ConnectWise. Surfaces the common MSP fields directly; use 'extraFields' for anything else supported by POST /procurement/catalog (e.g. manufacturerPartNumber, unitOfMeasure, ianCode, upc, minStockLevel).
cw_create_companyCreate a new company.
cw_create_contactCreate a new contact. Communication type names vary per ConnectWise tenant (some have no type named "Email" or "Direct"), so the email and phone types are looked up from GET /company/communicationTypes (emailFlag / phoneFlag) unless you pass emailTypeId / emailTypeName / phoneTypeId / phoneTypeName. An id wins over a name; a name is matched case-insensitively and an unknown name returns the available types. Use cw_list_communication_types to see the ids.
cw_create_projectCreate a new project.
cw_create_schedule_entryBook resource time by creating a schedule entry against a ticket, activity or project ticket. This is the forward booking, not the record of work done: use cw_create_time_entry for that. The entry syncs to the member's Outlook calendar, so there is no need to book the same work in Outlook separately. memberId is required and never assumed, so confirm who the booking is for before calling. ConnectWise interprets dateStart and dateEnd as UTC (trailing 'Z'). Perth (AWST) is UTC+8 with no daylight saving, so 10:00 Perth is 02:00Z and a Perth time before 08:00 lands on the previous UTC date.
cw_create_ticketCreate a new service ticket.
cw_create_time_entryCreate a new time entry. ConnectWise ignores emailContactFlag, emailResourceFlag and emailCcFlag on create and copies the ticket's automaticEmailContactFlag, automaticEmailResourceFlag and automaticEmailCcFlag onto the new entry, so sending false alone does not stop the email. For ServiceTicket and ProjectTicket, this tool turns off each ticket flag whose entry flag is false (the default) for the instant of the create, then turns it back on. If it cannot read or turn off a flag, the entry is not created. Turning the flags back on is tried up to 3 times. If every try fails, the entry WAS create…
cw_delete_time_entryDelete a time entry (Manage DELETE /time/entries/{id}). Use this to remove a mistaken entry before it is billed. Manage rejects deletes of entries that are already billed.
Show 69 more tools
cw_get_activityGet a specific activity by ID.
cw_get_adjustmentGet an inventory adjustment header together with every one of its detail lines. Use this to check an adjustment before posting it with cw_close_adjustment, and to read back the unitCost ConnectWise applied to each line. The header's closedFlag tells you whether it has already posted.
cw_get_agreementGet a specific finance agreement by ID.
cw_get_agreement_additionsGet additions (line items) for a specific agreement.
cw_get_agreement_recapGet the billing recap for a specific agreement by agreement ID.
cw_get_catalog_itemGet a specific catalog item by ID.
cw_get_companyGet a specific company by ID.
cw_get_configurationGet a specific configuration item (asset/CI) by ID.
cw_get_contactGet a specific contact by ID.
cw_get_inventory_on_handReport every catalog item holding non-zero stock, one row per warehouse bin. Negative on-hand is reported too, because a negative balance is exactly what an adjustment usually has to correct. ConnectWise exposes on-hand only per bin, so this walks every bin and pages each one fully, which makes a whole-instance scan slow: pass warehouseId or binIds to narrow it. Each row gives the catalog item ID, identifier and description, the warehouse and bin, the on-hand quantity, the unit cost and the extended value, plus any serial numbers held in that bin. Read the cost with care: the ConnectWise API e…
cw_get_invoiceGet a specific invoice by ID.
cw_get_memberGet a specific member by ID.
cw_get_opportunityGet a specific sales opportunity by ID.
cw_get_procurement_productGet a specific procurement product item by ID.
cw_get_projectGet a specific project by ID.
cw_get_project_ticketGet a specific project ticket by ID.
cw_get_project_ticket_notesGet all notes on a project ticket, including notes from any child tickets.
cw_get_purchase_orderGet a specific purchase order by ID.
cw_get_purchase_order_itemsGet the line items on a specific purchase order, including unit cost, extended cost, quantity received, and receipt status.
cw_get_sales_orderGet a specific sales order by ID.
cw_get_sales_order_productsGet the procurement product items on a specific sales order. Always scoped to the given order; any extra 'conditions' are ANDed with that scope.
cw_get_ticketGet a specific service ticket by ID.
cw_get_ticket_configurationsGet configuration references associated with a service ticket, one page at a time (default: page 1, 25 results). Request additional pages as needed. Returns id, deviceIdentifier, and _info when provided by Manage; use cw_get_configuration for full configuration details.
cw_get_ticket_notesGet all notes/discussions on a service ticket, including notes from any child tickets.
cw_get_time_entryGet a specific time entry by ID.
cw_list_adjustment_typesList inventory adjustment types in ConnectWise Manage. Every adjustment header names one, so call this before creating an adjustment. Each type carries an identifier, a name and an auditTrailFlag. The type is what tells ConnectWise which general ledger account the adjustment posts against, so pick it deliberately rather than taking the first row.
cw_list_boardsList service boards in ConnectWise Manage.
cw_list_catalog_categoriesList product categories from the ConnectWise catalog.
cw_list_catalog_subcategoriesList product subcategories from the ConnectWise catalog.
cw_list_communication_typesList the communication types configured in this ConnectWise tenant (GET /company/communicationTypes). Records include id, description, emailFlag, phoneFlag, faxFlag, and defaultFlag. Use the ids as emailTypeId / phoneTypeId on cw_create_contact, or as type { "id": <id> } in communicationItems on cw_update_contact.
cw_list_manufacturersList manufacturers referenced by catalog items.
cw_list_prioritiesList ticket priorities in ConnectWise Manage.
cw_list_schedule_statusesread-onlyList schedule statuses in ConnectWise Manage. Statuses are usually 'Tentative' and 'Firm', one of which is flagged as the instance default.
cw_list_schedule_typesread-onlyList schedule types in ConnectWise Manage. The type decides what kind of object the entry books against, so call this before creating an entry. Typical identifiers are 'S' for Service (a service ticket), 'P' for Project, 'C' for Sales and 'N' for Meeting.
cw_list_statusesList ticket statuses for a specific service board in ConnectWise Manage.
cw_list_warehouse_binsList warehouse bins in ConnectWise Manage. A bin is the location stock actually sits in, and every inventory adjustment line names one. Pass warehouseId to list only the bins of a single warehouse. The quantityOnHand on a bin is a rollup across every item in it, so use cw_get_inventory_on_hand for per-item stock.
cw_list_warehousesList inventory warehouses in ConnectWise Manage. A warehouse groups the bins that actually hold stock, so start here before reading on-hand quantities or building an adjustment. Each warehouse carries name, location, department, currency and the inactiveFlag / lockedFlag pair: a locked warehouse rejects adjustments.
cw_search_activitiesSearch schedule activities in ConnectWise Manage.
cw_search_agreement_recapsSearch agreement recaps — the billing rollup ConnectWise computes per agreement: starting, used, remaining, available and overrun amounts, unbilled periods, and the last and next invoice amount and date. Use this to answer agreement burn-down and overage questions without adding up additions by hand.
cw_search_agreementsSearch finance agreements (recurring revenue contracts) in ConnectWise Manage. Use 'conditions' for CW query syntax (e.g. "cancelledFlag = false", "company/name = 'Acme'").
cw_search_catalog_itemsSearch the ConnectWise product catalog. Use 'conditions' for CW query syntax (e.g. "identifier like '%SKU-%'" or "manufacturer/id=5").
cw_search_companiesSearch companies in ConnectWise Manage. Use 'conditions' for CW query syntax (e.g. "name like '%Acme%'").
cw_search_configurationsSearch configuration items (assets/CIs) in ConnectWise Manage.
cw_search_contactsSearch contacts in ConnectWise Manage. Parent fields go in conditions with double-quoted strings (e.g. firstName = "John" or company/id = 5). There is no contact field named name — use firstName and lastName (a bare name = "..." is rewritten to those). Contact type is a child collection: do not put types or types/name in conditions (Manage returns 400 ApiFindCondition). Filter type with typeName, typeId, or childConditions such as types/name = "Primary". Single quotes are accepted and sent as double quotes.
cw_search_invoicesSearch invoices in ConnectWise Manage.
cw_search_membersSearch members (technicians/users) in ConnectWise Manage.
cw_search_opportunitiesSearch sales opportunities in ConnectWise Manage. Use 'conditions' for CW query syntax (e.g. "status/name = '1. Open'", "closedFlag = false").
cw_search_opportunity_forecastsSearch opportunity forecasts/revenue items for a specific opportunity.
cw_search_opportunity_notesGet notes on a specific sales opportunity.
cw_search_procurement_productsSearch procurement product items — catalog SKUs placed on a ticket, project, sales order or opportunity, with their own price, cost and margin. For the catalog SKU definitions themselves use cw_search_catalog_items instead. Use 'conditions' for CW query syntax (e.g. "company/id = 42", "invoice/id = 1001").
cw_search_project_ticketsSearch tickets under a project. Use projectId to filter by project, or conditions for CW query syntax.
cw_search_projectsSearch projects in ConnectWise Manage.
cw_search_purchase_ordersSearch purchase orders (the buy side) in ConnectWise Manage. Use 'conditions' for CW query syntax (e.g. "closedFlag = false", "vendorCompany/name = 'Ingram'", "poDate > [2026-01-01T00:00:00Z]").
cw_search_sales_ordersSearch sales orders (the sell side) in ConnectWise Manage. Use 'conditions' for CW query syntax (e.g. "status/name = 'Open'", "company/name = 'Acme'"). For purchase orders use cw_search_purchase_orders instead.
cw_search_sales_stagesList sales pipeline stages in ConnectWise Manage.
cw_search_schedule_entriesread-onlySearch schedule entries (booked resource time) in ConnectWise Manage. Use 'conditions' for CW query syntax (e.g. "member/id = 147 and type/id = 4"). Each entry carries objectId (the ticket, activity or project ticket it is booked against), member, dateStart, dateEnd, type, status, reminder, doneFlag and hours. ConnectWise interprets dateStart and dateEnd as UTC (trailing 'Z'). Perth (AWST) is UTC+8 with no daylight saving, so 10:00 Perth is 02:00Z and a Perth time before 08:00 lands on the previous UTC date.
cw_search_ticketsSearch service tickets in ConnectWise Manage. Use 'conditions' for CW query syntax (e.g. "status/name != 'Closed'" or "company/name = 'Acme'").
cw_search_time_entriesSearch time entries in ConnectWise Manage.
cw_test_connectionTest the connection to ConnectWise Manage.
cw_update_agreement_additionUpdate an agreement addition (recurring line item) with JSON Patch (Manage PATCH /finance/agreements/{agreementId}/additions/{additionId}). Use this for seat-count reconciliation and similar corrections. Common paths: quantity, effectiveDate, cancelledDate, billCustomer ('Billable' | 'DoNotBill' | 'NoCharge'), description, invoiceDescription, unitPrice, unitCost. Set dryRun to preview the result without saving.
cw_update_catalog_itemUpdate an existing catalog item using JSON Patch operations.
cw_update_companyUpdate an existing company using JSON Patch operations.
cw_update_contactUpdate an existing contact with JSON Patch (Manage PATCH /company/contacts/{id}). Operations use the same shape as cw_update_ticket and cw_update_company: op (replace, add, or remove), path, and value. Add and replace require value. Common paths: firstName, lastName, title, inactiveFlag, site (value is { "id": <siteId> }), communicationItems (email and phone — replacing the array replaces every item, so include items to keep; each item is { "type": { "id": <communicationTypeId> }, "value": "...", "communicationType": "Email" } or communicationType "Phone". Communication type names vary per ten…
cw_update_contact_typesAdd or remove a contact type association (Manage POST or DELETE /company/contacts/{id}/typeAssociations). Use this instead of cw_update_contact when tagging a contact, for example as Decision Maker after they authorize someone in a ticket note. action "add" takes typeName or typeId. typeName is resolved with GET /company/contacts/types. Adding a type the contact already has returns the existing association and does not create a duplicate. action "remove" takes associationId, or typeName / typeId to find the association and delete it.
cw_update_invoicecan change or delete dataUpdate a single finance invoice with JSON Patch (Manage PATCH /finance/invoices/{id}); returns the updated invoice (same shape as cw_get_invoice). Allowed paths (with or without leading slash): status/id (numeric id) or status ({ id }); attention, dueDate, date, reference, customerPO, internalNotes; billToCompany and billingSite (as { id }) or their /id subpaths (billToSite is accepted as an alias for billingSite). Manage invoices have no billToContact field; use attention for the contact name. Any other path (custom fields, payment fields, etc.) is rejected before Manage is called. Scout bill…
cw_update_schedule_entrycan change or delete dataUpdate an existing schedule entry using JSON Patch operations. Use this to move a booking, change its status, or mark it done. There is deliberately no delete tool: removing booked time stays a manual action in ConnectWise. ConnectWise interprets dateStart and dateEnd as UTC (trailing 'Z'). Perth (AWST) is UTC+8 with no daylight saving, so 10:00 Perth is 02:00Z and a Perth time before 08:00 lands on the previous UTC date.
cw_update_ticketUpdate an existing service ticket using JSON Patch operations.
cw_update_ticket_configurationsAdd or remove configuration associations on a service ticket. Operations run sequentially in the supplied order, including repeated configuration IDs. Removing an association leaves the configuration object intact. Continues after individual failures without rollback or automatic retries; returns every operation's outcome and sets isError if any fail. Duplicate-add and missing-association errors are reported as failures.
cw_update_time_entryUpdate a time entry with JSON Patch (Manage PATCH /time/entries/{id}). Use this to correct a mistaken entry, including actualHours on a metered agreement (those hours round to 0.25). Paths are field names such as actualHours, notes, internalNotes, timeStart, timeEnd, or billableOption. Billed entries may be rejected by Manage.
Signals
- Stars
- 28
- Forks
- 44
- Open issues
- 1
- Contributors
- 14
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.wyre-technology/connectwise-manage-mcp- Version
- 1.8.6
- Auth
- API key
- Packages
- oci
ghcr.io/wyre-technology/connectwise-manage-mcp:v1.8.6 - License
- Apache-2.0
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from wyre-technology
- 0.648score
Autotask
wyre-technology
MCP server for Kaseya Autotask PSA — companies, tickets, projects, time entries, and more.
ConnectorAFreshness: ALocal★ 58Claude Code +5 - 0.637score
NinjaOne
wyre-technology
MCP server for NinjaOne RMM — devices, organizations, alerts, and tickets.
ConnectorAFreshness: ALocal★ 26Claude Code +5 - 0.631score
IT Glue
wyre-technology
MCP server for IT Glue — organizations, configurations, passwords, flexible assets, and documents.
ConnectorAFreshness: ALocal★ 17Claude Code +5 - 0.624score
CIPP
wyre-technology
MCP server for CIPP — M365 multi-tenant management for MSPs (users, tenants, policies).
ConnectorAFreshness: ALocal★ 11Claude Code +5 - 0.612score
Action1
wyre-technology
Action1 MCP server — endpoint inventory, patch visibility, and policy automation via REST API.
ConnectorAFreshness: ALocal★ 3Claude Code +5 - 0.611score
Proofpoint
wyre-technology
MCP server for Proofpoint TAP — threat intelligence, forensics, quarantine, and email security.
ConnectorAFreshness: ALocal★ 5Claude Code +5
Cite this page
ConnectWise Manage MCP server. Agent Mart. https://agentmart.dev/connectors/wyre-technology-connectwise-manage-mcp (last updated 2026-10-24)