blah-mcp

  • mcp-test-client
import winston from 'winston'; import chalk from 'chalk'; import Table from 'cli-table3'; import util from 'util'; const customLevels = { levels: { error: 0, warn: 1, info: 2, debug: 3, }, colors: { error: 'red', warn: 'yellow', info: 'cyan', debug: 'gray' } }; const customFormat = winston.format.printf(({ level, message, timestamp, data }) => { const prefix = chalk.bold(`[${timestamp}] ${level.toUpperCase()}`); if (!data) { return `${prefix} ${message}`; } if (Array.isArray(data)) { const table = new Table({ head: ['Index', 'Value'], style: { head: ['cyan'] } }); data.forEach((item, index) => { table.push([index, util.inspect(item, { depth: 5, colors: true })]); }); return `${prefix} ${message}\n${table.toString()}`; } if (typeof data === 'object') { const table = new Table({ style: { head: ['cyan'] } }); Object.entries(data).forEach(([key, value]) => { table.push([ chalk.cyan(key), util.inspect(value, { depth: 5, colors: true }) ]); }); return `${prefix} ${message}\n${table.toString()}`; } return `${prefix} ${message}: ${util.inspect(data, { depth: 5, colors: true })}`; }); const logger = winston.createLogger({ levels: customLevels.levels, format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), customFormat ), transports: [ new winston.transports.Console({ format: winston.format.colorize({ all: true }) }) ] }); winston.addColors(customLevels.colors); export const log = (message: string, data?: any) => { logger.info(message, { data }); }; export const logError = (message: string, data?: any) => { logger.error(message, { data }); }; export const logWarn = (message: string, data?: any) => { logger.warn(message, { data }); }; export const logDebug = (message: string, data?: any) => { logger.debug(message, { data }); }; export const logSection = (title: string) => { const separator = '='.repeat(50); logger.info(`\n${separator}\n${chalk.bold.green(title)}\n${separator}`); }; export const logStep = (step: string) => { const separator = '-'.repeat(30); logger.info(`\n${separator}\n${chalk.bold.blue(step)}\n${separator}`); };