ConnectWise API 网关
STDIO用于操作ConnectWise API的综合接口
用于操作ConnectWise API的综合接口
This Model Context Protocol (MCP) server provides a comprehensive interface for interacting with the ConnectWise Manage API. It simplifies API discovery, execution, and management for both developers and AI assistants.
manage.json
) - included in the repositoryYou can install the package directly from GitHub:
npm install -g jasondsmith72/CWM-API-Gateway-MCP
This method automatically handles all dependencies and provides a simpler configuration for Claude Desktop.
Clone or download the repository:
git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git cd CWM-API-Gateway-MCP
Install the package:
pip install -e .
For the NPM installation method, simply run:
npm install -g jasondsmith72/CWM-API-Gateway-MCP
For manual installation:
Install Python 3.10+ if not already installed:
# Using Homebrew brew install [email protected] # Or using pyenv brew install pyenv pyenv install 3.10.0 pyenv global 3.10.0
Clone the repository:
git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git cd CWM-API-Gateway-MCP
Set up a virtual environment (recommended):
python3 -m venv venv source venv/bin/activate
Install the package:
pip install -e .
For the NPM installation method, simply run:
sudo npm install -g jasondsmith72/CWM-API-Gateway-MCP
For manual installation:
Install Python 3.10+ if not already installed:
# For Ubuntu 22.04+ sudo apt update sudo apt install python3.10 python3.10-venv python3.10-dev python3-pip # For older versions of Ubuntu/Debian sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.10 python3.10-venv python3.10-dev python3-pip
Clone the repository:
git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git cd CWM-API-Gateway-MCP
Set up a virtual environment (recommended):
python3.10 -m venv venv source venv/bin/activate
Install the package:
pip install -e .
After installing on any platform (Windows, macOS, or Linux), complete the following steps:
This repository already includes a pre-built database, so this step is optional. Only run this if you need to use a newer ConnectWise API definition file:
# On Windows python build_database.py path/to/manage.json # On macOS/Linux python3 build_database.py path/to/manage.json
This step only needs to be done once, or whenever the ConnectWise API definition changes.
Set the following environment variables with your ConnectWise credentials:
CONNECTWISE_API_URL=https://na.myconnectwise.net/v4_6_release/apis/3.0
CONNECTWISE_COMPANY_ID=your_company_id
CONNECTWISE_PUBLIC_KEY=your_public_key
CONNECTWISE_PRIVATE_KEY=your_private_key
CONNECTWISE_AUTH_PREFIX=yourprefix+ # Prefix required by ConnectWise for API authentication
These credentials are used in the authentication process as follows:
CONNECTWISE_API_URL: The base URL for all API requests to your ConnectWise instance
url = f"{API_URL}{endpoint}" # e.g., https://na.myconnectwise.net/v4_6_release/apis/3.0/service/tickets
CONNECTWISE_COMPANY_ID: Included in the 'clientId' header of each request to identify your company
headers = {'clientId': COMPANY_ID, ...}
CONNECTWISE_PUBLIC_KEY and CONNECTWISE_PRIVATE_KEY: Used together with AUTH_PREFIX to create the basic authentication credentials
username = f"{AUTH_PREFIX}{PUBLIC_KEY}" # e.g., "yourprefix+your_public_key"
password = PRIVATE_KEY
credentials = f"{username}:{password}" # Combined into "yourprefix+your_public_key:your_private_key"
CONNECTWISE_AUTH_PREFIX: Required prefix added before your public key in the authentication username. ConnectWise API requires this prefix to identify the type of integration (e.g., "api+", "integration+", etc.)
The final HTTP headers sent with every request will look like:
'Authorization': 'Basic [base64 encoded credentials]'
'clientId': 'your_company_id'
'Content-Type': 'application/json'
There are two methods to integrate with Claude Desktop:
Install the package using NPM:
npm install -g jasondsmith72/CWM-API-Gateway-MCP
Then configure Claude Desktop (claude_desktop_config.json
):
{ "mcpServers": { "CWM-API-Gateway-MCP": { "command": "npx", "args": [ "-y", "@jasondsmith72/CWM-API-Gateway-MCP" ], "env": { "CONNECTWISE_API_URL": "https://na.myconnectwise.net/v4_6_release/apis/3.0", "CONNECTWISE_COMPANY_ID": "your_company_id", "CONNECTWISE_PUBLIC_KEY": "your_public_key", "CONNECTWISE_PRIVATE_KEY": "your_private_key", "CONNECTWISE_AUTH_PREFIX": "yourprefix+" } } } }
If you've cloned the repository and installed the dependencies, you can use the included Node.js script:
{ "mcpServers": { "CWM-API-Gateway-MCP": { "command": "node", "args": ["C:/path/to/CWM-API-Gateway-MCP/bin/server.js"], "env": { "CONNECTWISE_API_URL": "https://na.myconnectwise.net/v4_6_release/apis/3.0", "CONNECTWISE_COMPANY_ID": "your_company_id", "CONNECTWISE_PUBLIC_KEY": "your_public_key", "CONNECTWISE_PRIVATE_KEY": "your_private_key", "CONNECTWISE_AUTH_PREFIX": "yourprefix+" } } } }
If you prefer to use the Python script directly:
{ "mcpServers": { "CWM-API-Gateway-MCP": { "command": "python", "args": ["C:/path/to/CWM-API-Gateway-MCP/api_gateway_server.py"], "env": { "CONNECTWISE_API_URL": "https://na.myconnectwise.net/v4_6_release/apis/3.0", "CONNECTWISE_COMPANY_ID": "your_company_id", "CONNECTWISE_PUBLIC_KEY": "your_public_key", "CONNECTWISE_PRIVATE_KEY": "your_private_key", "CONNECTWISE_AUTH_PREFIX": "yourprefix+" } } } }
For macOS and Linux, use the appropriate path format:
{ "mcpServers": { "CWM-API-Gateway-MCP": { "command": "python3", "args": ["/path/to/CWM-API-Gateway-MCP/api_gateway_server.py"], "env": { "CONNECTWISE_API_URL": "https://na.myconnectwise.net/v4_6_release/apis/3.0", "CONNECTWISE_COMPANY_ID": "your_company_id", "CONNECTWISE_PUBLIC_KEY": "your_public_key", "CONNECTWISE_PRIVATE_KEY": "your_private_key", "CONNECTWISE_AUTH_PREFIX": "yourprefix+" } } } }
The server can be run directly from the command line for testing:
# If installed via NPM cwm-api-gateway-mcp # If using the Node.js script (after cloning the repository) node bin/server.js # Or using the Python script directly # On Windows python api_gateway_server.py # On macOS/Linux python3 api_gateway_server.py
The API Gateway MCP server provides several tools for working with the ConnectWise API:
Tool | Description |
---|---|
search_api_endpoints | Search for API endpoints by query string |
natural_language_api_search | Find endpoints using natural language descriptions |
list_api_categories | List all available API categories |
get_category_endpoints | List all endpoints in a specific category |
get_api_endpoint_details | Get detailed information about a specific endpoint |
Tool | Description |
---|---|
execute_api_call | Execute an API call with path, method, parameters, and data |
send_raw_api_request | Send a raw API request in the format "METHOD /path [JSON body]" |
Tool | Description |
---|---|
save_to_fast_memory | Manually save an API query to Fast Memory |
list_fast_memory | List all queries saved in Fast Memory |
delete_from_fast_memory | Delete a specific query from Fast Memory |
clear_fast_memory | Clear all queries from Fast Memory |
search_api_endpoints("tickets")
natural_language_api_search("find all open service tickets that are high priority")
execute_api_call( "/service/tickets", "GET", {"conditions": "status/name='Open' and priority/name='High'"} )
execute_api_call( "/service/tickets", "POST", None, # No query parameters { "summary": "Server is down", "board": {"id": 1}, "company": {"id": 2}, "status": {"id": 1}, "priority": {"id": 3} } )
send_raw_api_request("GET /service/tickets?conditions=status/name='Open'")
list_fast_memory()
save_to_fast_memory( "/service/tickets", "GET", "Get all high priority open tickets", {"conditions": "status/name='Open' and priority/name='High'"} )
The Fast Memory feature allows you to save and retrieve frequently used API queries, optimizing your workflow in several ways:
list_fast_memory()
list_fast_memory("search term")
delete_from_fast_memory(query_id)
clear_fast_memory()
The Fast Memory system is powered by a SQLite database (fast_memory_api.db
) that stores:
The database structure includes:
id
: Unique identifier for each saved querydescription
: User-provided description of what the query doespath
: API endpoint pathmethod
: HTTP method (GET, POST, PUT, etc.)params
: Query parameters in JSON formatdata
: Request body in JSON formattimestamp
: When the query was last usedusage_count
: How many times the query has been usedError: Database file not found at [path]
Please run build_database.py script first to generate the database
Solution: Run the build_database.py
script with the path to your ConnectWise API definition file:
python build_database.py path/to/manage.json
HTTP error 401: Unauthorized
Solution: Check your environment variables to ensure all ConnectWise credentials are correct:
CONNECTWISE_COMPANY_ID
, CONNECTWISE_PUBLIC_KEY
, and CONNECTWISE_PRIVATE_KEY
CONNECTWISE_AUTH_PREFIX
is set correctly for your environmentRequest timed out. ConnectWise API may be slow to respond.
Solution:
api_gateway/api_gateway.log
api_gateway/connectwise_api.db
api_gateway/fast_memory_api.db
Verify that the database is correctly built and accessible:
python test_database.py
This will display statistics about the database and confirm it can be queried properly.
For better performance with the ConnectWise API:
Use Specific Conditions: Narrow your queries with precise conditions
execute_api_call("/service/tickets", "GET", { "conditions": "status/name='Open' AND dateEntered > [2023-01-01T00:00:00Z]" })
Limit Field Selection: Request only the fields you need
execute_api_call("/service/tickets", "GET", { "conditions": "status/name='Open'", "fields": "id,summary,status,priority" })
Paginate Large Results: Use page and pageSize parameters
execute_api_call("/service/tickets", "GET", { "conditions": "status/name='Open'", "page": 1, "pageSize": 50 })
This software is proprietary and confidential. Unauthorized copying, distribution, or use is prohibited.