Skip to main content
Glama

MCP WPPConnect Server

by jeffmetricas
TROUBLESHOOTING.md14.6 kB
# Guia de Troubleshooting - MCP WPPConnect Server Este guia fornece soluções para problemas comuns encontrados durante a instalação, configuração e uso do MCP WPPConnect Server. ## 📋 Índice 1. [Erros de Instalação](#erros-de-instalação) 2. [Erros de Build](#erros-de-build) 3. [Erros de Execução](#erros-de-execução) 4. [Erros de Conexão WhatsApp](#erros-de-conexão-whatsapp) 5. [Erros de Sessão](#erros-de-sessão) 6. [Erros de Mensagens](#erros-de-mensagens) 7. [Erros de Grupos/Comunidades](#erros-de-gruposcomunidades) 8. [Erros de Claude Desktop](#erros-de-claude-desktop) 9. [Erros de Performance](#erros-de-performance) 10. [Problemas de Token/Segurança](#problemas-de-tokensegurança) 11. [Logs e Debugging](#logs-e-debugging) 12. [Problemas Conhecidos](#problemas-conhecidos) --- ## 🔧 Erros de Instalação ### Erro: "npm install falha com erros de dependência" **Sintoma:** ``` npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree ``` **Solução:** ```bash # Limpar cache do npm npm cache clean --force # Deletar node_modules e package-lock.json rm -rf node_modules package-lock.json # Instalar com flag --legacy-peer-deps npm install --legacy-peer-deps ``` ### Erro: "node-gyp rebuild falha" **Sintoma:** ``` gyp ERR! build error ``` **Solução:** ```bash # Ubuntu/Debian sudo apt-get install build-essential python3 # macOS xcode-select --install # Windows (como administrador) npm install --global windows-build-tools ``` ### Erro: "ERESOLVE unable to resolve dependency tree" **Solução:** ```bash # Verificar versão do Node.js (precisa ser 18+) node --version # Atualizar npm npm install -g npm@latest # Instalar com flag --force npm install --force ``` --- ## 🔨 Erros de Build ### Erro: "TypeScript compilation errors" **Sintoma:** ``` src/index.ts:160:9 - error TS2345: Argument of type 'Record<string, unknown>' is not assignable to parameter of type 'never'. ``` **Solução:** ```bash # Limpar build anterior rm -rf build/ # Verificar tsconfig.json cat tsconfig.json # Build com verbose npm run build -- --verbose # Se persistir, verificar tipos no código npm run build 2>&1 | grep "error TS" ``` ### Erro: "Cannot find module" após build **Solução:** ```bash # Verificar se build foi completo ls -la build/ # Verificar imports (precisam ter extensão .js) grep -r "from.*\.ts" build/ || echo "OK: No .ts imports found" # Rebuild npm run build ``` --- ## ⚡ Erros de Execução ### Erro: "server does not support tools" **Sintoma:** ``` Error: server does not support tools at Client._onresponse (node_modules/@modelcontextprotocol/sdk/src/client/index.ts:270:23) ``` **Solução:** ```typescript // Em src/index.ts, adicionar capabilities ao servidor const server = new Server( { name: "mcp-wppconnect-server", version: "0.1.0", }, { capabilities: { tools: {}, // ADICIONE ESTA LINHA }, } ); ``` ### Erro: "Cannot read property 'getClient' of undefined" **Solução:** ```typescript // Verificar se SessionManager está importado corretamente import { SessionManager } from "./utils/sessionManager.js"; // Verificar instância const sessionManager = SessionManager.getInstance(); ``` ### Erro: "ToolResponse type mismatch" **Sintoma:** ``` Type 'ToolResponse' is not assignable to type '{ ok: boolean; error?: string; }' ``` **Solução:** ```typescript // Verificar interface ToolResponse em types/index.ts export interface ToolResponse { ok: boolean; error?: string; data?: any; } // Usar consistentemente return { ok: false, error: "Mensagem de erro" }; ``` --- ## 📱 Erros de Conexão WhatsApp ### Erro: "QR Code não é gerado" **Sintoma:** - `get_qr_snapshot` retorna vazio - Nenhum QR code aparece **Solução:** ```bash # Verificar logs DEBUG=mcp-wppconnect:* npm run dev # Verificar sessão anterior ls -la ~/.mcp-wppconnect/tokens/ # Limpar sessão corrompida rm -rf ~/.mcp-wppconnect/tokens/<sessionId>.json # Reiniciar servidor npm run dev ``` ### Erro: "Autenticação falha após scan QR" **Solução:** ```bash # Verificar conexão de internet ping google.com # Verificar se número está bloqueado no WhatsApp # (tentar scan com outro número) # Limpar todos os tokens rm -rf ~/.mcp-wppconnect/tokens/* # Verificar versão do WPPConnect npm list @wppconnect-team/wppconnect ``` ### Erro: "Client not authenticated" **Solução:** ```typescript // Antes de usar cliente, verificar autenticação const client = await sessionManager.getClient(sessionId); if (!client) { return { ok: false, error: "Session not found" }; } // Verificar se está autenticado try { const me = await client.getMe(); if (!me) { return { ok: false, error: "Client not authenticated" }; } } catch (error) { return { ok: false, error: "Failed to verify authentication" }; } ``` --- ## 🔑 Erros de Sessão ### Erro: "Session ID inválido" **Solução:** ```typescript // Validar sessionId (deve ser UUID v4) const { v4: uuidv4 } = require('uuid'); function isValidSessionId(sessionId) { const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; return uuidRegex.test(sessionId); } ``` ### Erro: "Máximo de sessões atingido" **Solução:** ```bash # Verificar sessões ativas DEBUG=mcp-wppconnect:* npm run dev # Aumentar limite em src/utils/sessionManager.ts private readonly MAX_SESSIONS = 20; // Aumentar de 10 para 20 # Ou configurar via variável de ambiente export MAX_SESSIONS=20 ``` ### Erro: "Sessão expirando frequentemente" **Solução:** ```bash # Verificar timeout de sessão # Em src/utils/sessionManager.ts, ajustar: private readonly SESSION_TIMEOUT = 48 * 60 * 60 * 1000; // 48 horas # Verificar se há limpeza automática desnecessária # Desabilitar limpeza para debug ``` --- ## 💬 Erros de Mensagens ### Erro: "Número de telefone inválido" **Solução:** ```typescript // Validar formato do número function validatePhoneNumber(phone) { // Remove tudo que não é dígito const cleaned = phone.replace(/\D/g, ''); // Verificar se tem entre 10-15 dígitos if (cleaned.length < 10 || cleaned.length > 15) { return false; } // Adicionar código do país se necessário if (cleaned.length === 10) { return '55' + cleaned; // Exemplo para Brasil } return cleaned; } ``` ### Erro: "Mensagem não enviada - timeout" **Solução:** ```bash # Verificar conexão de internet ping google.com # Verificar se WhatsApp Web está funcionando # Abrir https://web.whatsapp.com no navegador # Aumentar timeout # Em src/tools/messageTools.ts: const timeout = 30000; // 30 segundos ``` ### Erro: "Contato não encontrado" **Solução:** ```typescript // Verificar se contato existe na lista const contacts = await client.getContacts(); const contact = contacts.find(c => c.number === phoneNumber); if (!contact) { // Tentar enviar mesmo assim (WhatsApp busca automaticamente) try { await client.sendText(phoneNumber + '@c.us', message); } catch (error) { return { ok: false, error: "Contact not found or invalid" }; } } ``` --- ## 👥 Erros de Grupos/Comunidades ### Erro: "Group ID inválido" **Solução:** ```typescript // Validar formato do Group ID function isValidGroupId(groupId) { // WhatsApp group IDs terminam com @g.us return groupId.endsWith('@g.us') || groupId.length >= 20; } // Buscar grupos se ID não for fornecido const chats = await client.getAllChats(); const groups = chats.filter(chat => chat.isGroup); ``` ### Erro: "Participante não encontrado no grupo" **Solução:** ```typescript // Verificar participantes antes de promover/demover const participants = await client.getGroupParticipants(groupId); const participant = participants.find(p => p.id === participantId); if (!participant) { return { ok: false, error: "Participant not found in group" }; } // Verificar se já é admin const isAdmin = participant.isAdmin || participant.isSuperAdmin; ``` ### Erro: "Community não encontrada" **Solução:** ```typescript // Comunidades terminam com @newsletter function isValidCommunityId(communityId) { return communityId.endsWith('@newsletter') || communityId.length >= 25; } // Listar comunidades disponíveis const communities = await client.getCommunities(); ``` --- ## 🤖 Erros de Claude Desktop ### Erro: "Server not responding in Claude Desktop" **Solução:** ```bash # Verificar configuração do Claude Desktop # Arquivo: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) # ou %APPDATA%\Claude\claude_desktop_config.json (Windows) # Verificar se caminho está correto { "mcpServers": { "mcp-wppconnect-server": { "command": "node", "args": ["/caminho/completo/para/build/index.js"] } } } # Verificar permissões do arquivo ls -la /caminho/completo/para/build/index.js # Testar comando manualmente node /caminho/completo/para/build/index.js ``` ### Erro: "Tools não aparecem no Claude Desktop" **Solução:** ```bash # Verificar se servidor está rodando com capacidades DEBUG=mcp-wppconnect:* node build/index.js # Verificar se tools estão registradas # No código, verificar se tools array tem os tool objects # Reiniciar Claude Desktop após mudanças # Fechar completamente e reabrir ``` ### Erro: "Timeout ao chamar ferramentas" **Solução:** ```bash # Verificar logs do servidor DEBUG=mcp-wppconnect:* npm run dev # Aumentar timeout do MCP # Verificar documentação do SDK para timeout configuration # Verificar se operação WhatsApp está lenta # Testar manualmente no código ``` --- ## ⚡ Erros de Performance ### Erro: "Alta utilização de CPU/Memória" **Solução:** ```bash # Verificar uso de recursos pm2 monit # Limitar número de sessões export MAX_SESSIONS=5 # Implementar rate limiting # Adicionar delays entre operações # Verificar memory leaks node --inspect build/index.js ``` ### Erro: "Servidor lento para responder" **Solução:** ```bash # Verificar número de sessões ativas debug=mcp-wppconnect:* npm run dev # Implementar caching // Para getContacts, getChats, etc. const cache = new Map(); const CACHE_TTL = 5 * 60 * 1000; // 5 minutos # Otimizar queries WhatsApp // Buscar apenas dados necessários // Usar filtros quando disponíveis ``` ### Erro: "Vazamento de memória (Memory Leak)" **Solução:** ```typescript // Implementar cleanup adequado class SessionManager { private cleanupInterval: NodeJS.Timeout; constructor() { // Limpar sessões inativas a cada 30 minutos this.cleanupInterval = setInterval(() => { this.cleanupInactiveSessions(); }, 30 * 60 * 1000); } private cleanupInactiveSessions() { for (const [sessionId, client] of this._sessionMap.entries()) { if (this.isSessionInactive(sessionId)) { this.closeSession(sessionId); } } } } ``` --- ## 🔒 Problemas de Token/Segurança ### Erro: "Token não salvo/apagado" **Solução:** ```bash # Verificar permissões do diretório ls -la ~/.mcp-wppconnect/tokens/ # Criar diretório se necessário mkdir -p ~/.mcp-wppconnect/tokens chmod 700 ~/.mcp-wppconnect/tokens # Verificar espaço em disco df -h ``` ### Erro: "Token corrompido" **Solução:** ```bash # Remover token corrompido rm ~/.mcp-wppconnect/tokens/<sessionId>.json # Reinicializar sessão # Chamar initialize_session novamente ``` ### Erro: "Erro de criptografia (se implementado)" **Solução:** ```bash # Verificar chave de criptografia # Verificar se arquivo está corrompido # Restaurar de backup se disponível ``` --- ## 📝 Logs e Debugging ### Habilitar Debug Completo ```bash # Habilitar todos os logs de debug DEBUG=mcp-wppconnect:* npm run dev # Logs específicos DEBUG=mcp-wppconnect:session* npm run dev DEBUG=mcp-wppconnect:message* npm run dev DEBUG=mcp-wppconnect:error* npm run dev ``` ### Verificar Logs do Sistema ```bash # Logs PM2 pm2 logs mcp-wppconnect-server --lines 100 # Logs systemd (se usando) journalctl -u mcp-wppconnect -f # Logs de erro recentes tail -f logs/error.log ``` ### Criar Debug Script ```bash #!/bin/bash # debug.sh echo "=== MCP WPPConnect Debug Info ===" echo "Date: $(date)" echo "Node Version: $(node --version)" echo "NPM Version: $(npm --version)" echo "" echo "=== Process Status ===" pm2 status echo "" echo "=== Recent Errors ===" pm2 logs mcp-wppconnect-server --lines 20 | grep -i error echo "" echo "=== Disk Usage ===" df -h echo "" echo "=== Memory Usage ===" free -h echo "" echo "=== Token Files ===" ls -la ~/.mcp-wppconnect/tokens/ 2>/dev/null || echo "No token directory found" ``` --- ## ⚠️ Problemas Conhecidos ### 1. WPPConnect Limitações - **Problema**: Nem todos os métodos do WhatsApp estão disponíveis - **Solução**: Verificar [documentação WPPConnect](https://wppconnect.io/swagger/wppconnect-server/) para métodos suportados ### 2. WhatsApp Web Bloqueios - **Problema**: WhatsApp pode bloquear números por uso excessivo - **Solução**: - Implementar rate limiting - Usar intervalos entre mensagens - Evitar spam ### 3. Limite de Sessões - **Problema**: WhatsApp limita número de dispositivos - **Solução**: - Usar no máximo 4 dispositivos por número - Implementar fila de sessões ### 4. Atualizações do WhatsApp - **Problema**: WhatsApp atualiza frequentemente, quebrando integrações - **Solução**: - Manter WPPConnect atualizado - Testar após atualizações - Ter plano de rollback ### 5. MCP SDK Mudanças - **Problema**: SDK pode mudar interface - **Solução**: - Fixar versões no package.json - Testar antes de atualizar - Seguir changelog do MCP --- ## 🆘 Obtendo Ajuda ### Informações Necessárias Ao reportar um problema, inclua: 1. **Versões**: ```bash node --version npm --version npm list @wppconnect-team/wppconnect npm list @modelcontextprotocol/sdk ``` 2. **Logs de erro completos** 3. **Passos para reproduzir** 4. **Configuração do ambiente** 5. **Sistema operacional** ### Canais de Suporte 1. **GitHub Issues**: Reportar bugs 2. **Documentação**: Verificar README.md 3. **Logs**: Analisar mensagens de erro 4. **Comunidade**: Fóruns e grupos --- ## 📚 Referências Úteis - [WPPConnect Documentation](https://wppconnect.io/) - [MCP SDK Documentation](https://github.com/modelcontextprotocol/typescript-sdk) - [Node.js Debugging Guide](https://nodejs.org/en/docs/guides/debugging-getting-started/) - [PM2 Troubleshooting](https://pm2.keymetrics.io/docs/usage/quick-start/#troubleshooting)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jeffmetricas/mcp-wppconnect-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server