UNPKG

@edicarlos.lds/businessmap-mcp

Version:

Model Context Protocol server for BusinessMap (Kanbanize) integration

81 lines â€ĸ 2.53 kB
/** * Logger utility for MCP servers * * MCP servers MUST use STDERR for all logging to avoid corrupting * the JSON-RPC protocol which uses STDOUT exclusively. * * This logger provides different log levels while ensuring all output * goes to STDERR (process.stderr.write or console.error). */ export var LogLevel; (function (LogLevel) { LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG"; LogLevel[LogLevel["INFO"] = 1] = "INFO"; LogLevel[LogLevel["WARN"] = 2] = "WARN"; LogLevel[LogLevel["ERROR"] = 3] = "ERROR"; LogLevel[LogLevel["NONE"] = 4] = "NONE"; })(LogLevel || (LogLevel = {})); class Logger { currentLevel; constructor(level = LogLevel.INFO) { this.currentLevel = level; } setLevel(level) { this.currentLevel = level; } /** * Debug messages for development and troubleshooting */ debug(message, ...args) { if (this.currentLevel <= LogLevel.DEBUG) { this.log('🔍 DEBUG', message, ...args); } } /** * Informational messages (successful operations, status updates) */ info(message, ...args) { if (this.currentLevel <= LogLevel.INFO) { this.log('â„šī¸ INFO', message, ...args); } } /** * Warning messages (non-critical issues, fallbacks) */ warn(message, ...args) { if (this.currentLevel <= LogLevel.WARN) { this.log('âš ī¸ WARN', message, ...args); } } /** * Error messages (failures, exceptions) */ error(message, ...args) { if (this.currentLevel <= LogLevel.ERROR) { this.log('❌ ERROR', message, ...args); } } /** * Success messages (operations completed successfully) */ success(message, ...args) { if (this.currentLevel <= LogLevel.INFO) { this.log('✅ SUCCESS', message, ...args); } } log(prefix, message, ...args) { // CRITICAL: Always use STDERR for MCP servers // STDOUT is reserved for JSON-RPC protocol only const timestamp = new Date().toISOString(); const formattedMessage = `[${timestamp}] ${prefix}: ${message}`; if (args.length > 0) { console.error(formattedMessage, ...args); } else { console.error(formattedMessage); } } } // Export singleton instance export const logger = new Logger(process.env.LOG_LEVEL ? Number.parseInt(process.env.LOG_LEVEL) : LogLevel.INFO); //# sourceMappingURL=logger.js.map