Cwm Api Gateway Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Cwm Api Gateway Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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 repository#### Option 1: Using GitHub NPM Package (Recommended)
You can install the package directly from GitHub:
npm install -g jasondsmith72/CWM-API-Gateway-MCPThis method automatically handles all dependencies and provides a simpler configuration for Claude Desktop.
#### Option 2: Manual Installation
##### Windows
git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git
cd CWM-API-Gateway-MCP pip install -e .#### macOS
For the NPM installation method, simply run:
npm install -g jasondsmith72/CWM-API-Gateway-MCPFor manual installation:
# Using Homebrew
brew install [email protected]
# Or using pyenv
brew install pyenv
pyenv install 3.10.0
pyenv global 3.10.0 git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git
cd CWM-API-Gateway-MCP python3 -m venv venv
source venv/bin/activate pip install -e .#### Linux (Ubuntu/Debian)
For the NPM installation method, simply run:
sudo npm install -g jasondsmith72/CWM-API-Gateway-MCPFor manual installation:
# 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 git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git
cd CWM-API-Gateway-MCP python3.10 -m venv venv
source venv/bin/activate pip install -e .After installing on any platform (Windows, macOS, or Linux), complete the following steps:
#### 1. (Optional) Build the API Database
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.jsonThis step only needs to be done once, or whenever the ConnectWise API definition changes.
#### 2. Configure API Credentials
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 authenticationThese credentials are used in the authentication process as follows:
url = f"{API_URL}{endpoint}" # e.g., https://na.myconnectwise.net/v4_6_release/apis/3.0/service/tickets headers = {'clientId': COMPANY_ID, ...} 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"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-MCPThen 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.pyThe 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 used#### Database Not Found Error
Error: Database file not found at [path]
Please run build_database.py script first to generate the databaseSolution: Run the build_database.py script with the path to your ConnectWise API definition file:
python build_database.py path/to/manage.json#### API Authentication Issues
HTTP error 401: UnauthorizedSolution: Check your environment variables to ensure all ConnectWise credentials are correct:
CONNECTWISE_COMPANY_ID, CONNECTWISE_PUBLIC_KEY, and CONNECTWISE_PRIVATE_KEYCONNECTWISE_AUTH_PREFIX is set correctly for your environment#### Timeouts on API Calls
Request timed out. ConnectWise API may be slow to respond.Solution:
#### Log Locations
api_gateway/api_gateway.logapi_gateway/connectwise_api.dbapi_gateway/fast_memory_api.db#### Testing the Database
Verify that the database is correctly built and accessible:
python test_database.pyThis will display statistics about the database and confirm it can be queried properly.
For better performance with the ConnectWise API:
execute_api_call("/service/tickets", "GET", {
"conditions": "status/name='Open' AND dateEntered > [2023-01-01T00:00:00Z]"
}) execute_api_call("/service/tickets", "GET", {
"conditions": "status/name='Open'",
"fields": "id,summary,status,priority"
}) 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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.