stripe-test-mcp
Version:
Simply MCP server for testing for your stripe integrations
75 lines (74 loc) • 2.4 kB
JavaScript
/**
* 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,
});