jrnl-mcp
Version:
Model Context Protocol server for jrnl CLI journal application
109 lines (108 loc) • 2.62 kB
JavaScript
;
/**
* Logger utility for MCP server
*
* This module provides a centralized way to log messages in an MCP server
* without breaking the stdio transport protocol.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.MCPLogger = void 0;
class MCPLogger {
constructor(server) {
this.server = server;
}
/**
* Log a debug message
*/
async debug(data, logger) {
await this.log("debug", data, logger);
}
/**
* Log an info message
*/
async info(data, logger) {
await this.log("info", data, logger);
}
/**
* Log a notice message
*/
async notice(data, logger) {
await this.log("notice", data, logger);
}
/**
* Log a warning message
*/
async warning(data, logger) {
await this.log("warning", data, logger);
}
/**
* Log an error message
*/
async error(data, logger) {
await this.log("error", data, logger);
}
/**
* Log a critical message
*/
async critical(data, logger) {
await this.log("critical", data, logger);
}
/**
* Log an alert message
*/
async alert(data, logger) {
await this.log("alert", data, logger);
}
/**
* Log an emergency message
*/
async emergency(data, logger) {
await this.log("emergency", data, logger);
}
/**
* Generic log method
*/
async log(level, data, logger) {
try {
const params = {
level,
data,
};
if (logger) {
params.logger = logger;
}
await this.server.sendLoggingMessage(params);
}
catch (error) {
// If logging fails, we can't log the error!
// In production, you might want to write to a file as a fallback
}
}
/**
* Helper to format error objects for logging
*/
formatError(error) {
if (error instanceof Error) {
return {
name: error.name,
message: error.message,
stack: error.stack,
};
}
return {
error: String(error),
};
}
/**
* Helper to log function entry/exit
*/
async logFunction(functionName, phase, details) {
const level = phase === "error" ? "error" : "debug";
await this.log(level, {
function: functionName,
phase,
...details,
}, "function-trace");
}
}
exports.MCPLogger = MCPLogger;