Skip to main content
Glama

Optimizely DXP MCP Server

by JaxonDigital
tool-availability-matrix.js17.5 kB
/** * Tool Availability Matrix * Defines which tools are available in which hosting types * * Part of DXP-23: Self-hosted Azure users should be gracefully restricted * from DXP-only tools with clear messaging */ const HostingDetector = require('./hosting-detector'); class ToolAvailabilityMatrix { /** * Tool availability configuration * Each tool specifies which hosting types it supports */ static TOOL_MATRIX = { // AI Guidance - Available to all 'get_ai_guidance': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Help & Support', description: 'Get AI-specific guidance for using this MCP server' }, // Simple Commands - Note: These are handled by SimpleTools and DatabaseSimpleTools // but most don't have direct handlers in dist/index.js 'status': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Simple Commands', description: 'Intelligent status overview' }, 'quick': { hostingTypes: ['dxp-paas'], category: 'Simple Commands', description: 'Quick deployment operations', restrictedMessage: 'Quick deployments are only available for DXP PaaS hosting.' }, // Connection & Setup - Available to all 'test_connection': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Setup & Connection', description: 'Test your connection and verify credentials' }, 'health_check': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Setup & Connection', description: 'Comprehensive health check of your setup' }, // Project Management - Available to all configured hosting types 'list_projects': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Project Management', description: 'List all configured projects' }, 'current_project': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Project Management', description: 'Show current project configuration' }, 'get_project': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Project Management', description: 'Get project information and configuration details' }, 'update_project': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Project Management', description: 'Update project configuration: rename, credentials, paths, or settings' }, 'switch_project': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Project Management', description: 'Switch between configured projects' }, // Deployment Tools - DXP PaaS Only (SaaS handles deployments automatically) 'start_deployment': { hostingTypes: ['dxp-paas'], category: 'Deployments', description: 'Start a new deployment', restrictedMessage: 'Starting deployments is only available for DXP PaaS hosting. DXP SaaS handles deployments automatically.' }, 'complete_deployment': { hostingTypes: ['dxp-paas'], category: 'Deployments', description: 'Complete an in-progress deployment', restrictedMessage: 'Completing deployments is only available for DXP PaaS hosting.' }, 'reset_deployment': { hostingTypes: ['dxp-paas'], category: 'Deployments', description: 'Reset a stuck deployment', restrictedMessage: 'Resetting deployments is only available for DXP PaaS hosting.' }, 'list_deployments': { hostingTypes: ['dxp-paas'], category: 'Deployments', description: 'List recent deployments', restrictedMessage: 'Deployment history is only available for DXP PaaS hosting.' }, 'get_deployment_status': { hostingTypes: ['dxp-paas'], category: 'Deployments', description: 'Get detailed deployment status', restrictedMessage: 'Deployment status is only available for DXP PaaS hosting.' }, // Package Management - DXP PaaS Only 'upload_deployment_package': { hostingTypes: ['dxp-paas'], category: 'Package Management', description: 'Upload a deployment package', restrictedMessage: 'Package uploads are only available for DXP PaaS hosting. DXP SaaS handles deployments automatically. Self-hosted users should deploy through Azure DevOps.' }, 'analyze_package': { hostingTypes: ['dxp-paas'], category: 'Package Management', description: 'Analyze package upload strategy', restrictedMessage: 'Package analysis is only available for DXP PaaS hosting.' }, 'deploy_package_and_start': { hostingTypes: ['dxp-paas'], category: 'Package Management', description: 'Deploy package and start deployment', restrictedMessage: 'Package deployment is only available for DXP PaaS hosting.' }, 'deploy_package_enhanced': { hostingTypes: ['dxp-paas'], category: 'Package Management', description: 'Enhanced package deployment', restrictedMessage: 'Enhanced package deployment is only available for DXP PaaS hosting.' }, 'prepare_deployment_package': { hostingTypes: ['dxp-paas'], category: 'Package Management', description: 'Prepare deployment package', restrictedMessage: 'Package preparation is only available for DXP PaaS hosting.' }, 'generate_sas_upload_url': { hostingTypes: ['dxp-paas'], category: 'Package Management', description: 'Generate SAS URL for package upload', restrictedMessage: 'SAS URL generation is only available for DXP PaaS hosting.' }, 'split_package': { hostingTypes: ['dxp-paas'], category: 'Package Management', description: 'Split large package for upload', restrictedMessage: 'Package splitting is only available for DXP PaaS hosting.' }, // Database Tools - DXP PaaS Only 'export_database': { hostingTypes: ['dxp-paas'], category: 'Database', description: 'Export database to local file', restrictedMessage: 'Database exports are only available for DXP PaaS hosting. DXP SaaS does not allow direct database access. For self-hosted, use Azure SQL tools or contact your database administrator.' }, 'check_export_status': { hostingTypes: ['dxp-paas'], category: 'Database', description: 'Check database export status', restrictedMessage: 'Database export status is only available for DXP PaaS hosting.' }, // REMOVED: list_exports - tool relies on broken queryPaaSExports (DXP-49) // Content Management - DXP PaaS and potentially SaaS 'copy_content': { hostingTypes: ['dxp-paas', 'dxp-saas'], category: 'Content Management', description: 'Copy content between environments', restrictedMessage: 'Content copy is only available for DXP hosting. Self-hosted users should use database restore operations.' }, // Storage & Downloads - Available to all 'download_blobs': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'Download blob storage content' }, 'download_logs': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'Download application logs' }, 'download_media': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'Download media files' }, 'download_assets': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'Download asset files' }, 'list_storage_containers': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'List available storage containers' }, 'discover_logs': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'Discover available log containers' }, 'check_download_capabilities': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'Check download capabilities' }, 'get_download_status': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Storage & Downloads', description: 'Get download status' }, // Download Management - Available to all 'list_active_downloads': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Download Management', description: 'List active downloads' }, 'cancel_download': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Download Management', description: 'Cancel a specific download' }, 'cancel_all_downloads': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Download Management', description: 'Cancel all active downloads' }, 'download_history': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Download Management', description: 'View download history' }, // Storage Management - DXP PaaS Only (SAS generation) 'generate_storage_sas_link': { hostingTypes: ['dxp-paas'], category: 'Storage Management', description: 'Generate SAS link for storage container', restrictedMessage: 'SAS link generation through DXP API is only available for DXP PaaS hosting. Self-hosted users can generate SAS tokens directly through Azure Portal or Azure CLI.' }, // Download Configuration 'show_download_config': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Storage & Downloads', description: 'Show download configuration' }, // Monitoring & Telemetry - Available to all 'list_monitors': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'List active monitors' }, 'update_monitoring_interval': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'Update monitoring interval' }, 'stop_monitoring': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'Stop monitoring' }, 'get_monitoring_stats': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'Get monitoring statistics' }, 'disable_telemetry': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'Disable telemetry' }, 'enable_telemetry': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'Enable telemetry' }, 'get_rate_limit_status': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'Get rate limit status' }, 'get_cache_status': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Monitoring', description: 'Get cache status' }, // Support Tools - Available to all 'get_version': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Support', description: 'Get MCP server version information' }, 'get_support': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Support', description: 'Get support contact information' }, 'verify_access': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted', 'unknown'], category: 'Support', description: 'Verify access and permissions' }, // Debug Tools - Available to all for troubleshooting 'debug_containers': { hostingTypes: ['dxp-paas', 'dxp-saas', 'self-hosted'], category: 'Debug', description: 'Debug storage container access' }, }; /** * Check if a tool is available in the current hosting type */ static isToolAvailable(toolName, args = {}) { const tool = this.TOOL_MATRIX[toolName]; if (!tool) { return false; // Unknown tool } const currentHosting = HostingDetector.detectHostingType(args); return tool.hostingTypes.includes(currentHosting); } /** * Get available tools for the current hosting type */ static getAvailableTools(args = {}) { const currentHosting = HostingDetector.detectHostingType(args); const availableTools = []; for (const [toolName, toolConfig] of Object.entries(this.TOOL_MATRIX)) { if (toolConfig.hostingTypes.includes(currentHosting)) { availableTools.push({ name: toolName, category: toolConfig.category, description: toolConfig.description }); } } return availableTools; } /** * Get unavailable tools for the current hosting type with restriction messages */ static getUnavailableTools(args = {}) { const currentHosting = HostingDetector.detectHostingType(args); const unavailableTools = []; for (const [toolName, toolConfig] of Object.entries(this.TOOL_MATRIX)) { if (!toolConfig.hostingTypes.includes(currentHosting)) { unavailableTools.push({ name: toolName, category: toolConfig.category, description: toolConfig.description, restrictedMessage: toolConfig.restrictedMessage || `This tool is not available in ${HostingDetector.getHostingTypeName(args)}.` }); } } return unavailableTools; } /** * Get tools grouped by category for the current hosting type */ static getToolsByCategory(args = {}) { const availableTools = this.getAvailableTools(args); const grouped = {}; for (const tool of availableTools) { if (!grouped[tool.category]) { grouped[tool.category] = []; } grouped[tool.category].push(tool); } return grouped; } /** * Get restriction message for a tool */ static getRestrictionMessage(toolName, args = {}) { const tool = this.TOOL_MATRIX[toolName]; if (!tool) { return 'Unknown tool.'; } if (this.isToolAvailable(toolName, args)) { return null; // Tool is available } const hostingName = HostingDetector.getHostingTypeName(args); const availableAlternatives = this.getSuggestedAlternatives(toolName, args); let message = tool.restrictedMessage || `This tool is not available in ${hostingName}.`; if (availableAlternatives.length > 0) { message += '\n\nAlternative tools you can use:\n'; for (const alt of availableAlternatives) { message += `• ${alt.name}: ${alt.description}\n`; } } return message; } /** * Get suggested alternative tools */ static getSuggestedAlternatives(restrictedToolName, args = {}) { const tool = this.TOOL_MATRIX[restrictedToolName]; if (!tool) return []; const category = tool.category; const availableTools = this.getAvailableTools(args); // Find tools in the same category that are available return availableTools.filter(t => t.category === category); } } module.exports = ToolAvailabilityMatrix;

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JaxonDigital/optimizely-dxp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server