import { MCPErrorCode } from '../types'; /** * Base MCP Error class */ export class MCPError extends Error { code: number; data?: any; constructor(message: string, code: number, data?: any) { super(message); this.name = this.constructor.name; this.code = code; this.data = data; Error.captureStackTrace(this, this.constructor); } toJSON() { return { error: { code: this.code, message: this.message, data: this.data, }, }; } } /** * Authentication error */ export class AuthenticationError extends MCPError { constructor(message = 'Authentication failed', data?: any) { super(message, MCPErrorCode.AuthenticationError, data); } } /** * Validation error */ export class ValidationError extends MCPError { constructor(message = 'Validation failed', data?: any) { super(message, MCPErrorCode.ValidationError, data); } } /** * Resource not found error */ export class ResourceNotFoundError extends MCPError { constructor(message = 'Resource not found', data?: any) { super(message, MCPErrorCode.ResourceNotFoundError, data); } } /** * Tool execution error */ export class ToolExecutionError extends MCPError { constructor(message = 'Tool execution failed', data?: any) { super(message, MCPErrorCode.ToolExecutionError, data); } } /** * Webhook error */ export class WebhookError extends MCPError { constructor(message = 'Webhook error', data?: any) { super(message, MCPErrorCode.WebhookError, data); } } /** * Storage error */ export class StorageError extends MCPError { constructor(message = 'Storage error', data?: any) { super(message, MCPErrorCode.StorageError, data); } }