UNPKG

stripe-test-mcp

Version:

Simply MCP server for testing for your stripe integrations

75 lines (74 loc) 2.4 kB
/** * MCP Logger - Simple logging utility for MCP (Microservices Communication Protocol) */ import * as fs from 'fs'; import * as path from 'path'; // ログレベルの定義 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 = {})); export class MCPLogger { level; logFile = null; prefix; includeTimestamp; constructor(options = {}) { this.level = options.level ?? LogLevel.INFO; this.prefix = options.prefix ?? 'MCP'; this.includeTimestamp = options.includeTimestamp ?? true; // ログファイルの設定 if (options.logFile) { const logDir = path.dirname(options.logFile); if (!fs.existsSync(logDir)) { fs.mkdirSync(logDir, { recursive: true }); } this.logFile = fs.createWriteStream(options.logFile, { flags: 'a' }); } } /** * ログメッセージを出力 * MCPモデルを尊重: stdoutはJSON-RPCレスポンス専用、stderrをログに使用 */ log(level, message) { if (level < this.level) { return; } const timestamp = this.includeTimestamp ? `[${new Date().toISOString()}] ` : ''; const levelStr = LogLevel[level].padEnd(5); const formattedMessage = `${timestamp}[${this.prefix}] [${levelStr}] ${message}`; // console.errorを使用してstderrに出力 console.error(formattedMessage); // ファイルにもロギング(設定されている場合) if (this.logFile) { this.logFile.write(`${formattedMessage}\n`); } } // 各ログレベルのメソッド debug(message) { this.log(LogLevel.DEBUG, message); } info(message) { this.log(LogLevel.INFO, message); } warn(message) { this.log(LogLevel.WARN, message); } error(message) { this.log(LogLevel.ERROR, message); } // ロガーのクローズ close() { if (this.logFile) { this.logFile.end(); this.logFile = null; } } } export const logger = new MCPLogger({ level: LogLevel.INFO, });