Cisco Support MCP Server
Accede a las APIs de Soporte de Cisco para búsquedas de errores y otras tareas relacionadas con el soporte.
Documentación
Servidor MCP de Soporte Cisco
Un servidor MCP (Protocolo de Contexto de Modelo) TypeScript listo para producción para las APIs de Soporte Cisco, con seguridad integral y soporte de transporte dual. Este servidor extensible proporciona acceso a múltiples APIs de Soporte Cisco, incluyendo Búsqueda de Errores, Gestión de Casos e información de Fin de Vida.
🚀 Características Actuales
- Soporte Multi-API: 8 APIs de Soporte Cisco completamente implementadas (46 herramientas en total)
- Servidor OAuth 2.1: ✨ Autenticación de grado de producción con control de acceso basado en alcances detallados
- Soporte de Solicitud de Elucidación: Interacción dinámica con el usuario para recopilar parámetros faltantes
- Modos de Autenticación Triple: stdio (sin autenticación), token Bearer (simple), OAuth 2.1 (producción)
- Acceso a API Configurable: Habilite solo las APIs de Soporte Cisco a las que tenga acceso
- Indicaciones Especializadas: 9 indicaciones de flujo de trabajo para escenarios guiados de soporte Cisco
- Transporte Dual: stdio (clientes MCP locales) y HTTP (servidor remoto con autenticación)
- Autenticación OAuth2: Gestión automática de tokens con la API de Cisco
- Actualizaciones en Tiempo Real: Eventos enviados por el servidor para el modo HTTP
- TypeScript: Seguridad de tipos completa e integración con el SDK de MCP
- Seguridad de Producción: Helmet, CORS, validación de entrada, PKCE, validación de alcance
- Soporte Docker: Implementación contenerizada con montajes de volumen de configuración OAuth
- Registro Integral: Registro estructurado con marcas de tiempo
📊 APIs de Cisco Compatibles
El servidor admite las siguientes APIs de Soporte Cisco (configurables mediante la variable de entorno SUPPORT_API):
| API | Estado | Herramientas | Descripción |
|---|---|---|---|
Análisis Mejorado (enhanced_analysis) | ⭐ RECOMENDADO | 6 herramientas | Herramientas de análisis avanzado para una evaluación integral del producto |
Errores (bug) | ✅ Completo | 14 herramientas | Búsqueda de errores, detalles, búsquedas específicas por producto + herramientas mejoradas |
Casos (case) | ✅ Completo | 4 herramientas | Gestión y operaciones de casos de soporte |
EoX (eox) | ✅ Completo | 4 herramientas | Información de Fin de Vida/Venta y planificación del ciclo de vida |
PSIRT (psirt) | ✅ Completo | 8 herramientas | Datos de vulnerabilidades del Equipo de Respuesta a Incidentes de Seguridad de Productos |
Producto (product) | ✅ Completo | 3 herramientas | Detalles del producto, especificaciones e información técnica |
Software (software) | ✅ Completo | 6 herramientas | Sugerencias de software, versiones y recomendaciones de actualización |
Serial (serial) | ✅ Completo | 3 herramientas | Número de serie para cobertura, garantía e información del producto |
RMA (rma) | ✅ Completo | 3 herramientas | Seguimiento y gestión de Autorización de Devolución de Mercancía |
Smart Bonding (smart_bonding) | ⚠️ EXPERIMENTAL | 8 herramientas | Gestión completa del ciclo de vida de tickets y códigos TSP (NO PROBADO - requiere credenciales especiales) |
Estado de Implementación: 8/8 APIs principales completas (100%) con 46 herramientas en total + 1 API experimental (8 herramientas)
Ejemplos de Configuración:
SUPPORT_API=enhanced_analysis- Solo herramientas de análisis mejorado (6 herramientas) ← RECOMENDADO para la mayoría de los usuariosSUPPORT_API=bug- Todas las herramientas de la API de Errores, incluido el análisis mejorado (14 herramientas)SUPPORT_API=bug,case,eox,psirt- APIs de soporte principales (28 herramientas)SUPPORT_API=bug,case,eox,psirt,product,software- Todas las APIs implementadas (39 herramientas)SUPPORT_API=all- Todas las APIs disponibles (incluye 2 APIs de marcador de posición)
Inicio Rápido
Instalación NPX (Recomendada)
Inicie en modo stdio para Claude Desktop:
npx mcp-cisco-support
Inicie el servidor HTTP con autenticación:
npx mcp-cisco-support --http
# Token displayed in console for authentication
Genere un token Bearer para el modo HTTP:
npx mcp-cisco-support --generate-token
Obtenga ayuda y vea todas las opciones:
npx mcp-cisco-support --help
Configuración del Entorno
-
Genere el token de autenticación (para el modo HTTP):
npx mcp-cisco-support --generate-token export MCP_BEARER_TOKEN=<generated_token> -
Establezca las credenciales de la API de Cisco:
export CISCO_CLIENT_ID=your_client_id_here export CISCO_CLIENT_SECRET=your_client_secret_here export SUPPORT_API=bug,case,eox,psirt,product,software # All implemented APIs (recommended) -
Inicie el servidor:
# For Claude Desktop (stdio mode) npx mcp-cisco-support # For HTTP access (with authentication) npx mcp-cisco-support --http
Desarrollo Local
git clone https://github.com/sieteunoseis/mcp-cisco-support.git
cd mcp-cisco-support
npm install
npm run build
npm start
Integración con Claude Desktop
Requisitos Previos
-
Obtenga las Credenciales de la API de Cisco:
- Visite la Consola de API de Cisco
- Cree una aplicación y obtenga su ID de Cliente y Secreto
- Asegúrese de que la aplicación tenga acceso a la API de Errores
-
Instale Claude Desktop:
- Descárguelo desde Claude.ai
- Asegúrese de estar usando una versión reciente que admita MCP
Configuración Paso a Paso
-
Localice el Archivo de Configuración de Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Cree o Edite el Archivo de Configuración:
{ "mcpServers": { "cisco-support": { "command": "npx", "args": ["-y", "mcp-cisco-support"], "env": { "CISCO_CLIENT_ID": "your_client_id_here", "CISCO_CLIENT_SECRET": "your_client_secret_here", "SUPPORT_API": "bug,product" } } } }Nota: El indicador
-yacepta automáticamente la instalación del paquete, lo cual es necesario para Claude Desktop, ya que se ejecuta en segundo plano sin interacción del usuario.Variables de Entorno Opcionales:
Configure qué APIs habilitar con
SUPPORT_API:"enhanced_analysis"- Solo herramientas de análisis mejorado (recomendado para la mayoría de los usuarios)"bug"- Solo la API de Errores (predeterminado)"bug,product"- APIs de Errores + Producto (habilita el autocompletado de productos)"all"- Todas las APIs disponibles"bug,case,eox"- Múltiples APIs específicas
Autocompletado de Productos (opcional, requiere que
SUPPORT_APIincluyaproduct):"env": { "CISCO_CLIENT_ID": "your_client_id_here", "CISCO_CLIENT_SECRET": "your_client_secret_here", "SUPPORT_API": "bug,product", "CISCO_WEB_COOKIE": "JSESSIONID=...; OptanonConsent=..." }Consulte la sección Autocompletado de Productos para obtener instrucciones de configuración.
-
Reemplace Sus Credenciales:
- Reemplace
your_client_id_herecon su ID de Cliente de Cisco real - Reemplace
your_client_secret_herecon su Secreto de Cliente de Cisco real
- Reemplace
-
Reinicie Claude Desktop:
- Cierre Claude Desktop por completo
- Vuelva a abrir la aplicación
- El servidor MCP se cargará automáticamente
Verificación
Después de la configuración, debería poder:
-
Preguntarle a Claude sobre errores de Cisco:
"Search for bugs related to memory leaks in Cisco switches" -
Obtener detalles específicos de errores:
"Get details for Cisco bug CSCab12345" -
Buscar por producto:
"Find bugs affecting Cisco Catalyst 3560 switches"
Ejemplo de Uso en Claude Desktop
Una vez configurado, puede hacerle preguntas a Claude como:
-
Búsqueda Básica de Errores:
- "Busca errores recientes relacionados con 'fallo' en productos de Cisco"
- "Encuentra errores abiertos con severidad 1 o 2"
- "Muéstrame errores modificados en los últimos 30 días"
-
Búsquedas Específicas por Producto:
- "Encuentra errores para el ID de producto C9200-24P"
- "Busca errores en Cisco Catalyst 9200 Series que afecten la versión 17.5.1"
- "Muestra errores corregidos en la versión de software 17.5.2"
-
Detalles de Errores:
- "Obtén detalles completos del error CSCab12345"
- "Muéstrame información sobre los errores CSCab12345,CSCcd67890"
-
Filtrado Avanzado:
- "Encuentra errores resueltos con severidad 3 modificados después del 2023-01-01"
- "Busca errores en 'Cisco ASR 9000 Series' ordenados por severidad"
- "¿Puedes mostrarme todos los errores de Cisco en los últimos 30 días para el producto Cisco Unified Communications Manager (CallManager)?" (usa búsqueda por palabras clave)
- "Encuentra errores para Cisco Unified Communications Manager que afecten las versiones 14.0 y 15.0" (usa búsqueda por serie de producto)
Claude utilizará las herramientas MCP apropiadas para obtener datos en tiempo real de la API de Errores de Cisco y proporcionará respuestas completas con la información más reciente.
Indicaciones MCP
El servidor incluye más de 10 indicaciones especializadas para flujos de trabajo guiados de soporte Cisco:
- 🔍 cisco-high-severity-search - Busca errores de alta severidad por producto o número de serie
- 🚨 cisco-incident-investigation - Investiga síntomas y errores
- 🔄 cisco-upgrade-planning - Investiga problemas antes de las actualizaciones
- 🔧 cisco-maintenance-prep - Prepárese para ventanas de mantenimiento
- 🔒 cisco-security-advisory - Investiga vulnerabilidades de seguridad
- ⚠️ cisco-known-issues - Verifica problemas de versiones de software
- 📋 cisco-case-investigation - Investiga casos de soporte
- ⏰ cisco-lifecycle-planning - Planificación de fin de vida
- 🎯 cisco-smart-search - Búsqueda inteligente con refinamiento automático
- ✨ cisco-interactive-search - Búsqueda interactiva con elucidación
Soporte de Número de Serie: La mayoría de las indicaciones ahora aceptan un nombre de producto O un número de serie. Cuando proporcione un número de serie (por ejemplo, "SAL09232Q0Z"), el servidor busca automáticamente los detalles del producto y los utiliza para la búsqueda. Esto facilita la investigación de problemas cuando tiene un número de serie del dispositivo pero no conoce el modelo exacto del producto.
Cada indicación proporciona planes de investigación estructurados y recomendaciones de expertos.
Búsqueda Interactiva con Elucidación
La indicación cisco-interactive-search demuestra la función de elucidación de MCP, que permite al servidor solicitar dinámicamente información adicional a los usuarios durante la ejecución de herramientas. Esto hace que las búsquedas sean más naturales y ayuda a recopilar parámetros faltantes sin reiniciar solicitudes.
Ejemplo de Uso:
Use the "cisco-interactive-search" prompt with:
- initial_query: "memory leak"
- use_elicitation: true
Consulte examples/elicitation-example.md para ver ejemplos de uso detallados y ⚡ Indicaciones MCP para obtener documentación completa de las indicaciones.
🔍 Recursos MCP - Autocompletado de Productos
El servidor expone los datos de Cisco como Recursos MCP para acceso directo del cliente. Esto incluye una nueva función de Autocompletado de Productos que le permite buscar en el catálogo interno de productos de Cisco utilizando la cookie de sesión de su navegador.
Recursos de Producto Disponibles
Cuando SUPPORT_API incluye product, los siguientes recursos están disponibles:
Plantillas de Recursos (URI dinámicos):
cisco://products/{product_id}- Obtiene detalles del producto por ID (por ejemplo, C9300-24P, ISR4431)cisco://products/autocomplete/{search_term}- ✨ NUEVO: Busca en el catálogo de productos por nombre o modelo
Recursos Estáticos:
cisco://products/catalog- Descripción general del catálogo de productoscisco://products/autocomplete-help- ✨ NUEVO: Instrucciones de configuración para el autocompletado de productos
Configuración del Autocompletado de Productos
La función de autocompletado de productos requiere la cookie de sesión de Cisco.com para acceder a la API interna de Cisco.
Configuración Rápida:
-
Inicie sesión en Cisco:
- Visite https://bst.cloudapps.cisco.com/
- Inicie sesión con su cuenta de Cisco
-
Extraiga Su Cookie:
- Abra las Herramientas de Desarrollo del navegador (F12)
- Vaya a Aplicación/Almacenamiento > Cookies
- Seleccione
https://bst.cloudapps.cisco.com - Copie todos los valores de las cookies
-
Establezca la Variable de Entorno:
export CISCO_WEB_COOKIE="JSESSIONID=...; OptanonConsent=...; ..." -
Consulte los Productos:
cisco://products/autocomplete/4431 cisco://products/autocomplete/catalyst cisco://products/autocomplete/ASA
Ciclo de Vida de la Cookie:
- Validez Típica: 24 horas
- Actualización Recomendada: Diariamente antes de un uso intensivo
- Señales de Expiración: Errores 401/403, mensajes de "Cookie expirada"
Para obtener instrucciones de configuración detalladas, consulte el recurso de ayuda:
cisco://products/autocomplete-help
Ejemplo de Respuesta
Consulta: cisco://products/autocomplete/4431
{
"autoPopulateHMPProductDetails": [{
"parentMdfConceptId": 286281708,
"parentMdfConceptName": "Cisco 4000 Series Integrated Services Routers",
"mdfConceptId": 284358776,
"mdfConceptName": "Cisco 4431 Integrated Services Router",
"mdfMetaclass": "Model"
}]
}
Mejores Prácticas de Seguridad
- ✅ Nunca confirme cookies - son como contraseñas
- ✅ Use el archivo .env - ya está en .gitignore
- ✅ Actualice regularmente - las cookies expiran después de ~24 horas
- ✅ Supervise la actividad - verifique su cuenta de Cisco
- ✅ Use una cuenta dedicada - no su inicio de sesión principal
Uso en Claude Desktop
Pregúntele a Claude:
- "Muéstrame la ayuda para el autocompletado de productos"
- "Busca el producto Cisco 4431 usando autocompletado"
- "¿Cuál es el nombre completo del producto ISR4431?"
- "Encuentra productos que coincidan con 'catalyst switch'"
Consulte docs/PRODUCT_AUTOCOMPLETE_SOLUTIONS.md para obtener detalles de implementación y docs/CISCO_COOKIE_ANALYSIS.md para obtener información sobre el ciclo de vida de las cookies.
⚠️ API de Cliente Smart Bonding (EXPERIMENTAL/SIN PROBAR)
El servidor incluye soporte experimental para la API de Cliente Smart Bonding de Cisco para la gestión de tickets y la clasificación de códigos de problemas. Esta función NO ESTÁ PROBADA y requiere credenciales especiales obtenidas a través de su Gerente de Cuenta de Cisco.
Características de Smart Bonding
Herramientas Disponibles (8 en total):
get_smart_bonding_tsp_codes- Recuperar detalles de TSP (Tecnología, Sub-Tecnología, Código de Problema) para la clasificación de ticketspull_smart_bonding_tickets- Recuperar actualizaciones de tickets de Cisco que aún no se han obtenidocreate_smart_bonding_ticket- Crear un nuevo ticket de soporte (devuelve credenciales de carga en la respuesta)update_smart_bonding_ticket- Agregar notas de trabajo y actualizar el estado del ticketupload_file_to_smart_bonding_ticket- Subir archivos usando las credenciales de la creación del ticket (PUT HTTPS a cxd.cisco.com)escalate_smart_bonding_ticket- Escalar problemas críticos a Ciscoresolve_smart_bonding_ticket- Marcar tickets como resueltos con notas de resoluciónclose_smart_bonding_ticket- Cerrar tickets completados con diagnóstico y solución
Proceso de Carga de Archivos
Smart Bonding utiliza un mecanismo de carga separado de la API REST:
- Crear ticket → La respuesta incluye credenciales de carga (Campo80-82)
- Guardar credenciales → ¡No se pueden recuperar más tarde!
- Subir archivos → Usar la herramienta
upload_file_to_smart_bonding_ticketo curl - Expiración de 72 días → El token expira 72 días después de la creación
Credenciales de carga proporcionadas en la respuesta de creación del ticket:
- Campo80: Dominio de carga (ej., cxd.cisco.com)
- Campo81: Token de autenticación (contraseña)
- Campo82: Marca de tiempo de expiración del token
Los archivos no se pueden modificar después de la carga: envíe nuevos archivos para correcciones.
Diferencias de Autenticación
La API de Smart Bonding utiliza un sistema de autenticación diferente al de las API estándar de Soporte de Cisco:
| Característica | API de Soporte Estándar | API de Smart Bonding |
|---|---|---|
| Endpoint OAuth2 | https://id.cisco.com/oauth2/default/v1/token | https://cloudsso.cisco.com/as/token.oauth2 |
| Validez del Token | 12 horas | 1 hora |
| Credenciales | Autoservicio a través del Portal de Desarrolladores de Cisco | Contactar al Gerente de Cuenta de Cisco |
| Variables de Entorno | CISCO_CLIENT_ID, CISCO_CLIENT_SECRET | SMART_BONDING_CLIENT_ID, SMART_BONDING_CLIENT_SECRET |
Configuración
-
Obtener Credenciales - Contacte a su Gerente de Cuenta de Cisco para solicitar acceso a la API de Smart Bonding
-
Establecer Variables de Entorno:
export SMART_BONDING_CLIENT_ID=your_smart_bonding_client_id export SMART_BONDING_CLIENT_SECRET=your_smart_bonding_client_secret export SMART_BONDING_ENV=production # or 'staging' for test environment export SUPPORT_API=smart_bonding # Enable Smart Bonding API -
Usar Herramientas de Smart Bonding:
- Obtener códigos TSP para la clasificación de tickets
- Obtener nuevas actualizaciones de tickets
- Crear/actualizar tickets con categorización de problemas estandarizada
Notas Importantes
- ⚠️ EXPERIMENTAL/NO PROBADO - Esta implementación no se ha probado con credenciales reales de Smart Bonding
- ⚠️ Se Requieren Credenciales Separadas - Smart Bonding utiliza credenciales OAuth2 diferentes a las API de Soporte estándar
- ⚠️ No Incluido en
SUPPORT_API=all- Debe habilitarse explícitamente conSUPPORT_API=smart_bonding - ⚠️ Se Requiere Acceso Especial - Contacte al Gerente de Cuenta de Cisco para el aprovisionamiento de credenciales
- Las URL base difieren entre los entornos de staging y producción
- Admite IDs de correlación para el rastreo de solicitudes de extremo a extremo
Ejemplo de Uso
# With Claude Desktop - add to claude_desktop_config.json
{
"mcpServers": {
"cisco-smart-bonding": {
"command": "npx",
"args": ["-y", "mcp-cisco-support"],
"env": {
"SMART_BONDING_CLIENT_ID": "your_id",
"SMART_BONDING_CLIENT_SECRET": "your_secret",
"SMART_BONDING_ENV": "production",
"SUPPORT_API": "smart_bonding"
}
}
}
}
Para detalles completos de implementación y arquitectura de API, consulte SMART_BONDING_IMPLEMENTATION.md.
Capturas de Pantalla
Integración con Claude Desktop

Claude Desktop se conectó exitosamente al servidor MCP de Soporte de Cisco, demostrando la funcionalidad de búsqueda de bugs con respuestas en tiempo real de la API de Bugs de Cisco.
MCP Inspector

MCP Inspector v0.14.0+ mostrando las herramientas disponibles y las capacidades de prueba de conectividad del servidor.
Métodos de Instalación Alternativos
Instalación Global
Si prefiere instalar globalmente en lugar de usar npx:
npm install -g mcp-cisco-support
Luego use esta configuración:
{
"mcpServers": {
"cisco-support": {
"command": "mcp-cisco-support",
"env": {
"CISCO_CLIENT_ID": "your_client_id_here",
"CISCO_CLIENT_SECRET": "your_client_secret_here",
"SUPPORT_API": "bug"
}
}
}
}
Instalación Local
Para desarrollo o configuraciones personalizadas:
git clone https://github.com/sieteunoseis/mcp-cisco-support.git
cd mcp-cisco-support
npm install
npm run build
Luego use esta configuración:
{
"mcpServers": {
"cisco-support": {
"command": "node",
"args": ["/path/to/mcp-cisco-support/dist/index.js"],
"env": {
"CISCO_CLIENT_ID": "your_client_id_here",
"CISCO_CLIENT_SECRET": "your_client_secret_here",
"SUPPORT_API": "bug"
}
}
}
}
Solución de Problemas
Problemas Comunes
-
Errores de "Comando no encontrado":
- Asegúrese de que Node.js 18+ esté instalado
- Pruebe la instalación global:
npm install -g mcp-cisco-support - Verifique la ruta en su archivo de configuración
-
Fallos de autenticación:
- Verifique su ID de Cliente y Secreto
- Asegúrese de que su aplicación de API de Cisco tenga acceso a la API de Bugs
- Revise si hay errores tipográficos en el archivo de configuración
-
El servidor MCP no carga:
- Reinicie Claude Desktop por completo
- Verifique la sintaxis del archivo de configuración con un validador JSON
- Busque registros/mensajes de error de Claude Desktop
-
Errores de permisos:
- Asegúrese de que el archivo de configuración sea legible
- En macOS/Linux, verifique los permisos de archivo:
chmod 644 claude_desktop_config.json
Depuración
-
Pruebe el servidor manualmente:
npx mcp-cisco-supportEsto debería iniciar el servidor en modo stdio sin errores.
-
Valide su configuración: Use un validador JSON para asegurarse de que su archivo de configuración esté correctamente formateado.
-
Revise los registros de Claude Desktop:
- Busque mensajes de error relacionados con MCP en Claude Desktop
- La aplicación generalmente muestra el estado de conexión de los servidores MCP
Monitoree los registros en tiempo real (macOS):
# Follow logs in real-time tail -n 20 -F ~/Library/Logs/Claude/mcp*.logEn Windows:
# Check logs directory %APPDATA%\Claude\logs\
Obtener Ayuda
- Problemas: Problemas de GitHub
- API de Cisco: Documentación para Desarrolladores de Cisco
- Protocolo MCP: Model Context Protocol
Implementación con Docker
# Use pre-built image
docker pull ghcr.io/sieteunoseis/mcp-cisco-support:latest
docker run -p 3000:3000 \
-e CISCO_CLIENT_ID=your_id \
-e CISCO_CLIENT_SECRET=your_secret \
-e SUPPORT_API=bug \
ghcr.io/sieteunoseis/mcp-cisco-support:latest --http
# Or build locally
docker-compose up -d
🔐 Seguridad
- Modo stdio: Sin autenticación (Claude Desktop, clientes locales)
- Modo HTTP: Se requiere autenticación con token Bearer
# Generate secure token
npx mcp-cisco-support --generate-token
# Use token for HTTP mode
export MCP_BEARER_TOKEN=your_token
npx mcp-cisco-support --http
Consulte 🔒 Guía de Seguridad para la documentación completa de seguridad.
Configuración
Variables de Entorno
Cree un archivo .env con su configuración:
# 🔑 Cisco API OAuth2 Configuration (REQUIRED)
CISCO_CLIENT_ID=your_client_id_here
CISCO_CLIENT_SECRET=your_client_secret_here
# 🌐 Server Configuration
PORT=3000
NODE_ENV=development
# 🚀 API Support Configuration
# Enable specific Cisco Support APIs you have access to
# Options: bug, case, eox (plus planned: product, serial, rma, software, asd)
SUPPORT_API=bug,case,eox # Multiple APIs
# SUPPORT_API=all # All available APIs
# SUPPORT_API=bug # Single API (default)
# 🔐 HTTP Authentication Configuration (HTTP mode only)
# Custom Bearer token for HTTP authentication (optional - generates random if not set)
MCP_BEARER_TOKEN=your_custom_secure_token_here
# ⚠️ SECURITY WARNING: Only use in development/testing
# DANGEROUSLY_OMIT_AUTH=true # Disables HTTP authentication entirely
Autenticación OAuth 2.1 (Avanzada)
Para autenticación de nivel de producción con control de acceso detallado, use el modo OAuth 2.1:
Inicio Rápido
# 1. Copy example configuration files
cp config/oauth-clients.example.json config/oauth-clients.json
cp config/oauth-secrets.example.json config/oauth-secrets.json
# 2. Edit config/oauth-clients.json to configure your clients
# 3. Add client secrets to config/oauth-secrets.json (optional, for confidential clients)
# 4. Start server in OAuth 2.1 mode
AUTH_TYPE=oauth2.1 npm run oauth:start
# or for development with hot reload:
npm run oauth:dev
Archivos de Configuración
config/oauth-clients.json - Configuración de clientes (puede controlarse por versiones):
{
"clients": [
{
"client_id": "mcp_inspector_dev",
"client_uri": "http://localhost:6274",
"redirect_uris": ["http://localhost:6274/oauth/callback"],
"scopes": ["mcp:bug", "mcp:psirt"],
"grant_types": ["authorization_code"],
"description": "MCP Inspector - Limited to Bug + Security APIs",
"enabled": true
}
],
"settings": {
"allow_dynamic_registration": true,
"token_expiry_seconds": 3600
}
}
config/oauth-secrets.json - Secretos de clientes (gitignored, nunca commitear):
{
"secrets": {
"mcp_inspector_prod": "your_production_secret_here"
}
}
Ámbitos OAuth
Controle el acceso a la API con ámbitos detallados:
| Ámbito | Acceso a API | Descripción |
|---|---|---|
mcp | Todas las API | Acceso completo a todas las herramientas MCP |
mcp:bug | API de Bugs | Búsqueda de bugs y detalles solamente |
mcp:case | API de Casos | Gestión de casos de soporte solamente |
mcp:eox | API de EoX | Información de fin de vida solamente |
mcp:psirt | API de Seguridad | Avisos de seguridad solamente |
mcp:product | API de Productos | Información de productos solamente |
mcp:software | API de Software | Sugerencias de software solamente |
mcp:serial | API de Serial | Búsquedas de número de serie solamente |
mcp:rma | API de RMA | Autorización de devolución solamente |
Mejor Práctica: Otorgue solo los ámbitos que cada aplicación necesita (principio de privilegio mínimo).
Variables de Entorno
Apunte a ubicaciones de archivos de configuración personalizados:
# OAuth 2.1 Configuration
AUTH_TYPE=oauth2.1
# Optional: Custom config paths (defaults shown)
OAUTH_CLIENTS_CONFIG=config/oauth-clients.json
OAUTH_SECRETS_CONFIG=config/oauth-secrets.json
# Optional: Custom issuer URL (defaults to http://localhost:PORT)
OAUTH2_ISSUER_URL=https://your-server.com
Endpoints OAuth
Cuando se ejecuta en modo OAuth 2.1, el servidor proporciona:
GET /.well-known/oauth-authorization-server- Metadatos de descubrimiento OAuthGET /authorize- Endpoint de autorización (muestra página de consentimiento)POST /authorize/approve- Aprobación de autorizaciónPOST /token- Endpoint de token (PKCE requerido)POST /register- Registro dinámico de clientes (si está habilitado)
Consulte docs/OAUTH_CLIENTS_CONFIG.md para la documentación completa de OAuth 2.1.
Integración con Claude Desktop
Configuración completa para Claude Desktop:
{
"mcpServers": {
"cisco-support": {
"command": "npx",
"args": ["-y", "mcp-cisco-support"],
"env": {
"CISCO_CLIENT_ID": "your_client_id_here",
"CISCO_CLIENT_SECRET": "your_client_secret_here",
"SUPPORT_API": "bug,case,eox"
}
}
}
}
Configuración de Docker
Opción 1: Autenticación con Token Bearer
docker run -p 3000:3000 \
-e CISCO_CLIENT_ID=your_client_id \
-e CISCO_CLIENT_SECRET=your_client_secret \
-e SUPPORT_API=bug,case,eox \
-e MCP_BEARER_TOKEN=your_secure_token \
ghcr.io/sieteunoseis/mcp-cisco-support:latest --http
Opción 2: Autenticación OAuth 2.1 (Producción)
# 1. Create local OAuth config directory
mkdir -p ./oauth-config
cp config/oauth-clients.example.json ./oauth-config/oauth-clients.json
cp config/oauth-secrets.example.json ./oauth-config/oauth-secrets.json
# 2. Edit ./oauth-config/oauth-clients.json and oauth-secrets.json
# 3. Run with volume mount
docker run -p 3000:3000 \
-e CISCO_CLIENT_ID=your_client_id \
-e CISCO_CLIENT_SECRET=your_client_secret \
-e AUTH_TYPE=oauth2.1 \
-e OAUTH_CLIENTS_CONFIG=/oauth-config/oauth-clients.json \
-e OAUTH_SECRETS_CONFIG=/oauth-config/oauth-secrets.json \
-v $(pwd)/oauth-config:/oauth-config:ro \
ghcr.io/sieteunoseis/mcp-cisco-support:latest --http
Opción 3: Sin Autenticación (Solo Desarrollo)
docker run -p 3000:3000 \
-e CISCO_CLIENT_ID=your_client_id \
-e CISCO_CLIENT_SECRET=your_client_secret \
-e DANGEROUSLY_OMIT_AUTH=true \
ghcr.io/sieteunoseis/mcp-cisco-support:latest --http
Docker Compose con OAuth 2.1:
version: '3.8'
services:
mcp-cisco-support:
image: ghcr.io/sieteunoseis/mcp-cisco-support:latest
ports:
- "3000:3000"
environment:
- CISCO_CLIENT_ID=your_client_id
- CISCO_CLIENT_SECRET=your_client_secret
- AUTH_TYPE=oauth2.1
- OAUTH_CLIENTS_CONFIG=/oauth-config/oauth-clients.json
- OAUTH_SECRETS_CONFIG=/oauth-config/oauth-secrets.json
volumes:
- ./oauth-config:/oauth-config:ro
command: ["node", "dist/index.js", "--http"]
restart: unless-stopped
Endpoints de API
| Endpoint | Método | Descripción |
|---|---|---|
/ | GET | Información del servidor y endpoints disponibles |
/mcp | POST | Endpoint MCP principal (JSON-RPC sobre HTTP) |
/messages | POST | Endpoint MCP alternativo para compatibilidad con N8N |
/sse | GET | Conexión SSE con gestión de sesiones |
/sse | POST | Endpoint de mensajes SSE heredado (obsoleto) |
/sse/session/{sessionId} | POST | Endpoint de mensajes MCP específico de sesión |
/ping | GET | Endpoint de ping simple para pruebas de conectividad |
/health | GET | Verificación de salud con estado detallado |
📚 Documentación
Para información detallada, consulte nuestra completa Wiki de GitHub:
- 📋 Herramientas Disponibles - Referencia completa de las 46 herramientas MCP en 8 API
- 🔧 Configuración Avanzada - Variables de entorno y opciones de implementación
- 🔒 Guía de Seguridad - Autenticación, tokens y mejores prácticas de seguridad
- 🚀 Implementación con Docker - Implementación contenerizada y configuración de producción
- 🌐 Integración SSE - Eventos enviados por el servidor y comunicación en tiempo real
- 🧪 Marco de Pruebas - Pruebas y validación integrales
- 🔧 Guía de Desarrollo - Contribución, arquitectura y desarrollo de API
- 🚨 Guía de Solución de Problemas - Problemas comunes y depuración
- ⚡ Prompts MCP - Flujos de trabajo guiados para escenarios de soporte de Cisco
Ejemplos de Uso
Ejemplos con cURL
# Test server connectivity
curl http://localhost:3000/ping
# Check health status
curl http://localhost:3000/health
# List available tools (main MCP endpoint)
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/list"
}'
# List available tools (alternative endpoint for N8N)
curl -X POST http://localhost:3000/messages \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/list"
}'
# Test SSE connection (will show endpoint event)
curl -N http://localhost:3000/sse
# Search for bugs by keyword
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "2",
"method": "tools/call",
"params": {
"name": "search_bugs_by_keyword",
"arguments": {
"keyword": "crash",
"severity": "1",
"status": "open"
}
}
}'
# Get specific bug details
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "3",
"method": "tools/call",
"params": {
"name": "get_bug_details",
"arguments": {
"bug_ids": "CSCab12345"
}
}
}'
Ejemplo de Cliente JavaScript
async function searchBugs(keyword) {
const response = await fetch('http://localhost:3000/mcp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: Date.now(),
method: 'tools/call',
params: {
name: 'search_bugs_by_keyword',
arguments: {
keyword: keyword,
page_index: 1,
status: 'open'
}
}
})
});
const result = await response.json();
return result;
}
Monitoreo de Salud
El servidor proporciona un endpoint integral de verificación de salud:
curl http://localhost:3000/health
La respuesta incluye:
- Estado del servidor
- Estado del token OAuth2
- Uso de memoria
- Tiempo de actividad
- Conexiones SSE activas
Características de Seguridad
- Helmet: Cabeceras de seguridad
- CORS: Intercambio de recursos entre orígenes
- Validación de Entrada: Validación basada en esquemas
- Ejecución sin Root: Seguridad de Docker
- Variables de Entorno: Almacenamiento seguro de credenciales
Solución de Problemas
Problemas Comunes
-
Falló la Autenticación OAuth2
- Verifique
CISCO_CLIENT_IDyCISCO_CLIENT_SECRET - Revise la conectividad de red a
https://id.cisco.com
- Verifique
-
Llamadas a API Fallando
- Verifique la validez del token en
/health - Verifique el acceso de red a
https://apix.cisco.com
- Verifique la validez del token en
-
Problemas con Docker
- Asegúrese de que las variables de entorno estén configuradas
- Revise los registros de Docker:
docker-compose logs
Registros
Los registros JSON estructurados incluyen:
- Marca de tiempo
- Nivel de registro (info, error, warn)
- Mensaje
- Datos de contexto adicionales
Pruebas
Ejecutar Pruebas
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test suite
npx jest tests/auth.test.js
npx jest tests/mcp-tools.test.js
Estructura de Pruebas
El conjunto de pruebas incluye:
- Pruebas de Autenticación (
tests/auth.test.js): Autenticación OAuth2, gestión de tokens, manejo de errores - Pruebas de Herramientas MCP (
tests/mcp-tools.test.js): Las 8 herramientas MCP, manejo de errores, paginación - Configuración (
tests/setup.js): Configuración del entorno de pruebas
Correcciones Recientes de Pruebas
Los siguientes problemas fueron identificados y resueltos en el conjunto de pruebas:
✅ Problemas Corregidos
-
Lógica de Refresco de Token
- Problema: El cálculo de expiración del token era incorrecto en
getValidToken() - Solución: Se corrigió la condición para verificar adecuadamente si el token está dentro del margen de refresco
- Impacto: Comportamiento adecuado de caché y refresco de tokens
- Problema: El cálculo de expiración del token era incorrecto en
-
Manejo de Múltiples IDs de Bugs
- Problema: Fuga de estado entre pruebas que causaba desajustes en las secuencias simuladas
- Solución: Se implementó la función
resetServerState()para una limpieza adecuada - Impacto: Resultados de prueba consistentes en múltiples ejecuciones
-
Implementación de Herramientas de Búsqueda
- Problema: El mismo problema de gestión de estado que afectaba la búsqueda por palabras clave y otras herramientas
- Solución: Reinicio adecuado del estado del servidor entre pruebas
- Impacto: Las 8 herramientas MCP ahora funcionan correctamente
-
Manejo de Errores
- Problema: Los errores de API y los tiempos de espera de red no se convertían adecuadamente en respuestas de error MCP
- Solución: Manejo de errores mejorado en la función
handleMCPMessage() - Impacto: Respuestas de error adecuadas para aplicaciones cliente
-
Escenarios de Fallo de Autenticación
- Problema: El endpoint de salud devolvía 200 en lugar de 503 en fallos de autenticación
- Solución: Limpieza de caché de módulos y aislamiento adecuado del estado
- Impacto: Reporte correcto del estado de salud
-
Gestión del Estado de Pruebas
- Problema: Variables a nivel de módulo que persisten entre pruebas
- Solución: Se añadió la exportación
resetServerState()y la limpieza adecuada de la caché de módulos - Impacto: Verdadero aislamiento de pruebas y resultados de prueba confiables
Configuración de Pruebas
- Jest: Uso de Jest con la bandera
--forceExitpara ejecuciones de prueba principales - Restablecimiento de Estado: Cada prueba obtiene una instancia de servidor nueva con estado limpio
- Gestión de Mocks: Mocking de fetch adecuado con manejo correcto de secuencias
- Aislamiento de Pruebas: La limpieza de la caché de módulos evita fugas de estado
Detalles Clave de Implementación
- Fetch nativo: Usa el fetch nativo de Node.js en lugar de bibliotecas externas
- Gestión de Tokens: Validez del token de 12 horas con margen de actualización de 30 minutos
- Manejo de Errores: Manejo integral de errores con respuestas de error MCP adecuadas
- Seguridad: Cabeceras de seguridad Helmet, soporte CORS, validación de entrada
- Registro: Registro JSON estructurado con marcas de tiempo
Desarrollo
Estructura del Proyecto
mcp-cisco-support/
├── src/
│ └── index.ts # Main TypeScript server implementation
├── dist/ # Compiled JavaScript (generated by build)
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── .env.example # Environment variables template
├── .env # Actual environment variables (create from example)
├── .gitignore # Git ignore rules
├── Dockerfile # Docker configuration
├── docker-compose.yml # Docker Compose setup
├── screenshots/ # Documentation screenshots
│ └── mcp-inspector-screenshot.png
├── CLAUDE.md # Project instructions and architecture
└── README.md # Project documentation
Comandos de Desarrollo
# Install dependencies
npm install
# Start development server with auto-reload
npm run dev
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Build Docker image
docker build -t mcp-cisco-support .
# View logs in development
npm run dev 2>&1 | jq '.' # Pretty print JSON logs
Consideraciones de Rendimiento
- El almacenamiento en caché de tokens reduce las llamadas a la API
- La paginación limita los resultados a 10 por página
- El latido SSE cada 30 segundos mantiene las conexiones activas
- El tiempo de espera de solicitud se establece en 30 segundos
Notas de Seguridad
- Nunca confirme el archivo
.enven el control de versiones - Use variables de entorno para todos los secretos
- Revise los límites de uso y los términos de la API de Cisco
- Supervise los registros para detectar actividad sospechosa
Referencia de la API
Autenticación
- URL de OAuth2:
https://id.cisco.com/oauth2/default/v1/token - Tipo de Concesión:
client_credentials - Validez del Token: 12 horas
- Actualización Automática: 30 minutos antes de la expiración
URL Base de la API de Bugs
- URL Base:
https://apix.cisco.com/bug/v2.0
Protocolo MCP
El servidor implementa el Protocolo de Contexto de Modelo con estos métodos:
initialize: Inicializar conexión MCPtools/list: Listar herramientas disponiblestools/call: Ejecutar una herramienta
Ejemplo de mensaje MCP:
{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/call",
"params": {
"name": "search_bugs_by_keyword",
"arguments": {
"keyword": "memory leak",
"status": "open"
}
}
}
Monitoreo de Salud
El servidor proporciona un endpoint integral de verificación de salud:
curl http://localhost:3000/health
La respuesta incluye estado del servidor, estado del token OAuth2, uso de memoria, tiempo de actividad y conexiones activas.
Pruebas
Marco de pruebas integral basado en Jest con:
- ✅ 46/46 herramientas probadas - Todas las herramientas MCP en 8 APIs
- ✅ Pruebas con Mocks y API Real - Pruebas unitarias con mocks + pruebas de integración con APIs en vivo
- ✅ Pruebas de herramientas individuales - Ejecutor de pruebas independiente para desarrollo
# Run all tests
npm test
# Test with real API credentials
CISCO_CLIENT_ID=your_id CISCO_CLIENT_SECRET=your_secret npm test
# Test individual tools
npm run test:tool search_bugs_by_keyword
Consulte 🧪 Marco de Pruebas para obtener documentación completa de pruebas.
Licencia
Licencia MIT - consulte el archivo LICENSE para obtener detalles.
Contribuciones
- Haga un fork del repositorio
- Cree una rama de características
- Realice sus cambios
- Añada pruebas para la nueva funcionalidad
- Asegúrese de que todas las pruebas pasen:
npm test - Envíe una solicitud de extracción
Soporte
Recursos
- 📖 Documentación Completa - Documentación integral del proyecto
- 📚 Wiki - Guías detalladas y solución de problemas
- 🐛 Problemas - Reporte de errores y solicitud de funciones
Recursos Externos
- 🔧 Documentación para Desarrolladores de Cisco - Documentación oficial de la API
- 🔒 Documentación de Cisco PSIRT - Documentación de la API de vulnerabilidades de seguridad
- 💬 Discusiones de Servicios de Cisco - Soporte comunitario y discusiones de API
- 🌐 Protocolo MCP - Especificación del Protocolo de Contexto de Modelo