Skip to main content
Glama

Kommo CRM MCP Server

test_10_runner.cjs5.5 kB
const testQuestions = require('./test_10_questions.cjs'); async function testServer() { const results = []; const startTime = Date.now(); console.log('🚀 Iniciando teste com 10 perguntas diferentes...\n'); for (let i = 0; i < testQuestions.length; i++) { const question = testQuestions[i]; const questionStartTime = Date.now(); console.log(`📝 Pergunta ${i + 1}/10: "${question}"`); try { const response = await fetch('http://localhost:3001/mcp', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ jsonrpc: '2.0', id: i + 1, method: 'tools/call', params: { name: 'ask_kommo', arguments: { question } } }) }); const responseText = await response.text(); const questionEndTime = Date.now(); const responseTime = (questionEndTime - questionStartTime) / 1000; // Parse Server-Sent Events format let data; if (responseText.startsWith('data: ')) { const jsonPart = responseText.substring(6); // Remove 'data: ' prefix data = JSON.parse(jsonPart); } else { data = JSON.parse(responseText); } if (data.result && data.result.content && data.result.content[0]) { const responseTextContent = data.result.content[0].text; const parsedResponse = JSON.parse(responseTextContent); const result = { question: question, success: true, responseTime: responseTime, metadata: parsedResponse.agent_response?.metadata || {}, cacheHit: parsedResponse.agent_response?.metadata?.cache_hit || false, temporalFilter: parsedResponse.agent_response?.metadata?.temporal_filter, categoryFilter: parsedResponse.agent_response?.metadata?.category_filter, totalLeads: parsedResponse.agent_response?.metadata?.total_leads_analyzed, performanceMetrics: parsedResponse.agent_response?.metadata?.performance_metrics }; results.push(result); console.log(`✅ Sucesso em ${responseTime.toFixed(2)}s`); console.log(` 📊 Leads analisados: ${result.totalLeads}`); console.log(` ⏰ Filtro temporal: ${result.temporalFilter || 'Nenhum'}`); console.log(` 🏷️ Filtro categoria: ${result.categoryFilter || 'Nenhum'}`); console.log(` 💾 Cache hit: ${result.cacheHit ? 'Sim' : 'Não'}`); if (result.performanceMetrics) { console.log(` 📈 Taxa cache: ${result.performanceMetrics.cache_hit_rate}`); console.log(` ⚡ Tempo médio: ${result.performanceMetrics.average_response_time}`); } console.log(''); } else { console.log(`❌ Erro na resposta: ${JSON.stringify(data)}`); results.push({ question: question, success: false, responseTime: responseTime, error: data.error || 'Resposta inválida' }); } } catch (error) { const questionEndTime = Date.now(); const responseTime = (questionEndTime - questionStartTime) / 1000; console.log(`❌ Erro: ${error.message}`); results.push({ question: question, success: false, responseTime: responseTime, error: error.message }); } // Pequena pausa entre perguntas await new Promise(resolve => setTimeout(resolve, 1000)); } const totalTime = (Date.now() - startTime) / 1000; const successfulTests = results.filter(r => r.success).length; const failedTests = results.filter(r => !r.success).length; console.log('📊 RESUMO DO TESTE:'); console.log(`⏱️ Tempo total: ${totalTime.toFixed(2)}s`); console.log(`✅ Sucessos: ${successfulTests}/10`); console.log(`❌ Falhas: ${failedTests}/10`); console.log(`📈 Taxa de sucesso: ${(successfulTests/10*100).toFixed(1)}%`); if (successfulTests > 0) { const avgResponseTime = results.filter(r => r.success).reduce((sum, r) => sum + r.responseTime, 0) / successfulTests; console.log(`⚡ Tempo médio de resposta: ${avgResponseTime.toFixed(2)}s`); const cacheHits = results.filter(r => r.success && r.cacheHit).length; console.log(`💾 Cache hits: ${cacheHits}/${successfulTests} (${(cacheHits/successfulTests*100).toFixed(1)}%)`); const temporalDetections = results.filter(r => r.success && r.temporalFilter).length; console.log(`📅 Detecções temporais: ${temporalDetections}/${successfulTests} (${(temporalDetections/successfulTests*100).toFixed(1)}%)`); const categoryDetections = results.filter(r => r.success && r.categoryFilter).length; console.log(`🏷️ Detecções de categoria: ${categoryDetections}/${successfulTests} (${(categoryDetections/successfulTests*100).toFixed(1)}%)`); } // Salvar resultados detalhados const fs = require('fs'); fs.writeFileSync('test_10_results.json', JSON.stringify({ summary: { total: 10, successful: successfulTests, failed: failedTests, duration: totalTime, avgTimePerQuestion: successfulTests > 0 ? results.filter(r => r.success).reduce((sum, r) => sum + r.responseTime, 0) / successfulTests : 0 }, results: results }, null, 2)); console.log('\n💾 Resultados salvos em test_10_results.json'); } testServer().catch(console.error);

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/Miguelgbastos/Kommo-MCP'

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