touchdesigner-mcp-server
Version:
MCP server for TouchDesigner
44 lines (43 loc) • 1.51 kB
JavaScript
/**
* MCP compatible logger implementation
* Handles "Not connected" errors gracefully
*/
export class McpLogger {
server;
constructor(server) {
this.server = server;
}
sendLog(args) {
try {
this.server.server.sendLoggingMessage({
...args,
});
}
catch (error) {
// Only swallow the expected "Not connected" error during startup/shutdown
if (error instanceof Error && error.message === "Not connected") {
return;
}
// For all other errors, log detailed information to help diagnose logging system failures
console.error("CRITICAL: Failed to send log to MCP server. Logging system may be compromised.", {
error: error instanceof Error ? error.message : String(error),
originalLogger: args.logger,
originalLogLevel: args.level,
stack: error instanceof Error ? error.stack : undefined,
});
}
}
}
/**
* Console Logger implementation for standalone use (e.g., HTTP mode setup)
* Outputs to stderr to avoid interfering with stdio transport
*/
export class ConsoleLogger {
sendLog(args) {
const timestamp = new Date().toISOString();
const level = args.level?.toUpperCase() || "INFO";
const logger = args.logger || "unknown";
const data = args.data;
console.error(`[${timestamp}] [${level}] [${logger}] ${data}`);
}
}