UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

92 lines 4.29 kB
/** * Get Optimizely API Reference Tool - Individual Module * @description Provides Optimizely API documentation and reference information * @since 2025-08-04 * @author Tool Modularization Team * * Migration Status: COMPLETED * Original Method: OptimizelyMCPTools.getOptimizelyAPIReference * Complexity: MEDIUM * Dependencies: logger, errorMapper, OptimizelyDocumentationHandler */ /** * Creates the Get Optimizely API Reference tool with injected dependencies * @param deps - Injected dependencies (storage, logger, errorMapper, etc.) * @returns Tool definition with handler */ export function createGetOptimizelyAPIReferenceTool(deps) { return { name: 'get_optimizely_api_reference', requiresCache: false, category: 'documentation', description: 'Provides comprehensive API documentation for Feature Experimentation SDKs, Web Experimentation platform, and Optimizely Agent microservice', handler: async (args) => { const { entity_type: entityType, information_type: informationType, product_type: productType, method_name: methodName, concept_name: conceptName, search_query: searchQuery } = args; try { deps.logger.debug({ entityType, informationType, productType, methodName, conceptName, searchQuery }, 'OptimizelyMCPTools.getOptimizelyAPIReference: Processing API documentation query'); // Import and use the OptimizelyDocumentationHandler const { createRequire } = await import('module'); const require = createRequire(import.meta.url); const OptimizelyDocumentationHandler = require('../OptimizelyDocumentationHandler.cjs'); // Create handler instance const handler = new OptimizelyDocumentationHandler(); // Build query parameters (map product_type to sdk_name for handler compatibility) const params = { entity_type: entityType, information_type: informationType, sdk_name: productType, // Handler expects sdk_name, tool provides product_type method_name: methodName, concept_name: conceptName, search_query: searchQuery }; // Execute query const result = await handler.handleQuery(params); // Check if there's an error with suggestions if (!result.success && result.error) { let errorText = `# ${result.error.message}\n\n`; if (result.error.suggestions && result.error.suggestions.length > 0) { errorText += '## 💡 Suggestions\n\n'; errorText += result.error.suggestions.join('\n') + '\n'; } return { content: [ { type: 'text', text: errorText } ] }; } if (!result.success) { throw new Error(result.error?.message || 'Failed to retrieve documentation'); } // Return formatted response return { content: [ { type: 'text', text: result.data ? deps.formatDocumentationResponse(result) : 'No documentation found for the specified query.' } ] }; } catch (error) { deps.logger.error({ entityType, informationType, productType, error: error.message }, 'OptimizelyMCPTools.getOptimizelyAPIReference: Failed to process query'); throw deps.errorMapper.toMCPError(error, 'Failed to get API reference documentation'); } } }; } //# sourceMappingURL=GetOptimizelyApiReference.js.map