// Simple logger utility for the MCP server
const COLORS = {
reset: '\x1b[0m',
red: '\x1b[31m',
green: '\x1b[32m',
yellow: '\x1b[33m',
blue: '\x1b[34m',
magenta: '\x1b[35m',
cyan: '\x1b[36m',
gray: '\x1b[90m',
};
function formatTimestamp(): string {
return new Date().toISOString();
}
function formatMessage(level: string, color: string, ...args: unknown[]): void {
const timestamp = formatTimestamp();
const prefix = `${COLORS.gray}[${timestamp}]${COLORS.reset} ${color}[${level}]${COLORS.reset}`;
// Log to stderr to avoid interfering with MCP stdio communication
console.error(prefix, ...args);
}
export const Logger = {
debug(...args: unknown[]): void {
if (process.env.DEBUG) {
formatMessage('DEBUG', COLORS.gray, ...args);
}
},
info(...args: unknown[]): void {
formatMessage('INFO', COLORS.blue, ...args);
},
warn(...args: unknown[]): void {
formatMessage('WARN', COLORS.yellow, ...args);
},
error(...args: unknown[]): void {
formatMessage('ERROR', COLORS.red, ...args);
},
success(...args: unknown[]): void {
formatMessage('OK', COLORS.green, ...args);
},
toolInvocation(toolName: string, args?: Record<string, unknown>): void {
formatMessage('TOOL', COLORS.magenta, `Invoking: ${toolName}`, args ? JSON.stringify(args).slice(0, 200) : '');
},
};