Cisco Support MCP Server
Acesse as APIs de Suporte Cisco para pesquisas de bugs e outras tarefas relacionadas ao suporte.
Documentação
Cisco Support MCP Server
Um servidor MCP (Model Context Protocol) TypeScript pronto para produção para as APIs de Suporte da Cisco, com segurança abrangente e suporte a transporte duplo. Este servidor extensível fornece acesso a múltiplas APIs de Suporte da Cisco, incluindo Busca de Bugs, Gerenciamento de Casos e informações de Fim de Vida.
🚀 Recursos Atuais
- Suporte Multi-API: 8 APIs de Suporte da Cisco totalmente implementadas (46 ferramentas no total)
- Servidor OAuth 2.1: ✨ Autenticação de nível de produção com controle de acesso baseado em escopos granulares
- Suporte a ElicitationRequest: Interação dinâmica com o usuário para coletar parâmetros ausentes
- Três Modos de Autenticação: stdio (sem autenticação), token Bearer (simples), OAuth 2.1 (produção)
- Acesso a API Configurável: Habilite apenas as APIs de Suporte da Cisco às quais você tem acesso
- Prompts Especializados: 9 prompts de fluxo de trabalho para cenários guiados de suporte Cisco
- Transporte Duplo: stdio (clientes MCP locais) e HTTP (servidor remoto com autenticação)
- Autenticação OAuth2: Gerenciamento automático de tokens com a API da Cisco
- Atualizações em Tempo Real: Server-Sent Events para o modo HTTP
- TypeScript: Segurança total de tipos e integração com o SDK MCP
- Segurança de Produção: Helmet, CORS, validação de entrada, PKCE, validação de escopo
- Suporte a Docker: Implantação em contêiner com montagens de volume de configuração OAuth
- Registro Abrangente: Logs estruturados com carimbos de data/hora
📊 APIs da Cisco Suportadas
O servidor suporta as seguintes APIs de Suporte da Cisco (configuráveis via variável de ambiente SUPPORT_API):
| API | Status | Ferramentas | Descrição |
|---|---|---|---|
Enhanced Analysis (enhanced_analysis) | ⭐ RECOMENDADA | 6 ferramentas | Ferramentas avançadas de análise para avaliação abrangente de produtos |
Bug (bug) | ✅ Completa | 14 ferramentas | Busca de Bugs, Detalhes, buscas específicas por produto + ferramentas aprimoradas |
Case (case) | ✅ Completa | 4 ferramentas | Gerenciamento e operações de casos de suporte |
EoX (eox) | ✅ Completa | 4 ferramentas | Informações de Fim de Vida/Fim de Venda e planejamento de ciclo de vida |
PSIRT (psirt) | ✅ Completa | 8 ferramentas | Dados de vulnerabilidades do Product Security Incident Response Team |
Product (product) | ✅ Completa | 3 ferramentas | Detalhes de produtos, especificações e informações técnicas |
Software (software) | ✅ Completa | 6 ferramentas | Sugestões de software, versões e recomendações de atualização |
Serial (serial) | ✅ Completa | 3 ferramentas | Número de série para cobertura, garantia e informações do produto |
RMA (rma) | ✅ Completa | 3 ferramentas | Rastreamento e gerenciamento de Autorização de Devolução de Mercadoria |
Smart Bonding (smart_bonding) | ⚠️ EXPERIMENTAL | 8 ferramentas | Gerenciamento completo do ciclo de vida de tickets e códigos TSP (NÃO TESTADA - requer credenciais especiais) |
Status de Implementação: 8/8 APIs principais completas (100%) com 46 ferramentas no total + 1 API experimental (8 ferramentas)
Exemplos de Configuração:
SUPPORT_API=enhanced_analysis- Somente ferramentas de análise aprimorada (6 ferramentas) ← RECOMENDADA para a maioria dos usuáriosSUPPORT_API=bug- Todas as ferramentas da API Bug, incluindo análise aprimorada (14 ferramentas)SUPPORT_API=bug,case,eox,psirt- APIs de suporte principais (28 ferramentas)SUPPORT_API=bug,case,eox,psirt,product,software- Todas as APIs implementadas (39 ferramentas)SUPPORT_API=all- Todas as APIs disponíveis (inclui 2 APIs placeholder)
Início Rápido
Instalação via NPX (Recomendada)
Inicie no modo stdio para Claude Desktop:
npx mcp-cisco-support
Inicie o servidor HTTP com autenticação:
npx mcp-cisco-support --http
# Token displayed in console for authentication
Gere token Bearer para o modo HTTP:
npx mcp-cisco-support --generate-token
Obtenha ajuda e veja todas as opções:
npx mcp-cisco-support --help
Configuração do Ambiente
-
Gere o token de autenticação (para o modo HTTP):
npx mcp-cisco-support --generate-token export MCP_BEARER_TOKEN=<generated_token> -
Defina as credenciais da API da 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 o servidor:
# For Claude Desktop (stdio mode) npx mcp-cisco-support # For HTTP access (with authentication) npx mcp-cisco-support --http
Desenvolvimento Local
git clone https://github.com/sieteunoseis/mcp-cisco-support.git
cd mcp-cisco-support
npm install
npm run build
npm start
Integração com Claude Desktop
Pré-requisitos
-
Obtenha as Credenciais da API da Cisco:
- Visite o Console de API da Cisco
- Crie um aplicativo e obtenha seu Client ID e Secret
- Garanta que o aplicativo tenha acesso à API Bug
-
Instale o Claude Desktop:
- Baixe em Claude.ai
- Certifique-se de estar usando uma versão recente que suporte MCP
Configuração Passo a Passo
-
Localize o Arquivo de Configuração do Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Crie ou Edite o Arquivo de Configuração:
{ "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: O sinalizador
-yaceita automaticamente a instalação do pacote, o que é necessário para o Claude Desktop, pois ele é executado em segundo plano sem interação do usuário.Variáveis de Ambiente Opcionais:
Configure quais APIs habilitar com
SUPPORT_API:"enhanced_analysis"- Somente ferramentas de análise aprimorada (recomendado para a maioria dos usuários)"bug"- Somente API Bug (padrão)"bug,product"- APIs Bug + Product (habilita o preenchimento automático de produtos)"all"- Todas as APIs disponíveis"bug,case,eox"- Múltiplas APIs específicas
Preenchimento Automático de Produtos (opcional, requer que
SUPPORT_APIincluaproduct):"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 a seção Preenchimento Automático de Produtos para instruções de configuração.
-
Substitua Suas Credenciais:
- Substitua
your_client_id_herepelo seu Client ID real da Cisco - Substitua
your_client_secret_herepelo seu Client Secret real da Cisco
- Substitua
-
Reinicie o Claude Desktop:
- Feche o Claude Desktop completamente
- Reabra o aplicativo
- O servidor MCP será carregado automaticamente
Verificação
Após a configuração, você deve ser capaz de:
-
Perguntar ao Claude sobre bugs da Cisco:
"Search for bugs related to memory leaks in Cisco switches" -
Obter detalhes específicos de bugs:
"Get details for Cisco bug CSCab12345" -
Pesquisar por produto:
"Find bugs affecting Cisco Catalyst 3560 switches"
Exemplo de Uso no Claude Desktop
Uma vez configurado, você pode fazer perguntas ao Claude como:
-
Busca Básica de Bugs:
- "Pesquise bugs recentes relacionados a 'crash' em produtos Cisco"
- "Encontre bugs abertos com severidade 1 ou 2"
- "Mostre-me bugs modificados nos últimos 30 dias"
-
Buscas Específicas por Produto:
- "Encontre bugs para o ID de produto C9200-24P"
- "Pesquise bugs no Cisco Catalyst 9200 Series que afetam a versão 17.5.1"
- "Mostre bugs corrigidos na versão de software 17.5.2"
-
Detalhes de Bugs:
- "Obtenha detalhes completos do bug CSCab12345"
- "Mostre-me informações sobre os bugs CSCab12345,CSCcd67890"
-
Filtragem Avançada:
- "Encontre bugs resolvidos com severidade 3 modificados após 01/01/2023"
- "Pesquise bugs no 'Cisco ASR 9000 Series' ordenados por severidade"
- "Você pode me mostrar todos os bugs da Cisco nos últimos 30 dias para o produto Cisco Unified Communications Manager (CallManager)?" (usa busca por palavra-chave)
- "Encontre bugs para o Cisco Unified Communications Manager que afetam as versões 14.0 e 15.0" (usa busca por série de produto)
O Claude usará as ferramentas MCP apropriadas para buscar dados em tempo real da API Bug da Cisco e fornecer respostas abrangentes com as informações mais recentes.
Prompts MCP
O servidor inclui 10+ prompts especializados para fluxos de trabalho guiados de suporte Cisco:
- 🔍 cisco-high-severity-search - Pesquise bugs de alta severidade por produto ou número de série
- 🚨 cisco-incident-investigation - Investigue sintomas e erros
- 🔄 cisco-upgrade-planning - Pesquise problemas antes de atualizações
- 🔧 cisco-maintenance-prep - Prepare-se para janelas de manutenção
- 🔒 cisco-security-advisory - Pesquise vulnerabilidades de segurança
- ⚠️ cisco-known-issues - Verifique problemas de versões de software
- 📋 cisco-case-investigation - Investigue casos de suporte
- ⏰ cisco-lifecycle-planning - Planejamento de fim de vida
- 🎯 cisco-smart-search - Busca inteligente com refinamento automático
- ✨ cisco-interactive-search - Busca interativa com elicitação
Suporte a Número de Série: A maioria dos prompts agora aceita um nome de produto OU um número de série. Quando você fornece um número de série (por exemplo, "SAL09232Q0Z"), o servidor automaticamente consulta os detalhes do produto e os utiliza na busca. Isso facilita a investigação de problemas quando você tem o número de série do dispositivo, mas não sabe o modelo exato do produto.
Cada prompt fornece planos de investigação estruturados e recomendações de especialistas.
Busca Interativa com Elicitação
O prompt cisco-interactive-search demonstra o recurso de elicitação do MCP, permitindo que o servidor solicite dinamicamente informações adicionais dos usuários durante a execução das ferramentas. Isso torna as buscas mais naturais e ajuda a coletar parâmetros ausentes sem reiniciar as solicitações.
Exemplo de Uso:
Use the "cisco-interactive-search" prompt with:
- initial_query: "memory leak"
- use_elicitation: true
Consulte examples/elicitation-example.md para exemplos detalhados de uso e ⚡ Prompts MCP para documentação completa dos prompts.
🔍 Recursos MCP - Preenchimento Automático de Produtos
O servidor expõe dados da Cisco como Recursos MCP para acesso direto pelo cliente. Isso inclui um novo recurso de Preenchimento Automático de Produtos que permite pesquisar o catálogo interno de produtos da Cisco usando o cookie de sessão do seu navegador.
Recursos de Produtos Disponíveis
Quando SUPPORT_API inclui product, os seguintes recursos estão disponíveis:
Modelos de Recursos (URIs dinâmicos):
cisco://products/{product_id}- Obtenha detalhes do produto por ID (por exemplo, C9300-24P, ISR4431)cisco://products/autocomplete/{search_term}- ✨ NOVO: Pesquise o catálogo de produtos por nome ou modelo
Recursos Estáticos:
cisco://products/catalog- Visão geral do catálogo de produtoscisco://products/autocomplete-help- ✨ NOVO: Instruções de configuração para preenchimento automático de produtos
Configuração do Preenchimento Automático de Produtos
O recurso de preenchimento automático de produtos requer o cookie de sessão do seu Cisco.com para acessar a API interna da Cisco.
Configuração Rápida:
-
Faça login na Cisco:
- Visite https://bst.cloudapps.cisco.com/
- Faça login com sua conta Cisco
-
Extraia Seu Cookie:
- Abra o DevTools do navegador (F12)
- Vá para Application/Storage > Cookies
- Selecione
https://bst.cloudapps.cisco.com - Copie todos os valores dos cookies
-
Defina a Variável de Ambiente:
export CISCO_WEB_COOKIE="JSESSIONID=...; OptanonConsent=...; ..." -
Consulte Produtos:
cisco://products/autocomplete/4431 cisco://products/autocomplete/catalyst cisco://products/autocomplete/ASA
Ciclo de Vida do Cookie:
- Validade Típica: 24 horas
- Atualização Recomendada: Diariamente antes de uso intenso
- Sinais de Expiração: Erros 401/403, mensagens de "Cookie expirado"
Para instruções detalhadas de configuração, consulte o recurso de ajuda:
cisco://products/autocomplete-help
Exemplo de Resposta
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"
}]
}
Boas Práticas de Segurança
- ✅ Nunca faça commit de cookies - eles são como senhas
- ✅ Use arquivo .env - já está no .gitignore
- ✅ Atualize regularmente - cookies expiram após ~24 horas
- ✅ Monitore a atividade - verifique sua conta Cisco
- ✅ Use uma conta dedicada - não seu login principal
Uso no Claude Desktop
Pergunte ao Claude:
- "Mostre-me a ajuda para preenchimento automático de produtos"
- "Pesquise o produto Cisco 4431 usando preenchimento automático"
- "Qual é o nome completo do produto ISR4431?"
- "Encontre produtos que correspondam a 'catalyst switch'"
Consulte docs/PRODUCT_AUTOCOMPLETE_SOLUTIONS.md para detalhes de implementação e docs/CISCO_COOKIE_ANALYSIS.md para informações sobre o ciclo de vida do cookie.
⚠️ API Smart Bonding Customer (EXPERIMENTAL/NÃO TESTADA)
O servidor inclui suporte experimental para a API Smart Bonding Customer da Cisco para gerenciamento de tickets e classificação de códigos de problema. Este recurso NÃO FOI TESTADO e requer credenciais especiais obtidas através do seu Gerente de Conta Cisco.
Recursos do Smart Bonding
Continuação da tradução de Markdown (2/3) para Português (BR), preservando todos os tokens e marcadores.
Ferramentas disponíveis (8 no total):
get_smart_bonding_tsp_codes- Recuperar detalhes de TSP (Tecnologia, Subtecnologia, Código do Problema) para classificação de ticketpull_smart_bonding_tickets- Recuperar atualizações de ticket da Cisco que ainda não foram baixadascreate_smart_bonding_ticket- Criar um novo ticket de suporte (retorna credenciais de upload na resposta)update_smart_bonding_ticket- Adicionar notas de trabalho e atualizar o status do ticketupload_file_to_smart_bonding_ticket- Enviar arquivos usando as credenciais da criação do ticket (HTTP PUT para cxd.cisco.com)escalate_smart_bonding_ticket- Escalar problemas críticos para a Ciscoresolve_smart_bonding_ticket- Marcar tickets como resolvidos com notas de resoluçãoclose_smart_bonding_ticket- Fechar tickets concluídos com diagnóstico e solução
Processo de Upload de Arquivos
O Smart Bonding usa um mecanismo de upload separado da API REST:
- Criar ticket → A resposta inclui as credenciais de upload (Campos 80-82)
- Salvar credenciais → Não podem ser recuperadas depois!
- Enviar arquivos → Use a ferramenta
upload_file_to_smart_bonding_ticketou curl - Expiração em 72 dias → O token expira 72 dias após a criação
Credenciais de upload fornecidas na resposta de criação do ticket:
- Campo 80: Domínio de upload (ex.: cxd.cisco.com)
- Campo 81: Token de autenticação (senha)
- Campo 82: Timestamp de expiração do token
Arquivos não podem ser modificados após o upload — envie novos arquivos para correções.
Diferenças de Autenticação
A API do Smart Bonding usa um sistema de autenticação diferente das APIs padrão de suporte da Cisco:
| Recurso | APIs de Suporte Padrão | API Smart Bonding |
|---|---|---|
| Endpoint OAuth2 | https://id.cisco.com/oauth2/default/v1/token | https://cloudsso.cisco.com/as/token.oauth2 |
| Validade do Token | 12 horas | 1 hora |
| Credenciais | Autoatendimento via Portal do Desenvolvedor Cisco | Contato com o Gerente de Conta Cisco |
| Variáveis de Ambiente | CISCO_CLIENT_ID, CISCO_CLIENT_SECRET | SMART_BONDING_CLIENT_ID, SMART_BONDING_CLIENT_SECRET |
Configuração
-
Obter Credenciais — Contate seu Gerente de Conta Cisco para solicitar acesso à API Smart Bonding
-
Defina as Variáveis de Ambiente:
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 -
Use as Ferramentas Smart Bonding:
- Obtenha códigos TSP para classificação de tickets
- Baixe novas atualizações de tickets
- Crie/atualize tickets com categorização padronizada de problemas
Notas Importantes
- ⚠️ EXPERIMENTAL/NÃO TESTADO — Esta implementação não foi testada com credenciais reais do Smart Bonding
- ⚠️ Credenciais Separadas Necessárias — O Smart Bonding usa credenciais OAuth2 diferentes das APIs de suporte padrão
- ⚠️ Não Incluído em
SUPPORT_API=all— Deve ser explicitamente habilitado comSUPPORT_API=smart_bonding - ⚠️ Acesso Especial Requerido — Contate o Gerente de Conta Cisco para provisionamento de credenciais
- URLs base diferem entre ambientes de homologação e produção
- Suporta IDs de correlação para rastreabilidade de ponta a ponta de requisições
Exemplo 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 detalhes completos de implementação e arquitetura da API, veja SMART_BONDING_IMPLEMENTATION.md.
Capturas de Tela
Integração com Claude Desktop

O Claude Desktop conectou-se com sucesso ao servidor MCP Cisco Support, demonstrando a funcionalidade de busca de bugs com respostas em tempo real da API de Bugs da Cisco.
MCP Inspector

MCP Inspector v0.14.0+ mostrando as ferramentas disponíveis e os recursos de teste de conectividade do servidor.
Métodos Alternativos de Instalação
Instalação Global
Se você preferir instalar globalmente em vez de usar o npx:
npm install -g mcp-cisco-support
Em seguida, use esta configuração:
{
"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"
}
}
}
}
Instalação Local
Para desenvolvimento ou configurações personalizadas:
git clone https://github.com/sieteunoseis/mcp-cisco-support.git
cd mcp-cisco-support
npm install
npm run build
Em seguida, use esta configuração:
{
"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"
}
}
}
}
Solução de Problemas
Problemas Comuns
-
Erros de "comando não encontrado":
- Certifique-se de que o Node.js 18+ esteja instalado
- Tente a instalação global:
npm install -g mcp-cisco-support - Verifique o caminho no arquivo de configuração
-
Falhas de autenticação:
- Verifique novamente seu Client ID e Secret
- Certifique-se de que seu aplicativo API Cisco tenha acesso à API de Bugs
- Verifique erros de digitação no arquivo de configuração
-
Servidor MCP não carregando:
- Reinicie o Claude Desktop completamente
- Valide a sintaxe do arquivo de configuração com um validador JSON
- Verifique os logs/mensagens de erro do Claude Desktop
-
Erros de permissão:
- Garanta que o arquivo de configuração seja legível
- No macOS/Linux, verifique as permissões do arquivo:
chmod 644 claude_desktop_config.json
Depuração
-
Teste o servidor manualmente:
npx mcp-cisco-supportIsso deve iniciar o servidor no modo stdio sem erros.
-
Valide sua configuração: Use um validador JSON para garantir que o arquivo de configuração esteja formatado corretamente.
-
Verifique os logs do Claude Desktop:
- Procure mensagens de erro relacionadas a MCP no Claude Desktop
- O aplicativo geralmente mostra o status de conexão dos servidores MCP
Monitore logs em tempo real (macOS):
# Follow logs in real-time tail -n 20 -F ~/Library/Logs/Claude/mcp*.logNo Windows:
# Check logs directory %APPDATA%\Claude\logs\
Obtendo Ajuda
- Issues: GitHub Issues
- API Cisco: Documentação para Desenvolvedores Cisco
- Protocolo MCP: Model Context Protocol
Implantação com 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
🔐 Segurança
- Modo stdio: Sem autenticação (Claude Desktop, clientes locais)
- Modo HTTP: Requer autenticação via Bearer token
# 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 o 🔒 Guia de Segurança para documentação completa de segurança.
Configuração
Variáveis de Ambiente
Crie um arquivo .env com sua configuração:
# 🔑 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
Autenticação OAuth 2.1 (Avançado)
Para autenticação de nível de produção com controle de acesso refinado, use o modo OAuth 2.1:
Início 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
Arquivos de Configuração
config/oauth-clients.json — Configuração de clientes (pode ter controle de versão):
{
"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 — Segredos dos clientes (ignorado pelo git, nunca versionar):
{
"secrets": {
"mcp_inspector_prod": "your_production_secret_here"
}
}
Escopos OAuth
Controle o acesso à API com escopos refinados:
| Escopo | Acesso à API | Descrição |
|---|---|---|
mcp | Todas as APIs | Acesso total a todas as ferramentas MCP |
mcp:bug | API de Bugs | Apenas busca e detalhes de bugs |
mcp:case | API de Casos | Somente gerenciamento de casos de suporte |
mcp:eox | API EoX | Somente informações de fim de vida |
mcp:psirt | API de Segurança | Somente alertas de segurança |
mcp:product | API de Produtos | Somente informações de produtos |
mcp:software | API de Software | Somente sugestões de software |
mcp:serial | API de Seriais | Somente consultas de número de série |
mcp:rma | API RMA | Somente autorização de devolução |
Melhores Práticas: Conceda apenas os escopos necessários para cada aplicação (princípio do menor privilégio).
Variáveis de Ambiente
Aponte para locais personalizados de arquivos de configuração:
# 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
Ao executar no modo OAuth 2.1, o servidor fornece:
GET /.well-known/oauth-authorization-server— Metadados de descoberta OAuthGET /authorize— Endpoint de autorização (exibe página de consentimento)POST /authorize/approve— Aprovação de autorizaçãoPOST /token— Endpoint de token (PKCE obrigatório)POST /register— Registro dinâmico de clientes (se habilitado)
Consulte docs/OAUTH_CLIENTS_CONFIG.md para documentação completa do OAuth 2.1.
Integração com Claude Desktop
Configuração 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"
}
}
}
}
Configuração Docker
Opção 1: Autenticação via Bearer Token
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
Opção 2: Autenticação OAuth 2.1 (Produção)
# 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
Opção 3: Sem Autenticação (Somente Desenvolvimento)
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 com 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 da API
| Endpoint | Método | Descrição |
|---|---|---|
/ | GET | Informações do servidor e endpoints disponíveis |
/mcp | POST | Endpoint MCP principal (JSON-RPC sobre HTTP) |
/messages | POST | Endpoint MCP alternativo para compatibilidade com N8N |
/sse | GET | Conexão SSE com gerenciamento de sessão |
/sse | POST | Endpoint SSE de mensagens legado (obsoleto) |
/sse/session/{sessionId} | POST | Endpoint MCP de mensagens específico para sessão |
/ping | GET | Endpoint simples de ping para teste de conectividade |
/health | GET | Verificação de saúde com status detalhado |
📚 Documentação
Para informações detalhadas, consulte nossa abrangente Wiki no GitHub:
- 📋 Ferramentas Disponíveis — Referência completa para todas as 46 ferramentas MCP em 8 APIs
- 🔧 Configuração Avançada — Variáveis de ambiente e opções de implantação
- 🔒 Guia de Segurança — Autenticação, tokens e melhores práticas de segurança
- 🚀 Implantação Docker — Implantação conteinerizada e configuração de produção
- 🌐 Integração SSE — Server-Sent Events e comunicação em tempo real
- 🧪 Estrutura de Testes — Testes e validações abrangentes
- 🔧 Guia de Desenvolvimento — Contribuição, arquitetura e desenvolvimento de API
- 🚨 Guia de Solução de Problemas — Problemas comuns e depuração
- ⚡ MCP Prompts — Fluxos de trabalho guiados para cenários de suporte Cisco
Exemplos de Uso
Exemplos com 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"
}
}
}'
Exemplo 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;
}
Monitoramento de Saúde
O servidor fornece um endpoint abrangente de verificação de saúde:
curl http://localhost:3000/health
A resposta inclui:
- Status do servidor
- Status do token OAuth2
- Uso de memória
- Tempo de atividade
- Conexões SSE ativas
Recursos de Segurança
- Helmet: Cabeçalhos de segurança
- CORS: Compartilhamento de recursos entre origens
- Validação de Entrada: Validação baseada em esquemas
- Execução como Não Root: Segurança em Docker
- Variáveis de Ambiente: Armazenamento seguro de credenciais
Solução de Problemas
Problemas Comuns
-
Falha na Autenticação OAuth2
- Verifique
CISCO_CLIENT_IDeCISCO_CLIENT_SECRET - Verifique a conectividade de rede com
https://id.cisco.com
- Verifique
-
Chamadas de API Falhando
- Verifique a validade do token em
/health - Verifique o acesso de rede a
https://apix.cisco.com
- Verifique a validade do token em
-
Problemas com Docker
- Certifique-se de que as variáveis de ambiente estão definidas
- Verifique os logs do Docker:
docker-compose logs
Logs
Logs estruturados em JSON incluem:
- Timestamp
- Nível de log (info, error, warn)
- Mensagem
- Dados de contexto adicionais
Testes
Executando Testes
# 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
Estrutura de Testes
A suíte de testes inclui:
- Testes de Autenticação (
tests/auth.test.js): Autenticação OAuth2, gerenciamento de tokens, tratamento de erros - Testes de Ferramentas MCP (
tests/mcp-tools.test.js): Todas as 8 ferramentas MCP, tratamento de erros, paginação - Configuração (
tests/setup.js): Configuração do ambiente de testes
Correções Recentes em Testes
Os seguintes problemas foram identificados e resolvidos na suíte de testes:
✅ Problemas Corrigidos
-
Lógica de Atualização de Token
- Problema: O cálculo de expiração do token estava incorreto em
getValidToken() - Solução: Corrigido a condição para verificar corretamente se o token está dentro da margem de atualização
- Impacto: Comportamento adequado de cache e atualização de token
- Problema: O cálculo de expiração do token estava incorreto em
-
Tratamento de Múltiplos IDs de Bug
- Problema: Vazamento de estado entre testes causando incompatibilidades nas sequências simuladas
- Solução: Implementada a função
resetServerState()para limpeza adequada - Impacto: Resultados consistentes entre múltiplas execuções
-
Implementação das Ferramentas de Busca
- Problema: Mesmo problema de gerenciamento de estado afetando busca por palavras-chave e outras ferramentas
- Solução: Reset adequado do estado do servidor entre testes
- Impacto: Todas as 8 ferramentas MCP agora funcionam corretamente
-
Tratamento de Erros
- Problema: Erros de API e timeouts de rede não eram convertidos adequadamente em respostas de erro MCP
- Solução: Tratamento de erros aprimorado na função
handleMCPMessage() - Impacto: Respostas de erro adequadas para aplicações clientes
-
Cenários de Falha de Autenticação
- Problema: Endpoint de saúde retornando 200 em vez de 503 em falhas de autenticação
- Solução: Limpeza de cache de módulos e isolamento adequado de estado
- Impacto: Relatório correto do status de saúde
-
Gerenciamento de Estado de Teste
- Problema: Variáveis de nível de módulo persistindo entre testes
- Solução: Adicionada exportação
resetServerState()e limpeza adequada do cache de módulo - Impacto: Isolamento real de testes e resultados confiáveis
Configuração de Teste
- Jest: Usando Jest com a flag
--forceExitpara execuções principais de teste - Redefinição de Estado: Cada teste recebe uma nova instância do servidor com estado limpo
- Gerenciamento de Mocks: Mocking de fetch adequado com tratamento correto de sequência
- Isolamento de Teste: A limpeza do cache de módulo evita vazamento de estado
Detalhes de Implementação Principais
- Fetch nativo: Usa o fetch nativo do Node.js em vez de bibliotecas externas
- Gerenciamento de Token: Validade de 12 horas para o token com margem de atualização de 30 minutos
- Tratamento de Erros: Tratamento abrangente de erros com respostas de erro MCP adequadas
- Segurança: Cabeçalhos de segurança Helmet, suporte a CORS, validação de entrada
- Registro de Logs: Registro JSON estruturado com carimbos de data/hora
Desenvolvimento
Estrutura do Projeto
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 Desenvolvimento
# 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
Considerações de Performance
- Cache de token reduz chamadas à API
- Paginação limita resultados a 10 por página
- Heartbeat SSE a cada 30 segundos mantém conexões ativas
- Timeout de requisição definido em 30 segundos
Notas de Segurança
- Nunca envie o arquivo
.envpara o controle de versão - Use variáveis de ambiente para todos os segredos
- Revise os limites de uso e os termos da API da Cisco
- Monitore os logs para atividades suspeitas
Referência da API
Autenticação
- URL OAuth2:
https://id.cisco.com/oauth2/default/v1/token - Tipo de Concessão:
client_credentials - Validade do Token: 12 horas
- Atualização Automática: 30 minutos antes da expiração
URL Base da API de Bugs
- URL Base:
https://apix.cisco.com/bug/v2.0
Protocolo MCP
O servidor implementa o Model Context Protocol com estes métodos:
initialize: Inicializa a conexão MCPtools/list: Lista as ferramentas disponíveistools/call: Executa uma ferramenta
Exemplo de mensagem MCP:
{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/call",
"params": {
"name": "search_bugs_by_keyword",
"arguments": {
"keyword": "memory leak",
"status": "open"
}
}
}
Monitoramento de Saúde
O servidor fornece um endpoint abrangente de verificação de saúde:
curl http://localhost:3000/health
A resposta inclui status do servidor, status do token OAuth2, uso de memória, tempo de atividade e conexões ativas.
Testes
Framework de testes abrangente baseado em Jest com:
- ✅ 46/46 ferramentas testadas - Todas as ferramentas MCP em 8 APIs
- ✅ Testes com Mock e API Real - Testes unitários com mocks + testes de integração com APIs ao vivo
- ✅ Teste individual de ferramentas - Executor de testes independente para desenvolvimento
# 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 🧪 Framework de Testes para documentação completa de testes.
Licença
Licença MIT - consulte o arquivo LICENSE para detalhes.
Contribuindo
- Faça um fork do repositório
- Crie um branch de funcionalidade
- Faça suas alterações
- Adicione testes para a nova funcionalidade
- Garanta que todos os testes passem:
npm test - Envie um pull request
Suporte
Recursos
- 📖 Documentação Completa - Documentação abrangente do projeto
- 📚 Wiki - Guias detalhados e solução de problemas
- 🐛 Issues - Relate bugs e solicite recursos
Recursos Externos
- 🔧 Documentação do Desenvolvedor Cisco - Documentação oficial da API
- 🔒 Documentação Cisco PSIRT - Documentação da API de vulnerabilidades de segurança
- 💬 Discussões de Serviços Cisco - Suporte da comunidade e discussões sobre a API
- 🌐 Protocolo MCP - Especificação do Model Context Protocol