mcp-cisco-support
Version:
MCP server for Cisco Support APIs including Bug Search and future tools
69 lines • 2.79 kB
JavaScript
;
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