Skip to main content
Glama

Healthcare MCP Server

test-tools.js7.95 kB
#!/usr/bin/env node import { CacheService } from './cache-service.js'; import { FDATool } from './fda-tool.js'; import { PubMedTool } from './pubmed-tool.js'; import { HealthTopicsTool } from './health-topics-tool.js'; import { ClinicalTrialsTool } from './clinical-trials-tool.js'; import { MedicalTerminologyTool } from './medical-terminology-tool.js'; import { MedRxivTool } from './medrxiv-tool.js'; import { MedicalCalculatorTool } from './medical-calculator-tool.js'; import { NcbiBookshelfTool } from './ncbi-bookshelf-tool.js'; import { UsageService } from './usage-service.js'; async function testTools() { console.log('🧪 Testing Healthcare MCP Tools...\n'); try { // Test cache service console.log('1️⃣ Testing Cache Service...'); const cacheService = new CacheService(3600); console.log('✅ Cache service instantiated'); console.log(` Cache TTL: ${cacheService.cache.options.stdTTL} seconds`); // Test cache functionality cacheService.cache.set('test_key', 'test_value'); const cachedValue = cacheService.cache.get('test_key'); console.log(` Cache test: ${cachedValue === 'test_value' ? '✅ PASSED' : '❌ FAILED'}`); // Test usage service console.log('\n2️⃣ Testing Usage Service...'); const usageService = new UsageService(); console.log('✅ Usage service instantiated'); // Test usage tracking const sessionId = 'test-session-123'; usageService.recordUsage(sessionId, 'test_tool'); const sessionStats = usageService.getSessionUsage(sessionId); console.log(` Usage tracking test: ${sessionStats.total_calls === 1 ? '✅ PASSED' : '❌ FAILED'}`); // Test tool instantiation console.log('\n3️⃣ Testing Tool Instantiation...'); const fdaTool = new FDATool(cacheService); console.log('✅ FDA Tool instantiated'); console.log(` Has lookupDrug method: ${typeof fdaTool.lookupDrug === 'function' ? '✅' : '❌'}`); const pubmedTool = new PubMedTool(cacheService); console.log('✅ PubMed Tool instantiated'); console.log(` Has searchLiterature method: ${typeof pubmedTool.searchLiterature === 'function' ? '✅' : '❌'}`); // Test PubMed Tool with open access filter console.log('\nTesting PubMed Tool with open access filter...'); try { const pubmedResult = await pubmedTool.searchLiterature('covid', 1, '', true); console.log(` PubMed open access search test: ${pubmedResult.status === 'success' ? '✅ PASSED' : '❌ FAILED'}`); if (pubmedResult.status === 'success' && pubmedResult.data && pubmedResult.data.articles) { console.log(` Found ${pubmedResult.data.articles.length} open access articles`); if (pubmedResult.data.articles.length > 0) { console.log(` Example: ${pubmedResult.data.articles[0].title}`); } } } catch (error) { console.log(` PubMed open access search test: ❌ FAILED - ${error.message}`); } const healthTopicsTool = new HealthTopicsTool(cacheService); console.log('✅ Health Topics Tool instantiated'); console.log(` Has getHealthTopics method: ${typeof healthTopicsTool.getHealthTopics === 'function' ? '✅' : '❌'}`); const clinicalTrialsTool = new ClinicalTrialsTool(cacheService); console.log('✅ Clinical Trials Tool instantiated'); console.log(` Has searchTrials method: ${typeof clinicalTrialsTool.searchTrials === 'function' ? '✅' : '❌'}`); const medicalTerminologyTool = new MedicalTerminologyTool(cacheService); console.log('✅ Medical Terminology Tool instantiated'); console.log(` Has lookupICDCode method: ${typeof medicalTerminologyTool.lookupICDCode === 'function' ? '✅' : '❌'}`); const medrxivTool = new MedRxivTool(cacheService); console.log('✅ medRxiv Tool instantiated'); console.log(` Has search method: ${typeof medrxivTool.search === 'function' ? '✅' : '❌'}`); const medicalCalculatorTool = new MedicalCalculatorTool(cacheService); console.log('✅ Medical Calculator Tool instantiated'); console.log(` Has calculateBmi method: ${typeof medicalCalculatorTool.calculateBmi === 'function' ? '✅' : '❌'}`); const ncbiBookshelfTool = new NcbiBookshelfTool(cacheService); console.log('✅ NCBI Bookshelf Tool instantiated'); console.log(` Has search method: ${typeof ncbiBookshelfTool.search === 'function' ? '✅' : '❌'}`); console.log('\n🎉 All tools instantiated successfully!'); console.log('\n4️⃣ Testing Tool APIs (with mocked/demo data)...'); // Test Medical Terminology Tool (doesn't require external API) console.log('\nTesting Medical Terminology Tool...'); try { const icdResult = await medicalTerminologyTool.lookupICDCode('E11', null, 3); console.log(` ICD lookup test: ${icdResult.status === 'success' ? '✅ PASSED' : '❌ FAILED'}`); if (icdResult.status === 'success' && icdResult.data && icdResult.data.codes) { console.log(` Found ${icdResult.data.codes.length} ICD codes`); if (icdResult.data.codes.length > 0) { console.log(` Example: ${icdResult.data.codes[0].code} - ${icdResult.data.codes[0].description}`); } } } catch (error) { console.log(` ICD lookup test: ❌ FAILED - ${error.message}`); } // Test Usage Service stats console.log('\nTesting Usage Service stats...'); const allStats = usageService.getAllUsageStats(); console.log(` All stats test: ${typeof allStats === 'object' ? '✅ PASSED' : '❌ FAILED'}`); console.log(` Total sessions: ${allStats.total_sessions || 0}`); // Test medRxiv Tool console.log('\nTesting medRxiv Tool...'); try { const medrxivResult = await medrxivTool.search('covid', 1); console.log(` medRxiv search test: ${medrxivResult.status === 'success' ? '✅ PASSED' : '❌ FAILED'}`); if (medrxivResult.status === 'success' && medrxivResult.data && medrxivResult.data.articles) { console.log(` Found ${medrxivResult.data.articles.length} articles`); if (medrxivResult.data.articles.length > 0) { console.log(` Example: ${medrxivResult.data.articles[0].title}`); } } } catch (error) { console.log(` medRxiv search test: ❌ FAILED - ${error.message}`); } // Test Medical Calculator Tool console.log('\nTesting Medical Calculator Tool...'); try { const bmiResult = medicalCalculatorTool.calculateBmi(1.8, 80); console.log(` BMI calculation test: ${bmiResult.status === 'success' ? '✅ PASSED' : '❌ FAILED'}`); if (bmiResult.status === 'success' && bmiResult.data) { console.log(` Calculated BMI: ${bmiResult.data.bmi}`); } } catch (error) { console.log(` BMI calculation test: ❌ FAILED - ${error.message}`); } // Test NCBI Bookshelf Tool console.log('\nTesting NCBI Bookshelf Tool...'); try { const bookshelfResult = await ncbiBookshelfTool.search('cancer', 1); console.log(` NCBI Bookshelf search test: ${bookshelfResult.status === 'success' ? '✅ PASSED' : '❌ FAILED'}`); if (bookshelfResult.status === 'success' && bookshelfResult.data && bookshelfResult.data.books) { console.log(` Found ${bookshelfResult.data.books.length} books`); if (bookshelfResult.data.books.length > 0) { console.log(` Example: ${bookshelfResult.data.books[0].title}`); } } } catch (error) { console.log(` NCBI Bookshelf search test: ❌ FAILED - ${error.message}`); } console.log('\n✅ All basic tests completed successfully!'); console.log('\n📝 Note: Full API tests require internet connectivity and valid API endpoints.'); } catch (error) { console.error('❌ Test failed:', error.message); console.error('Stack trace:', error.stack); process.exit(1); } } testTools();

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/Cicatriiz/healthcare-mcp-public'

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