ConnectWise Sell MCP Server
FastMCP HTTP server wrapping the ConnectWise Sell (Quosal) REST API. 12 tools covering Quotes, Line Items, Tabs, Customers, Terms, Templates, Recurring Revenue, and Tax Codes.
Note: Quotes cannot be created from scratch via the Sell API — new quotes must be copied from an existing quote or template. Use
get_templatesto browse templates, thencopy_quoteto create.
Installation
Via uvx (recommended — no clone, no venv):
uvx connectwise-sell-mcp
Set credentials via environment variables or a .env file in your working directory.
Via pip:
pip install connectwise-sell-mcp
connectwise-sell-mcp
From source:
git clone https://github.com/Mfrostbutter/connectwise-sell-mcp
cd connectwise-sell-mcp
cp .env.example .env
# fill in your SELL_* credentials
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python3 server.py
# verify: curl http://localhost:8086/health
Transport modes
| Mode | How to set | Best for |
|---|---|---|
http (default) |
MCP_TRANSPORT=http |
Persistent server shared across sessions or team members |
stdio |
MCP_TRANSPORT=stdio |
Cursor, VS Code, Zed, Continue, or any stdio-based MCP client |
In stdio mode the server is spawned per-session by the client — no port, no persistent process.
Environment variables
| Variable | Required | Default | Notes |
|---|---|---|---|
SELL_ACCESS_KEY |
Yes | — | Found in the Sell URL parameters when logged in |
SELL_USERNAME |
Yes | — | Sell API username (must be an API user) |
SELL_PASSWORD |
Yes | — | Sell API password |
SELL_BASE_URL |
No | https://sellapi.quosalsell.com |
Override if your instance uses a different host |
MCP_AUTH_TOKEN |
No | — | Bearer token for MCP client auth; omit to run without auth |
SELL_MCP_PORT |
No | 8086 |
HTTP listen port |
How to find your access key
Log into ConnectWise Sell and look at the URL — it will contain a parameter like accessKey=XXXXXXXX. That value is your SELL_ACCESS_KEY.
Authentication
The Sell API uses HTTP Basic auth with a compound credential:
Authorization: basic base64(accessKey+username:password)
The server constructs this automatically from your env vars.
Tools (12)
Quotes (5): list_quotes, get_quote, get_quote_versions, copy_quote, update_quote
Quote detail (4): get_quote_items, get_quote_tabs, get_quote_customers, get_quote_terms
Reference (3): get_templates, get_recurring_revenues, get_tax_codes
Client configuration
HTTP mode — Claude Desktop, Claude Code (server runs persistently):
claude_desktop_config.json / .claude/settings.json:
{
"mcpServers": {
"connectwise-sell": {
"type": "http",
"url": "http://localhost:8086/mcp",
"headers": { "Authorization": "Bearer your_token_here" }
}
}
}
stdio mode — Cursor, VS Code, Zed, Continue, or any stdio client (server spawned per-session):
{
"mcpServers": {
"connectwise-sell": {
"command": "uvx",
"args": ["connectwise-sell-mcp"],
"env": {
"SELL_ACCESS_KEY": "your_access_key",
"SELL_USERNAME": "your_api_username",
"SELL_PASSWORD": "your_password",
"MCP_TRANSPORT": "stdio"
}
}
}
}
Running as a service
[Unit]
Description=ConnectWise Sell MCP
After=network.target
[Service]
User=mcp
WorkingDirectory=/opt/connectwise-sell-mcp
EnvironmentFile=/opt/connectwise-sell-mcp/.env
ExecStart=/opt/connectwise-sell-mcp/venv/bin/python3 server.py
Restart=always
[Install]
WantedBy=multi-user.target
Related
- connectwise-mcp — ConnectWise Manage MCP server (tickets, agreements, companies, time, finance)
License
MIT
Metadata
Release files for connectwise-sell-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| connectwise_sell_mcp-0.1.0.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| connectwise_sell_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.4 kB
Release files / connectwise_sell_mcp-0.1.0.tar.gz
| Download URL | connectwise_sell_mcp-0.1.0.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c44f18b8ae54037848f2cb1bb8cfbce49f51cf7dcf617f5679a0fe403032e143
|
|
BLAKE2b-256 checksum How to use checksums |
b0311f565e7627c152e12c0d60bd6def28fe3e90d76af5c8e6ca55dbd91ccfb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.16.5 cpython/3.13.11 HTTPX/0.28.1
|
Release files / connectwise_sell_mcp-0.1.0-py3-none-any.whl
| Download URL | connectwise_sell_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
12c5c6fb1c8d548cc5853348331e12a53d4a5557553da259f0a4b842dbfee12e
|
|
BLAKE2b-256 checksum How to use checksums |
12de6570170c073b318d24b75582ab2a41bb3d4ee3fb88e7ab61776632148c71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.16.5 cpython/3.13.11 HTTPX/0.28.1
|