UNPKG

cakemail-mcp-server

Version:

Enterprise MCP server for Cakemail API integration with Claude AI - includes comprehensive template management, list management, sub-account management, BEEeditor visual email design, and advanced analytics

91 lines 3.34 kB
import { CakemailError, CakemailAuthenticationError, CakemailValidationError, CakemailBadRequestError, CakemailNotFoundError, CakemailRateLimitError } from '../cakemail-api.js'; import logger from './logger.js'; export function getErrorMessage(error) { if (error instanceof CakemailError) { return `${error.name}: ${error.message} (Status: ${error.statusCode})`; } if (error instanceof Error) { return error.message; } return String(error); } // Enhanced error handler for more detailed error responses export function handleCakemailError(error) { // Always log errors to file if (error instanceof Error) { logger.error({ err: error, stack: error.stack }, 'Cakemail error caught'); } else { logger.error({ err: error }, 'Unknown error caught'); } if (error instanceof CakemailValidationError) { const fieldErrors = error.validationErrors.map(err => { const field = err.loc.join('.'); return `${field}: ${err.msg}`; }).join(', '); return { content: [{ type: 'text', text: `❌ **Validation Error**\n\nThe following fields have validation issues:\n${fieldErrors}\n\n**Fix these issues and try again.**` }], isError: true }; } if (error instanceof CakemailAuthenticationError) { return { content: [{ type: 'text', text: `🔐 **Authentication Error**\n\n${error.message}\n\n**Please check your CAKEMAIL_EMAIL and CAKEMAIL_PASSWORD environment variables.**` }], isError: true }; } if (error instanceof CakemailBadRequestError) { return { content: [{ type: 'text', text: `❌ **Bad Request**\n\n${error.detail}\n\n**Please check your request parameters and try again.**` }], isError: true }; } if (error instanceof CakemailNotFoundError) { return { content: [{ type: 'text', text: `🔍 **Not Found**\n\n${error.message}\n\n**The requested resource could not be found. Please verify the ID and try again.**` }], isError: true }; } if (error instanceof CakemailRateLimitError) { const retryMessage = error.retryAfter ? `Please wait ${error.retryAfter} seconds before trying again.` : 'Please wait a moment before trying again.'; return { content: [{ type: 'text', text: `⏱️ **Rate Limit Exceeded**\n\n${error.message}\n\n${retryMessage}` }], isError: true }; } if (error instanceof CakemailError) { return { content: [{ type: 'text', text: `❌ **API Error (${error.statusCode})**\n\n${error.message}` }], isError: true }; } // Fallback for unknown errors return { content: [{ type: 'text', text: `❌ **Error**\n\n${getErrorMessage(error)}` }], isError: true }; } //# sourceMappingURL=errors.js.map