Skip to main content
Glama

Interactive MCP

MIT License
97
299
  • Apple
  • Linux
logger.ts2.46 kB
import { pino, Logger, TransportSingleOptions, TransportMultiOptions, TransportPipelineOptions, } from 'pino'; import path from 'path'; import fs from 'fs'; import os from 'os'; const logDir = path.resolve(os.tmpdir(), 'interactive-mcp-logs'); const logFile = path.join(logDir, 'dev.log'); // Ensure log directory exists if (process.env.NODE_ENV === 'development' && !fs.existsSync(logDir)) { try { fs.mkdirSync(logDir, { recursive: true }); } catch (error) { console.error('Failed to create log directory:', error); // Use console here as logger isn't initialized yet // Consider fallback behavior or exiting if logging is critical } } const isDevelopment = process.env.NODE_ENV === 'development'; const loggerOptions: pino.LoggerOptions = { level: isDevelopment ? 'trace' : 'silent', // Default level }; if (isDevelopment) { let devTransportConfig: | TransportSingleOptions | TransportMultiOptions | TransportPipelineOptions; try { // Attempt to open the file in append mode to check writability before setting up transport const fd = fs.openSync(logFile, 'a'); fs.closeSync(fd); devTransportConfig = { targets: [ { target: 'pino-pretty', // Log to console with pretty printing options: { colorize: true, sync: false, // Use async logging translateTime: 'SYS:yyyy-mm-dd HH:MM:ss', ignore: 'pid,hostname', }, level: 'trace', // Log all levels to the console in dev }, { target: 'pino/file', // Log to file options: { destination: logFile, mkdir: true }, // Specify file path and ensure directory exists level: 'trace', // Log all levels to the file in dev }, ], }; } catch (error) { console.error( `Failed to setup file transport for ${logFile}. Falling back to console-only logging. Error:`, error, ); // Fallback transport to console only using pino-pretty if file access fails devTransportConfig = { target: 'pino-pretty', options: { colorize: true, sync: false, translateTime: 'SYS:yyyy-mm-dd HH:MM:ss', ignore: 'pid,hostname', }, level: 'trace', }; } // Add transport to logger options only in development loggerOptions.transport = devTransportConfig; } const logger: Logger = pino(loggerOptions); export default logger;

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ttommyth/interactive-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server