UNPKG

@spaik/mcp-server-roi

Version:

MCP server for AI ROI prediction and tracking with Monte Carlo simulations

92 lines (79 loc) 2.25 kB
#!/usr/bin/env node /** * Health check script for Docker and monitoring systems * Exit codes: * 0 - Healthy * 1 - Unhealthy */ import { createClient } from '@supabase/supabase-js'; import dotenv from 'dotenv'; // Load environment variables dotenv.config(); async function checkHealth() { const checks = { environment: false, database: false, apis: false }; try { // Check 1: Environment variables console.log('Checking environment variables...'); if (process.env.SUPABASE_URL && process.env.SUPABASE_ANON_KEY) { checks.environment = true; console.log('✓ Environment variables configured'); } else { console.error('✗ Missing required environment variables'); return false; } // Check 2: Database connectivity console.log('Checking database connectivity...'); const supabase = createClient( process.env.SUPABASE_URL, process.env.SUPABASE_ANON_KEY, { auth: { persistSession: false, autoRefreshToken: false } } ); const { error } = await supabase .from('projects') .select('count') .limit(1); if (!error) { checks.database = true; console.log('✓ Database connection successful'); } else { console.error('✗ Database connection failed:', error.message); return false; } // Check 3: API keys configured console.log('Checking API configurations...'); if (process.env.PERPLEXITY_API_KEY) { checks.apis = true; console.log('✓ API keys configured'); } else { console.warn('⚠ Perplexity API key not configured (optional but recommended)'); checks.apis = true; // Not critical } // Overall health const isHealthy = Object.values(checks).every(check => check); if (isHealthy) { console.log('\n✓ Health check PASSED'); return true; } else { console.log('\n✗ Health check FAILED'); return false; } } catch (error) { console.error('Health check error:', error); return false; } } // Run health check checkHealth().then(isHealthy => { process.exit(isHealthy ? 0 : 1); }).catch(() => { process.exit(1); });