此 Model Context Protocol (MCP) 服务器提供了一个全面的接口,用于与 ConnectWise Manage API 进行交互。它简化了 API 发现、执行和管理,适用于开发者和 AI 助手。
manage.json) - 包含在仓库中您可以直接从 GitHub 安装该包:
npm install -g jasondsmith72/CWM-API-Gateway-MCP
此方法自动处理所有依赖项,并为 Claude Desktop 提供更简单的配置。
克隆或下载仓库:
git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git
cd CWM-API-Gateway-MCP
安装包:
pip install -e .
对于 NPM 安装方法,只需运行:
npm install -g jasondsmith72/CWM-API-Gateway-MCP
对于手动安装:
安装 Python 3.10+(如果尚未安装):
# 使用 Homebrew
brew install python@3.10
# 或者使用 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 .
对于 NPM 安装方法,只需运行:
sudo npm install -g jasondsmith72/CWM-API-Gateway-MCP
对于手动安装:
安装 Python 3.10+(如果尚未安装):
# 对于 Ubuntu 22.04+
sudo apt update
sudo apt install python3.10 python3.10-venv python3.10-dev python3-pip
# 对于较旧版本的 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 .
在任何平台(Windows、macOS 或 Linux)上安装后,完成以下步骤:
此仓库已经包含一个预构建的数据库,因此这一步是可选的。仅当您需要使用更新的 ConnectWise API 定义文件时才运行此步骤:
# 在 Windows 上
python build_database.py path/to/manage.json
# 在 macOS/Linux 上
python3 build_database.py path/to/manage.json
此步骤只需执行一次,或者在 ConnectWise API 定义发生变化时执行。
使用您的 ConnectWise 凭证设置以下环境变量:
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+ # ConnectWise API 身份验证所需的前缀
这些凭证在身份验证过程中按如下方式使用:
CONNECTWISE_API_URL: 所有 API 请求的基本 URL
url = f"{API_URL}{endpoint}" # 例如,https://na.myconnectwise.net/v4_6_release/apis/3.0/service/tickets
CONNECTWISE_COMPANY_ID: 每个请求的 'clientId' 头中包含,用于标识您的公司
headers = {'clientId': COMPANY_ID, ...}
CONNECTWISE_PUBLIC_KEY 和 CONNECTWISE_PRIVATE_KEY: 与 AUTH_PREFIX 一起用于创建基本身份验证凭据
username = f"{AUTH_PREFIX}{PUBLIC_KEY}" # 例如,"yourprefix+your_public_key"
password = PRIVATE_KEY
credentials = f"{username}:{password}" # 合并为 "yourprefix+your_public_key:your_private_key"
CONNECTWISE_AUTH_PREFIX: 必须添加到身份验证用户名前的前缀。ConnectWise API 需要此前缀来识别集成类型(例如,"api+"、"integration+" 等)
发送的最终 HTTP 头如下所示:
'Authorization': 'Basic [base64 编码的凭据]'
'clientId': 'your_company_id'
'Content-Type': 'application/json'
有两种方法可以与 Claude Desktop 集成:
使用 NPM 安装包:
npm install -g jasondsmith72/CWM-API-Gateway-MCP
然后配置 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+"
}
}
}
}
如果您已克隆仓库并安装了依赖项,可以使用包含的 Node.js 脚本:
{
"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+"
}
}
}
}
如果您更喜欢直接使用 Python 脚本:
{
"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+"
}
}
}
}
对于 macOS 和 Linux,使用适当的路径格式:
{
"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+"
}
}
}
}
可以直接从命令行运行服务器以进行测试:
# 如果通过 NPM 安装
cwm-api-gateway-mcp
# 如果使用 Node.js 脚本(克隆仓库后)
node bin/server.js
# 或者直接使用 Python 脚本
# 在 Windows 上
python api_gateway_server.py
# 在 macOS/Linux 上
python3 api_gateway_server.py
API Gateway MCP 服务器提供了多个工具,用于处理 ConnectWise API:
| 工具 | 描述 |
|---|---|
search_api_endpoints | 通过查询字符串搜索 API 端点 |
natural_language_api_search | 使用自然语言描述查找端点 |
list_api_categories | 列出所有可用的 API 类别 |
get_category_endpoints | 列出特定类别中的所有端点 |
get_api_endpoint_details | 获取特定端点的详细信息 |
| 工具 | 描述 |
|---|---|
execute_api_call | 执行带有路径、方法、参数和数据的 API 调用 |
send_raw_api_request | 发送格式为 "METHOD /path [JSON body]" 的原始 API 请求 |
| 工具 | 描述 |
|---|---|
save_to_fast_memory | 手动将 API 查询保存到快速内存 |
list_fast_memory | 列出快速内存中保存的所有查询 |
delete_from_fast_memory | 从快速内存中删除特定查询 |
clear_fast_memory | 清除快速内存中的所有查询 |
search_api_endpoints("tickets")
natural_language_api_search("查找所有高优先级的开放服务工单")
execute_api_call(
"/service/tickets",
"GET",
{"conditions": "status/name='Open' and priority/name='High'"}
)
execute_api_call(
"/service/tickets",
"POST",
None, # 无查询参数
{
"summary": "服务器宕机",
"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",
"获取所有高优先级的开放工单",
{"conditions": "status/name='Open' and priority/name='High'"}
)
快速内存功能允许您保存和检索常用的 API 查询,从而在多个方面优化您的工作流程:
list_fast_memory()list_fast_memory("搜索词")delete_from_fast_memory(query_id)clear_fast_memory()快速内存系统由 SQLite 数据库 (fast_memory_api.db) 支持,该数据库存储:
数据库结构包括:
id: 每个已保存查询的唯一标识符description: 用户提供的描述,说明查询的作用path: API 端点路径method: HTTP 方法(GET、POST、PUT 等)params: 查询参数的 JSON 格式data: 请求体的 JSON 格式timestamp: 最后一次使用查询的时间usage_count: 查询的使用次数错误:数据库文件未找到 [路径]
请先运行 build_database.py 脚本来生成数据库
解决方案: 使用 ConnectWise API 定义文件的路径运行 build_database.py 脚本:
python build_database.py path/to/manage.json
HTTP 错误 401: 未经授权
解决方案: 检查您的环境变量,确保所有 ConnectWise 凭证正确:
CONNECTWISE_COMPANY_ID、CONNECTWISE_PUBLIC_KEY 和 CONNECTWISE_PRIVATE_KEYCONNECTWISE_AUTH_PREFIX 是否正确设置请求超时。ConnectWise API 可能响应缓慢。
解决方案:
api_gateway/api_gateway.logapi_gateway/connectwise_api.dbapi_gateway/fast_memory_api.db验证数据库是否正确构建且可访问:
python test_database.py
这将显示有关数据库的统计信息,并确认其可以正常查询。
为了更好地使用 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"
})
分页大结果集: 使用 page 和 pageSize 参数
execute_api_call("/service/tickets", "GET", {
"conditions": "status/name='Open'",
"page": 1,
"pageSize": 50
})
本软件为专有且保密。未经授权的复制、分发或使用是禁止的。