@mseep/atlas-mcp-server
Version:
A Model Context Protocol (MCP) server for ATLAS, a Neo4j-powered task management system for LLM Agents - implementing a three-tier architecture (Projects, Tasks, Knowledge) to manage complex workflows.
50 lines (41 loc) • 1.44 kB
text/typescript
import { logger } from './logger.js';
import { McpError, BaseErrorCode } from '../types/errors.js';
import { ToolContext } from './security.js';
interface ErrorHandlerOptions {
context: ToolContext;
operation: string;
input?: unknown;
}
export const handleOperationError = (error: unknown, options: ErrorHandlerOptions): never => {
const { context, operation, input } = options;
// If it's already an McpError, just rethrow it
if (error instanceof McpError) {
throw error;
}
// Log the error with consistent format
logger.error(`Error ${operation}`, {
error,
input,
requestId: context.requestContext?.requestId
});
// Convert to McpError with standardized message format
throw new McpError(
BaseErrorCode.INTERNAL_ERROR,
`Error ${operation}: ${error instanceof Error ? error.message : 'Unknown error'}`
);
};
export const handleDatabaseError = (error: unknown, errorMap: Record<string, () => McpError>): never => {
// If it's already an McpError, rethrow it
if (error instanceof McpError) {
throw error;
}
const errorMessage = error instanceof Error ? error.message : '';
// Check each error pattern and throw corresponding McpError
for (const [pattern, errorFactory] of Object.entries(errorMap)) {
if (errorMessage.includes(pattern)) {
throw errorFactory();
}
}
// If no specific error pattern matches, rethrow the original error
throw error;
};