falkordb-mcpserver
Version:
Model Context Protocol server for FalkorDB graph databases - enables AI assistants to query and manage graph data using natural language
47 lines (46 loc) • 1.52 kB
JavaScript
import { AppError } from './AppError.js';
import { logger } from '../services/logger.service.js';
/**
* Centralized error handler following Node.js best practices for MCP servers
* Handles logging, monitoring, and determining crash behavior
*/
export class ErrorHandler {
async handleError(err) {
await this.logError(err);
await this.determineIfOperationalError(err);
}
isTrustedError(error) {
if (error instanceof AppError) {
return error.isOperational;
}
return false;
}
async logError(err) {
await logger.error('Unhandled error occurred', err, {
timestamp: new Date().toISOString(),
errorType: err.constructor.name
});
}
async determineIfOperationalError(err) {
if (this.isTrustedError(err)) {
await logger.info('Operational error handled gracefully', {
errorName: err.name,
errorMessage: err.message
});
}
else {
await logger.error('Programmer error detected - may require process restart', err, {
recommendation: 'Review code for bugs',
severity: 'critical'
});
}
}
crashIfUntrustedError(error) {
if (!this.isTrustedError(error)) {
logger.errorSync('Crashing process due to untrusted error', error);
process.exit(1);
}
}
}
// Export singleton instance
export const errorHandler = new ErrorHandler();