@gebrai/gebrai
Version:
Model Context Protocol server for GeoGebra mathematical visualization
72 lines • 2.65 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.errors = exports.McpError = void 0;
exports.createJsonRpcError = createJsonRpcError;
exports.handleError = handleError;
exports.validateJsonRpcRequest = validateJsonRpcRequest;
const mcp_1 = require("../types/mcp");
const logger_1 = __importDefault(require("./logger"));
/**
* Custom error class for MCP-specific errors
*/
class McpError extends Error {
code;
data;
constructor(code, message, data) {
super(message);
this.name = 'McpError';
this.code = code;
this.data = data;
}
}
exports.McpError = McpError;
/**
* Create a JSON-RPC error response
*/
function createJsonRpcError(code, message, data) {
return {
code,
message,
data
};
}
/**
* Handle and format errors for JSON-RPC responses
*/
function handleError(error) {
logger_1.default.error('Error occurred:', error);
if (error instanceof McpError) {
return createJsonRpcError(error.code, error.message, error.data);
}
if (error instanceof Error) {
return createJsonRpcError(mcp_1.McpErrorCode.InternalError, error.message, { stack: error.stack });
}
return createJsonRpcError(mcp_1.McpErrorCode.InternalError, 'Unknown error occurred', { error: String(error) });
}
/**
* Validate JSON-RPC request structure
*/
function validateJsonRpcRequest(request) {
if (typeof request !== 'object' || request === null) {
return false;
}
const req = request;
return (req['jsonrpc'] === '2.0' &&
typeof req['method'] === 'string' &&
(req['id'] === undefined || typeof req['id'] === 'string' || typeof req['id'] === 'number' || req['id'] === null));
}
/**
* Common error creators
*/
exports.errors = {
parseError: (data) => new McpError(mcp_1.McpErrorCode.ParseError, 'Parse error', data),
invalidRequest: (data) => new McpError(mcp_1.McpErrorCode.InvalidRequest, 'Invalid Request', data),
methodNotFound: (method) => new McpError(mcp_1.McpErrorCode.MethodNotFound, `Method not found: ${method}`),
invalidParams: (message = 'Invalid params') => new McpError(mcp_1.McpErrorCode.InvalidParams, message),
toolNotFound: (toolName) => new McpError(mcp_1.McpErrorCode.ToolNotFound, `Tool not found: ${toolName}`),
toolExecutionError: (toolName, message) => new McpError(mcp_1.McpErrorCode.ToolExecutionError, `Tool execution failed for ${toolName}: ${message}`)
};
//# sourceMappingURL=errors.js.map