UNPKG

@siva-sub/mcp-public-transport

Version:

A Model Context Protocol server for Singapore transport data with real-time information and routing

52 lines (51 loc) 1.37 kB
class Logger { logLevel; constructor() { this.logLevel = process.env.LOG_LEVEL || 'info'; } shouldLog(level) { const levels = { debug: 0, info: 1, warn: 2, error: 3, }; return levels[level] >= levels[this.logLevel]; } formatMessage(level, message, meta) { const entry = { timestamp: new Date().toISOString(), level, message, meta, }; return JSON.stringify(entry); } log(level, message, meta) { if (!this.shouldLog(level)) return; const formatted = this.formatMessage(level, message, meta); // Always use stderr to avoid interfering with MCP JSON-RPC on stdout process.stderr.write(formatted + '\n'); } debug(message, meta) { this.log('debug', message, meta); } info(message, meta) { this.log('info', message, meta); } warn(message, meta) { this.log('warn', message, meta); } error(message, error) { const meta = error instanceof Error ? { message: error.message, stack: error.stack, name: error.name } : error; this.log('error', message, meta); } } export const logger = new Logger();