#!/usr/bin/env node /** * Simple HTTP server with startup banner */ import express from 'express'; import cors from 'cors'; // Set environment variables if not set process.env.LARAVEL_API_BASE_URL = process.env.LARAVEL_API_BASE_URL || 'https://example.com'; console.log('๐Ÿš€ Starting Laravel Healthcare MCP HTTP Server...'); try { const app = express(); const port = process.env.MCP_SERVER_PORT || 3000; const host = process.env.MCP_SERVER_HOST || '0.0.0.0'; console.log('๐Ÿ“‹ Step 1: Setting up middleware...'); // Basic middleware app.use(cors()); app.use(express.json()); console.log('๐Ÿ“‹ Step 2: Setting up routes...'); // Health endpoint app.get('/health', (req, res) => { res.json({ status: 'healthy', timestamp: new Date().toISOString(), server: 'Laravel Healthcare MCP Server', port: port, host: host, apiUrl: process.env.LARAVEL_API_BASE_URL }); }); // Tools endpoint app.get('/tools', (req, res) => { res.json({ message: 'Laravel Healthcare MCP Server Tools', total: 26, publicTools: 21, providerTools: 5, note: 'Use POST /tools/{toolName}/execute to run tools' }); }); // Stats endpoint app.get('/stats', (req, res) => { res.json({ server: { name: 'Laravel Healthcare MCP Server', version: '1.0.0', uptime: process.uptime(), memory: process.memoryUsage() }, tools: { total: 26, categories: { 'public': 21, 'provider': 5 } }, config: { port: port, host: host, apiUrl: process.env.LARAVEL_API_BASE_URL } }); }); console.log('๐Ÿ“‹ Step 3: Starting HTTP server...'); // Start server const server = app.listen(port, host, () => { const serverUrl = `http://${host === '0.0.0.0' ? 'localhost' : host}:${port}`; // Startup banner console.log('\n' + '='.repeat(60)); console.log('๐Ÿš€ LARAVEL HEALTHCARE MCP SERVER - HTTP MODE'); console.log('='.repeat(60)); console.log(`๐Ÿ“ก Server URL: ${serverUrl}`); console.log(`๐ŸŒ Host: ${host}`); console.log(`๐Ÿ”Œ Port: ${port}`); console.log(`๐Ÿ”— API URL: ${process.env.LARAVEL_API_BASE_URL}`); console.log('='.repeat(60)); console.log('๐Ÿ“‹ Available Endpoints:'); console.log(` โ€ข Health Check: ${serverUrl}/health`); console.log(` โ€ข Tools List: ${serverUrl}/tools`); console.log(` โ€ข Server Stats: ${serverUrl}/stats`); console.log('='.repeat(60)); console.log('๐Ÿ“Š Server Status: READY'); console.log(`โฐ Started at: ${new Date().toLocaleString()}`); console.log('='.repeat(60)); console.log('๐Ÿ’ก Press Ctrl+C to stop the server'); console.log(''); console.log('๐Ÿงช Test the server:'); console.log(` curl ${serverUrl}/health`); console.log(` curl ${serverUrl}/tools`); console.log(` curl ${serverUrl}/stats`); console.log(''); }); // Graceful shutdown const shutdown = (signal) => { console.log(`\n๐Ÿ›‘ Received ${signal}, shutting down HTTP server...`); server.close(() => { console.log('โœ… HTTP server stopped'); process.exit(0); }); }; process.on('SIGINT', () => shutdown('SIGINT')); process.on('SIGTERM', () => shutdown('SIGTERM')); } catch (error) { console.error('โŒ HTTP Server startup failed:', error.message); console.error('Stack trace:', error.stack); process.exit(1); }