@gianpieropuleo/radix-mcp-server
Version:
A Model Context Protocol (MCP) server for Radix UI libraries (Themes, Primitives, Colors), providing AI assistants with access to component source code, installation guides, and design tokens.
65 lines (64 loc) • 1.8 kB
JavaScript
/**
* Logger configuration using Pino
* All logging goes to stderr to avoid interfering with JSON-RPC stdout communication
*/
import { pino } from 'pino';
// Create a custom write stream that formats logs like the original console.error
const customStream = {
write(msg) {
try {
const log = JSON.parse(msg);
const level = log.level === 30 ? 'INFO' : log.level === 40 ? 'WARN' : log.level === 50 ? 'ERR' : 'LOG';
const message = log.msg || '';
// For errors, include the error details
if (log.err) {
console.error(`${level}: ${message} - ${log.err.message}`);
if (log.err.stack) {
console.error(`Stack: ${log.err.stack}`);
}
}
else if (log.error) {
console.error(`${level}: ${message} - ${log.error}`);
}
else {
console.error(`${level}: ${message}`);
}
}
catch {
// Fallback for non-JSON logs
console.error(msg.trim());
}
}
};
// Create pino logger with custom stream
const logger = pino({
level: process.env.LOG_LEVEL || 'info',
base: undefined,
timestamp: false
}, customStream);
/**
* Simple error logging function
*/
export function logError(message, error) {
if (error instanceof Error) {
logger.error({ err: error }, message);
}
else if (error) {
logger.error({ error: String(error) }, message);
}
else {
logger.error(message);
}
}
/**
* Simple warning logging function
*/
export function logWarning(message) {
logger.warn(message);
}
/**
* Simple info logging function
*/
export function logInfo(message) {
logger.info(message);
}