UNPKG

whodis-mcp-server

Version:

Whodis MCP Server for checking the availability of domain names using WHOIS lookups.

116 lines (115 loc) 3.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.McpError = exports.ErrorType = void 0; exports.createAuthMissingError = createAuthMissingError; exports.createAuthInvalidError = createAuthInvalidError; exports.createApiError = createApiError; exports.createUnexpectedError = createUnexpectedError; exports.ensureMcpError = ensureMcpError; exports.formatErrorForMcpTool = formatErrorForMcpTool; exports.formatErrorForMcpResource = formatErrorForMcpResource; exports.handleCliError = handleCliError; const logger_util_js_1 = require("./logger.util.js"); /** * Error types for classification */ var ErrorType; (function (ErrorType) { ErrorType["AUTH_MISSING"] = "AUTH_MISSING"; ErrorType["AUTH_INVALID"] = "AUTH_INVALID"; ErrorType["API_ERROR"] = "API_ERROR"; ErrorType["UNEXPECTED_ERROR"] = "UNEXPECTED_ERROR"; })(ErrorType || (exports.ErrorType = ErrorType = {})); /** * Custom error class with type classification */ class McpError extends Error { constructor(message, type, statusCode, originalError) { super(message); this.name = 'McpError'; this.type = type; this.statusCode = statusCode; this.originalError = originalError; } } exports.McpError = McpError; /** * Create an authentication missing error */ function createAuthMissingError(message = 'Authentication credentials are missing') { return new McpError(message, ErrorType.AUTH_MISSING); } /** * Create an authentication invalid error */ function createAuthInvalidError(message = 'Authentication credentials are invalid') { return new McpError(message, ErrorType.AUTH_INVALID, 401); } /** * Create an API error */ function createApiError(message, statusCode, originalError) { return new McpError(message, ErrorType.API_ERROR, statusCode, originalError); } /** * Create an unexpected error */ function createUnexpectedError(message = 'An unexpected error occurred', originalError) { return new McpError(message, ErrorType.UNEXPECTED_ERROR, undefined, originalError); } /** * Ensure an error is an McpError */ function ensureMcpError(error) { if (error instanceof McpError) { return error; } if (error instanceof Error) { return createUnexpectedError(error.message, error); } return createUnexpectedError(String(error)); } /** * Format error for MCP tool response */ function formatErrorForMcpTool(error) { const methodLogger = logger_util_js_1.Logger.forContext('utils/error.util.ts', 'formatErrorForMcpTool'); const mcpError = ensureMcpError(error); methodLogger.error(`${mcpError.type} error`, mcpError); return { content: [ { type: 'text', text: `Error: ${mcpError.message}`, }, ], }; } /** * Format error for MCP resource response */ function formatErrorForMcpResource(error, uri) { const methodLogger = logger_util_js_1.Logger.forContext('utils/error.util.ts', 'formatErrorForMcpResource'); const mcpError = ensureMcpError(error); methodLogger.error(`${mcpError.type} error`, mcpError); return { contents: [ { uri, text: `Error: ${mcpError.message}`, mimeType: 'text/plain', description: `Error: ${mcpError.type}`, }, ], }; } /** * Handle error in CLI context */ function handleCliError(error) { const methodLogger = logger_util_js_1.Logger.forContext('utils/error.util.ts', 'handleCliError'); const mcpError = ensureMcpError(error); methodLogger.error(`${mcpError.type} error`, mcpError); console.error(`Error: ${mcpError.message}`); process.exit(1); }