UNPKG

mcp-cisco-support

Version:

MCP server for Cisco Support APIs including Bug Search and future tools

69 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateToolArgs = validateToolArgs; exports.setDefaultValues = setDefaultValues; exports.buildApiParams = buildApiParams; // Validate tool arguments against schema function validateToolArgs(tool, args) { const schema = tool.inputSchema; if (!schema || typeof schema !== 'object') { return; // No schema to validate against } // Check required fields if (schema.required && Array.isArray(schema.required)) { for (const field of schema.required) { if (!args[field]) { throw new Error(`Missing required field: ${field}`); } } } // Check enum values and patterns if specified if (schema.properties && typeof schema.properties === 'object') { Object.entries(schema.properties).forEach(([key, property]) => { if (args[key] !== undefined && typeof property === 'object' && property !== null) { const prop = property; // Validate enum values if (prop.enum && Array.isArray(prop.enum)) { if (!prop.enum.includes(args[key])) { throw new Error(`Invalid value for ${key}: ${args[key]}. Must be one of: ${prop.enum.join(', ')}`); } } // Validate regex patterns if (prop.pattern && typeof prop.pattern === 'string') { const regex = new RegExp(prop.pattern); if (!regex.test(args[key])) { throw new Error(`Invalid format for ${key}: ${args[key]}. Must match pattern: ${prop.pattern}`); } } } }); } } // Set default values for optional parameters function setDefaultValues(args) { const processedArgs = { ...args }; // Common defaults - only set if not explicitly provided // Let the API use its own defaults for page_index if (!processedArgs.modified_date) processedArgs.modified_date = '5'; return processedArgs; } // Build API parameters from tool arguments function buildApiParams(args) { const apiParams = {}; // Add page_index only if explicitly provided, otherwise let API use its default if (args.page_index !== undefined) { apiParams.page_index = args.page_index; } // Add optional filters - only if explicitly provided if (args.status) apiParams.status = args.status; if (args.severity) apiParams.severity = args.severity; if (args.modified_date) apiParams.modified_date = args.modified_date; if (args.sort_by) apiParams.sort_by = args.sort_by; return apiParams; } //# sourceMappingURL=validation.js.map