ConnectWise API Gateway MCP Server

by jasondsmith72
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Offers Node.js integration methods for running the MCP server, with specific configuration options and an NPM package installation path for easier deployment.

  • Provides an NPM package installation method for easy setup and configuration of the ConnectWise API Gateway MCP Server.

  • Supports direct Python script execution for running the MCP server, with detailed configuration instructions for Windows, macOS, and Linux environments.

Servidor MCP de la puerta de enlace API de ConnectWise

Este servidor de Protocolo de Contexto de Modelo (MCP) proporciona una interfaz completa para interactuar con la API de ConnectWise Manage. Simplifica el descubrimiento, la ejecución y la gestión de la API tanto para desarrolladores como para asistentes de IA.

Capacidades principales

  • Descubrimiento de API: busque y explore puntos finales de API de ConnectWise utilizando palabras clave o lenguaje natural
  • Ejecución de API simplificada: ejecute llamadas API con un manejo sencillo de parámetros y gestión automática de errores.
  • Sistema de memoria rápida: guarde y recupere consultas API utilizadas con frecuencia para flujos de trabajo más eficientes
  • Acceso a API sin procesar: envíe solicitudes de API personalizadas con control total sobre puntos finales, métodos y parámetros

Características principales

  • Descubrimiento de API respaldado por base de datos: utiliza una base de datos SQLite creada a partir del JSON de definición de API de ConnectWise para búsquedas de puntos finales rápidas y eficientes
  • Búsqueda en lenguaje natural: encuentre puntos finales de API relevantes utilizando descripciones conversacionales de lo que necesita
  • Navegación de API categorizada: explore los puntos finales de API organizados por categorías funcionales
  • Acceso a documentación detallada: vea información completa sobre los puntos finales de la API, incluidos parámetros, esquemas y formatos de respuesta
  • Aprendizaje adaptativo: el sistema aprende qué llamadas API son más valiosas para usted a través del seguimiento del uso.

Instalación y configuración

Prerrequisitos

  • Python 3.10 o superior
  • Acceso a las credenciales de la API de ConnectWise Manage
  • Archivo de definición de API de ConnectWise ( manage.json ): incluido en el repositorio

Pasos de instalación

Opción 1: Usar el paquete NPM de GitHub (recomendado)

Puedes instalar el paquete directamente desde GitHub:

npm install -g jasondsmith72/CWM-API-Gateway-MCP

Este método maneja automáticamente todas las dependencias y proporciona una configuración más simple para Claude Desktop.

Opción 2: Instalación manual

Ventanas
  1. Clonar o descargar el repositorio:
    git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git cd CWM-API-Gateway-MCP
  2. Instalar el paquete:
    pip install -e .

macOS

Para el método de instalación NPM, simplemente ejecute:

npm install -g jasondsmith72/CWM-API-Gateway-MCP

Para la instalación manual:

  1. Instale Python 3.10+ si aún no está instalado:
    # Using Homebrew brew install python@3.10 # Or using pyenv brew install pyenv pyenv install 3.10.0 pyenv global 3.10.0
  2. Clonar el repositorio:
    git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git cd CWM-API-Gateway-MCP
  3. Configurar un entorno virtual (recomendado):
    python3 -m venv venv source venv/bin/activate
  4. Instalar el paquete:
    pip install -e .

Linux (Ubuntu/Debian)

Para el método de instalación NPM, simplemente ejecute:

sudo npm install -g jasondsmith72/CWM-API-Gateway-MCP

Para la instalación manual:

  1. Instale Python 3.10+ si aún no está instalado:
    # 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
  2. Clonar el repositorio:
    git clone https://github.com/jasondsmith72/CWM-API-Gateway-MCP.git cd CWM-API-Gateway-MCP
  3. Configurar un entorno virtual (recomendado):
    python3.10 -m venv venv source venv/bin/activate
  4. Instalar el paquete:
    pip install -e .

Pasos posteriores a la instalación

Después de instalarlo en cualquier plataforma (Windows, macOS o Linux), complete los siguientes pasos:

1. (Opcional) Construir la base de datos API

Este repositorio ya incluye una base de datos predefinida, por lo que este paso es opcional. Ejecútelo solo si necesita usar un archivo de definición de la API de ConnectWise más reciente:

# On Windows python build_database.py path/to/manage.json # On macOS/Linux python3 build_database.py path/to/manage.json

Este paso solo debe realizarse una vez o cada vez que cambie la definición de la API de ConnectWise.

2. Configurar las credenciales de API

Configure las siguientes variables de entorno con sus credenciales de 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+ # Prefix required by ConnectWise for API authentication

Estas credenciales se utilizan en el proceso de autenticación de la siguiente manera:

  • CONNECTWISE_API_URL : La URL base para todas las solicitudes de API a su instancia de ConnectWise
    url = f"{API_URL}{endpoint}" # e.g., https://na.myconnectwise.net/v4_6_release/apis/3.0/service/tickets
  • CONNECTWISE_COMPANY_ID : Se incluye en el encabezado 'clientId' de cada solicitud para identificar su empresa
    headers = {'clientId': COMPANY_ID, ...}
  • CONNECTWISE_PUBLIC_KEY y CONNECTWISE_PRIVATE_KEY : se utilizan junto con AUTH_PREFIX para crear las credenciales de autenticación básicas
    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 : Prefijo obligatorio que se añade antes de la clave pública en el nombre de usuario de autenticación. La API de ConnectWise requiere este prefijo para identificar el tipo de integración (p. ej., "api+", "integration+", etc.).

Los encabezados HTTP finales enviados con cada solicitud se verán así:

'Authorization': 'Basic [base64 encoded credentials]' 'clientId': 'your_company_id' 'Content-Type': 'application/json'

Configuración para Claude Desktop

Hay dos métodos para integrarse con Claude Desktop:

Método 1: Uso del paquete NPM (recomendado)

Instalar el paquete usando NPM:

npm install -g jasondsmith72/CWM-API-Gateway-MCP

Luego 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+" } } } }

Método 2: Usar un script de Node.js (método alternativo)

Si ha clonado el repositorio e instalado las dependencias, puede utilizar el script Node.js incluido:

{ "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+" } } } }

Método 3: Usar la ruta de script de Python directa

Si prefieres usar el script de Python directamente:

{ "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+" } } } }

Para macOS y Linux, utilice el formato de ruta apropiado:

{ "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+" } } } }

El servidor se puede ejecutar directamente desde la línea de comandos para realizar pruebas:

# 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

Herramientas disponibles

El servidor MCP de API Gateway proporciona varias herramientas para trabajar con la API de ConnectWise:

Herramientas de descubrimiento de API

HerramientaDescripción
search_api_endpointsBúsqueda de puntos finales de API por cadena de consulta
natural_language_api_searchEncuentre puntos finales utilizando descripciones en lenguaje natural
list_api_categoriesEnumere todas las categorías de API disponibles
get_category_endpointsEnumere todos los puntos finales en una categoría específica
get_api_endpoint_detailsObtenga información detallada sobre un punto final específico

Herramientas de ejecución de API

HerramientaDescripción
execute_api_callEjecutar una llamada API con ruta, método, parámetros y datos
send_raw_api_requestEnvíe una solicitud de API sin procesar en el formato "METHOD/path [JSON body]"

Herramientas de memoria rápida

HerramientaDescripción
save_to_fast_memoryGuardar manualmente una consulta API en memoria rápida
list_fast_memoryListar todas las consultas guardadas en la memoria rápida
delete_from_fast_memoryEliminar una consulta específica de Memoria rápida
clear_fast_memoryBorrar todas las consultas de Memoria rápida

Ejemplos de uso

Búsqueda de puntos finales relacionados con tickets

search_api_endpoints("tickets")

Búsqueda mediante lenguaje natural

natural_language_api_search("find all open service tickets that are high priority")

Ejecutar una solicitud GET

execute_api_call( "/service/tickets", "GET", {"conditions": "status/name='Open' and priority/name='High'"} )

Crear un nuevo ticket de servicio

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} } )

Enviar una solicitud de API sin procesar

send_raw_api_request("GET /service/tickets?conditions=status/name='Open'")

Ver contenido de Fast Memory

list_fast_memory()

Guardar una consulta útil en la memoria rápida

save_to_fast_memory( "/service/tickets", "GET", "Get all high priority open tickets", {"conditions": "status/name='Open' and priority/name='High'"} )

Entendiendo la memoria rápida

La función Memoria rápida le permite guardar y recuperar consultas API utilizadas con frecuencia, optimizando su flujo de trabajo de varias maneras:

Beneficios

  • Ahorro de tiempo: ejecute rápidamente llamadas API complejas sin recordar puntos finales ni parámetros exactos
  • Reducción de errores: reutilice las llamadas API exitosas para minimizar posibles errores
  • Aprendizaje adaptativo: el sistema aprende qué llamadas API son más valiosas para usted
  • Persistencia de parámetros: los parámetros y los cuerpos de las solicitudes se almacenan para uso futuro.

Cómo funciona

  1. Aprendizaje automático: cuando ejecuta una llamada API exitosa, se le solicita que la guarde en la memoria rápida
  2. Recuperación inteligente: la próxima vez que utilice el mismo punto final de API, el sistema verificará primero la memoria rápida
  3. Reutilización de parámetros: si no proporciona parámetros para una llamada, el sistema utiliza automáticamente los guardados en la memoria rápida
  4. Seguimiento de uso: el sistema rastrea la frecuencia con la que se utiliza cada consulta y prioriza las consultas utilizadas con frecuencia.

Funcionalidad de memoria rápida

  • Sugerencia automática de parámetros: el sistema sugerirá parámetros de la memoria rápida si no se proporciona ninguno
  • Contador de uso: cada vez que se utiliza una consulta de Memoria rápida, su recuento de uso aumenta
  • Capacidad de búsqueda: Busque en sus consultas guardadas por descripción o ruta del punto final
  • Priorización: las consultas se muestran en orden de frecuencia de uso, con las consultas más utilizadas en la parte superior.

Cómo gestionar tu memoria rápida

  • Ver consultas guardadas: list_fast_memory()
  • Consultas específicas de búsqueda: list_fast_memory("search term")
  • Eliminar una consulta: delete_from_fast_memory(query_id)
  • Borrar todas las consultas: clear_fast_memory()

Detalles técnicos de la memoria rápida

El sistema Fast Memory está alimentado por una base de datos SQLite ( fast_memory_api.db ) que almacena:

  • Rutas y métodos de consulta
  • Parámetros y cuerpos de solicitud como JSON
  • Métricas de uso y marcas de tiempo
  • Descripciones fáciles de usar

La estructura de la base de datos incluye:

  • id : Identificador único para cada consulta guardada
  • description : Descripción proporcionada por el usuario de lo que hace la consulta
  • path : ruta del punto final de la API
  • method : método HTTP (GET, POST, PUT, etc.)
  • params : Parámetros de consulta en formato JSON
  • data : Cuerpo de la solicitud en formato JSON
  • timestamp : cuándo se utilizó la consulta por última vez
  • usage_count : Cuántas veces se ha utilizado la consulta

Solución de problemas

Problemas comunes

Error de base de datos no encontrada

Error: Database file not found at [path] Please run build_database.py script first to generate the database

Solución: ejecute el script build_database.py con la ruta a su archivo de definición de API de ConnectWise:

python build_database.py path/to/manage.json

Problemas de autenticación de API

HTTP error 401: Unauthorized

Solución: Verifique sus variables de entorno para asegurarse de que todas las credenciales de ConnectWise sean correctas:

  • Verifique su CONNECTWISE_COMPANY_ID , CONNECTWISE_PUBLIC_KEY y CONNECTWISE_PRIVATE_KEY
  • Asegúrese de que la clave API tenga los permisos necesarios en ConnectWise
  • Compruebe que CONNECTWISE_AUTH_PREFIX esté configurado correctamente para su entorno

Tiempos de espera en las llamadas API

Request timed out. ConnectWise API may be slow to respond.

Solución:

  • Comprueba tu conexión a Internet
  • La API de ConnectWise puede estar experimentando una carga alta
  • Para solicitudes de datos grandes, considere agregar filtros más específicos a su consulta

Registros y diagnósticos

Ubicaciones de registros

  • Archivo de registro principal: api_gateway/api_gateway.log
  • Bases de datos SQLite:
    • Base de datos API: api_gateway/connectwise_api.db
    • Base de datos de memoria rápida: api_gateway/fast_memory_api.db

Prueba de la base de datos

Verifique que la base de datos esté correctamente construida y sea accesible:

python test_database.py

Esto mostrará estadísticas sobre la base de datos y confirmará que se puede consultar correctamente.

Uso avanzado

Optimización de consultas API

Para un mejor rendimiento con la API ConnectWise:

  1. Utilice condiciones específicas: refine sus consultas con condiciones precisas
    execute_api_call("/service/tickets", "GET", { "conditions": "status/name='Open' AND dateEntered > [2023-01-01T00:00:00Z]" })
  2. Limitar la selección de campos: solicita solo los campos que necesitas
    execute_api_call("/service/tickets", "GET", { "conditions": "status/name='Open'", "fields": "id,summary,status,priority" })
  3. Paginar resultados grandes: utilizar los parámetros page y pageSize
    execute_api_call("/service/tickets", "GET", { "conditions": "status/name='Open'", "page": 1, "pageSize": 50 })

Licencia

Este software es propietario y confidencial. Queda prohibida su copia, distribución y uso no autorizados.

Expresiones de gratitud

  • Construido utilizando el marco del Protocolo de Contexto de Modelo (MCP)
  • Desarrollado por ConnectWise Manage API
ID: gmscind777