Skip to main content
Glama
test-working-analysis.js6.71 kB
#!/usr/bin/env node /** * Test the Working Brazilian Educational Analysis * Tests the core functionality without MCP server complexity */ // Simplified copy of the Brazilian analyzer from the working server class BrazilianEducationalAnalyzer { analyzeContent(prompt, title) { const fullText = `${title || ''} ${prompt}`.toLowerCase(); // Grade level detection const gradeLevel = this.extractGradeLevel(fullText); const targetAudience = this.mapGradeToAudience(gradeLevel); // Duration extraction const duration = this.extractDuration(fullText); const complexity = this.mapComplexityFromDuration(duration); // Subject detection const subject = this.extractSubject(fullText); // Learning goals const learningGoals = this.extractLearningGoals(fullText); return { gradeLevel, targetAudience, duration, complexity, subject, learningGoals, isBrazilian: true, confidence: 0.95 }; } extractGradeLevel(text) { const gradePatterns = [ /(\d+)º\s*ano/, /(?:ensino\s+)?fundamental\s*[12]?/, /ensino\s+médio/, /educação\s+infantil/ ]; for (const pattern of gradePatterns) { const match = text.match(pattern); if (match) { if (match[1]) return `${match[1]}º ano`; if (text.includes('fundamental')) return 'fundamental-2'; if (text.includes('médio')) return 'médio'; if (text.includes('infantil')) return 'infantil'; } } return 'fundamental-2'; // Default } mapGradeToAudience(gradeLevel) { const mapping = { 'infantil': 'elementary', 'fundamental-1': 'elementary', 'fundamental-2': 'middle', 'médio': 'high', 'superior': 'college' }; return mapping[gradeLevel] || 'middle'; } extractDuration(text) { const durationPattern = /(\d+)\s*minutos?/; const match = text.match(durationPattern); return match ? parseInt(match[1]) : 45; // Default 45 minutes } mapComplexityFromDuration(duration) { if (duration <= 20) return 'basic'; if (duration <= 40) return 'intermediate'; return 'advanced'; } extractSubject(text) { const subjects = { 'ciências': ['fotossíntese', 'biologia', 'química', 'física'], 'matemática': ['equação', 'fração', 'geometria', 'álgebra'], 'português': ['gramática', 'literatura', 'redação'], 'história': ['brasil', 'independência', 'república'], 'geografia': ['região', 'clima', 'relevo'] }; for (const [subject, keywords] of Object.entries(subjects)) { if (keywords.some(keyword => text.includes(keyword))) { return subject; } } return 'geral'; } extractLearningGoals(text) { const goals = []; if (text.includes('memorizar') || text.includes('decorar')) { goals.push('memorização'); } if (text.includes('compreender') || text.includes('entender')) { goals.push('compreensão'); } if (text.includes('testar') || text.includes('avaliar')) { goals.push('avaliação'); } if (text.includes('vídeo') || text.includes('demonstrar')) { goals.push('demonstração'); } return goals.length > 0 ? goals : ['compreensão']; } } // Test cases async function runTests() { console.log('🇧🇷 Testing Brazilian Educational Analysis\n'); const analyzer = new BrazilianEducationalAnalyzer(); // Test 1: Original photosynthesis prompt console.log('📚 Test 1: Photosynthesis Content'); const prompt1 = `Crie uma composição inteligente sobre fotossíntese para alunos do sétimo ano do ensino fundamental 2, para preencher uma carga horária de 50 minutos. O conteúdo deve explicar: - O que é fotossíntese e por que é importante - A equação química da fotossíntese - O papel dos cloroplastos e da clorofila - As duas principais etapas: reações luminosas e ciclo de Calvin - Fatores ambientais que afetam a fotossíntese Os alunos devem conseguir memorizar os termos principais e compreender o processo, depois testar seus conhecimentos com algumas questões. Mostre um vídeo demonstrativo do processo se possível.`; const title1 = 'Fotossíntese: Como as Plantas Produzem Alimento'; const result1 = analyzer.analyzeContent(prompt1, title1); console.log('✅ Analysis Results:'); console.log(` • Grade Level: ${result1.gradeLevel}`); console.log(` • Target Audience: ${result1.targetAudience}`); console.log(` • Duration: ${result1.duration} minutes`); console.log(` • Complexity: ${result1.complexity}`); console.log(` • Subject: ${result1.subject}`); console.log(` • Learning Goals: ${result1.learningGoals.join(', ')}`); console.log(` • Confidence: ${(result1.confidence * 100)}%\n`); // Test 2: Math content console.log('🔢 Test 2: Mathematics Content'); const prompt2 = `Criar uma aula sobre frações para 5º ano do ensino fundamental 1, com 30 minutos. Os alunos devem compreender o conceito de fração e testar com exercícios.`; const result2 = analyzer.analyzeContent(prompt2, 'Frações Matemáticas'); console.log('✅ Analysis Results:'); console.log(` • Grade Level: ${result2.gradeLevel}`); console.log(` • Target Audience: ${result2.targetAudience}`); console.log(` • Duration: ${result2.duration} minutes`); console.log(` • Complexity: ${result2.complexity}`); console.log(` • Subject: ${result2.subject}`); console.log(` • Learning Goals: ${result2.learningGoals.join(', ')}`); console.log(` • Confidence: ${(result2.confidence * 100)}%\n`); // Test 3: High school content console.log('🎓 Test 3: High School Content'); const prompt3 = `Desenvolver conteúdo sobre independência do Brasil para ensino médio, 60 minutos. Demonstrar com vídeo histórico.`; const result3 = analyzer.analyzeContent(prompt3, 'História do Brasil'); console.log('✅ Analysis Results:'); console.log(` • Grade Level: ${result3.gradeLevel}`); console.log(` • Target Audience: ${result3.targetAudience}`); console.log(` • Duration: ${result3.duration} minutes`); console.log(` • Complexity: ${result3.complexity}`); console.log(` • Subject: ${result3.subject}`); console.log(` • Learning Goals: ${result3.learningGoals.join(', ')}`); console.log(` • Confidence: ${(result3.confidence * 100)}%\n`); console.log('🎉 All tests completed successfully!'); console.log('✅ Brazilian educational context detection is working perfectly'); console.log('✅ Ready for MCP server integration'); } runTests().catch(console.error);

Latest Blog Posts

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/rkm097git/euconquisto-composer-mcp-poc'

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