Skip to main content
Glama
optimizers.ts28.4 kB
import { OptimizedCard, OptimizedDashboard, OptimizedTable, OptimizedDatabase, OptimizedCollection, OptimizedField, } from '../../types/optimized.js'; /** * Optimization levels for controlling response size vs. context */ export enum OptimizationLevel { STANDARD = 'standard', // Default optimization - preserves all useful context AGGRESSIVE = 'aggressive', // Removes non-essential metadata for bulk operations ULTRA_MINIMAL = 'ultra_minimal', // Minimal response for very large datasets } /** * Optimize card response by removing unnecessary fields that consume tokens * but aren't used by other handlers (execute_query, export_query, etc.) */ export function optimizeCardResponse( card: any, optimizationLevel: OptimizationLevel = OptimizationLevel.STANDARD ): OptimizedCard { const optimized: OptimizedCard = { id: card.id, name: card.name, database_id: card.database_id, retrieved_at: new Date().toISOString(), }; // Essential fields for all optimization levels // Add description only for standard and aggressive levels if ( card.description && (optimizationLevel === OptimizationLevel.STANDARD || optimizationLevel === OptimizationLevel.AGGRESSIVE) ) { optimized.description = card.description; } // Essential for execute_query and export_query - always include if (card.dataset_query) { optimized.dataset_query = { type: card.dataset_query.type, database: card.dataset_query.database, native: card.dataset_query.native ? { query: card.dataset_query.native.query, template_tags: card.dataset_query.native.template_tags, } : undefined, }; } if (card.collection_id !== null && card.collection_id !== undefined) { optimized.collection_id = card.collection_id; } if (card.query_type) { optimized.query_type = card.query_type; } if (card.archived !== undefined) { optimized.archived = card.archived; } if (card.can_write !== undefined) { optimized.can_write = card.can_write; } // Timestamps - include only for standard level to save tokens in bulk operations if (optimizationLevel === OptimizationLevel.STANDARD) { if (card.created_at) { optimized.created_at = card.created_at; } if (card.updated_at) { optimized.updated_at = card.updated_at; } } // Creator info - optimize based on level if (card.creator && optimizationLevel !== OptimizationLevel.ULTRA_MINIMAL) { if (optimizationLevel === OptimizationLevel.STANDARD) { optimized.creator = { id: card.creator.id, email: card.creator.email, first_name: card.creator.first_name, last_name: card.creator.last_name, }; } else { // Aggressive level - just ID and name for minimal context optimized.creator = { id: card.creator.id, email: card.creator.email, first_name: card.creator.first_name, last_name: card.creator.last_name, }; } } // Collection info - optimize based on level if (card.collection && optimizationLevel !== OptimizationLevel.ULTRA_MINIMAL) { if (optimizationLevel === OptimizationLevel.STANDARD) { optimized.collection = { id: card.collection.id, name: card.collection.name, location: card.collection.location, }; } else { // Aggressive level - just ID and name optimized.collection = { id: card.collection.id, name: card.collection.name, }; } } // Essential parameters for query execution if (card.parameters && Array.isArray(card.parameters) && card.parameters.length > 0) { optimized.parameters = card.parameters.map((param: any) => { const optimizedParam: any = { id: param.id, name: param.name, type: param.type, slug: param.slug, target: param.target, }; // Include values source information for parameters with static lists if (param.values_source_type) { optimizedParam.values_source_type = param.values_source_type; } if (param.values_source_config) { optimizedParam.values_source_config = param.values_source_config; } return optimizedParam; }); } // Analytics data - include only for standard level to save tokens in bulk operations if (optimizationLevel === OptimizationLevel.STANDARD) { if (card.view_count !== undefined) { optimized.view_count = card.view_count; } if (card.query_average_duration !== undefined) { optimized.query_average_duration = card.query_average_duration; } } return optimized; } /** * Optimize dashboard response by removing unnecessary fields that consume tokens * but aren't used by other handlers. Focuses on layout, cards, and parameters. */ export function optimizeDashboardResponse( dashboard: any, optimizationLevel: OptimizationLevel = OptimizationLevel.STANDARD ): OptimizedDashboard { const optimized: OptimizedDashboard = { id: dashboard.id, name: dashboard.name, retrieved_at: new Date().toISOString(), }; // Add optional fields based on optimization level if ( dashboard.description && (optimizationLevel === OptimizationLevel.STANDARD || optimizationLevel === OptimizationLevel.AGGRESSIVE) ) { optimized.description = dashboard.description; } if (dashboard.collection_id !== null && dashboard.collection_id !== undefined) { optimized.collection_id = dashboard.collection_id; } if (dashboard.archived !== undefined) { optimized.archived = dashboard.archived; } if (dashboard.can_write !== undefined) { optimized.can_write = dashboard.can_write; } // Timestamps - include only for standard level to save tokens in bulk operations if (optimizationLevel === OptimizationLevel.STANDARD) { if (dashboard.created_at) { optimized.created_at = dashboard.created_at; } if (dashboard.updated_at) { optimized.updated_at = dashboard.updated_at; } } // Essential dashboard cards with optimized card data if (dashboard.dashcards && Array.isArray(dashboard.dashcards) && dashboard.dashcards.length > 0) { optimized.dashcards = dashboard.dashcards.map((dashcard: any) => { const optimizedDashcard: any = { id: dashcard.id, card_id: dashcard.card_id, dashboard_id: dashcard.dashboard_id, row: dashcard.row, col: dashcard.col, size_x: dashcard.size_x, size_y: dashcard.size_y, }; // Essential parameter mappings for dashboard filtering if ( dashcard.parameter_mappings && Array.isArray(dashcard.parameter_mappings) && dashcard.parameter_mappings.length > 0 ) { optimizedDashcard.parameter_mappings = dashcard.parameter_mappings.map((mapping: any) => ({ parameter_id: mapping.parameter_id, card_id: mapping.card_id, target: mapping.target, })); } // Essential visualization settings if ( dashcard.visualization_settings && Object.keys(dashcard.visualization_settings).length > 0 ) { optimizedDashcard.visualization_settings = dashcard.visualization_settings; } // Optimized card data (removing huge result_metadata) if (dashcard.card) { optimizedDashcard.card = { id: dashcard.card.id, name: dashcard.card.name, database_id: dashcard.card.database_id, }; // Add optional card fields only if they exist if (dashcard.card.description) { optimizedDashcard.card.description = dashcard.card.description; } if (dashcard.card.query_type) { optimizedDashcard.card.query_type = dashcard.card.query_type; } if (dashcard.card.display) { optimizedDashcard.card.display = dashcard.card.display; } // Essential for execute_query operations if (dashcard.card.dataset_query) { optimizedDashcard.card.dataset_query = { type: dashcard.card.dataset_query.type, database: dashcard.card.dataset_query.database, native: dashcard.card.dataset_query.native ? { query: dashcard.card.dataset_query.native.query, template_tags: dashcard.card.dataset_query.native.template_tags, } : undefined, }; } // Essential parameters for query execution if ( dashcard.card.parameters && Array.isArray(dashcard.card.parameters) && dashcard.card.parameters.length > 0 ) { optimizedDashcard.card.parameters = dashcard.card.parameters.map((param: any) => { const optimizedParam: any = { id: param.id, name: param.name, type: param.type, slug: param.slug, target: param.target, }; // Include values source information for parameters with static lists if (param.values_source_type) { optimizedParam.values_source_type = param.values_source_type; } if (param.values_source_config) { optimizedParam.values_source_config = param.values_source_config; } return optimizedParam; }); } } return optimizedDashcard; }); } // Essential dashboard-level parameters if ( dashboard.parameters && Array.isArray(dashboard.parameters) && dashboard.parameters.length > 0 ) { optimized.parameters = dashboard.parameters.map((param: any) => { const optimizedParam: any = { id: param.id, name: param.name, type: param.type, slug: param.slug, sectionId: param.sectionId, }; // Include values source information for parameters with static lists if (param.values_source_type) { optimizedParam.values_source_type = param.values_source_type; } if (param.values_source_config) { optimizedParam.values_source_config = param.values_source_config; } return optimizedParam; }); } // Dashboard tabs (if any) if (dashboard.tabs && Array.isArray(dashboard.tabs) && dashboard.tabs.length > 0) { optimized.tabs = dashboard.tabs; } // Layout settings if (dashboard.width) { optimized.width = dashboard.width; } if (dashboard.auto_apply_filters !== undefined) { optimized.auto_apply_filters = dashboard.auto_apply_filters; } // Creator info - optimize based on level if ( (dashboard.creator || dashboard['last-edit-info']) && optimizationLevel !== OptimizationLevel.ULTRA_MINIMAL ) { const creator = dashboard.creator || dashboard['last-edit-info']; optimized.creator = { id: creator.id, email: creator.email, first_name: creator.first_name, last_name: creator.last_name, }; } // Collection info - optimize based on level if (dashboard.collection && optimizationLevel !== OptimizationLevel.ULTRA_MINIMAL) { if (optimizationLevel === OptimizationLevel.STANDARD) { optimized.collection = { id: dashboard.collection.id, name: dashboard.collection.name, location: dashboard.collection.location, }; } else { // Aggressive level - just ID and name optimized.collection = { id: dashboard.collection.id, name: dashboard.collection.name, }; } } return optimized; } /** * Optimize table response by removing unnecessary fields that consume tokens * but aren't used by other handlers. Focuses on essential schema information. */ export function optimizeTableResponse( table: any, optimizationLevel: OptimizationLevel = OptimizationLevel.STANDARD ): OptimizedTable { const optimized: OptimizedTable = { id: table.id, name: table.name, db_id: table.db_id, display_name: table.display_name, entity_type: table.entity_type, active: table.active, field_order: table.field_order, is_upload: table.is_upload, initial_sync_status: table.initial_sync_status, retrieved_at: new Date().toISOString(), }; // Include timestamps only for standard level to save tokens in bulk operations if (optimizationLevel === OptimizationLevel.STANDARD) { optimized.created_at = table.created_at; optimized.updated_at = table.updated_at; } // Add optional fields only if they exist and have meaningful values if (table.description) { optimized.description = table.description; } if (table.schema) { optimized.schema = table.schema; } if (table.view_count !== undefined) { optimized.view_count = table.view_count; } if (table.estimated_row_count !== undefined) { optimized.estimated_row_count = table.estimated_row_count; } // Essential database information (simplified) if (table.db) { optimized.db = { id: table.db.id, name: table.db.name, engine: table.db.engine, }; // Add optional db fields if (table.db.description) { optimized.db.description = table.db.description; } if (table.db.timezone) { optimized.db.timezone = table.db.timezone; } if (table.db.dbms_version) { optimized.db.dbms_version = table.db.dbms_version; } if (table.db.is_sample !== undefined) { optimized.db.is_sample = table.db.is_sample; } if (table.db.is_on_demand !== undefined) { optimized.db.is_on_demand = table.db.is_on_demand; } if (table.db.uploads_enabled !== undefined) { optimized.db.uploads_enabled = table.db.uploads_enabled; } if (table.db.auto_run_queries !== undefined) { optimized.db.auto_run_queries = table.db.auto_run_queries; } } // Essential field information (all fields preserved, metadata optimized by level) if (table.fields && Array.isArray(table.fields) && table.fields.length > 0) { optimized.fields = table.fields.map((field: any) => { if (optimizationLevel === OptimizationLevel.ULTRA_MINIMAL) { // Ultra minimal: Essential field identifiers + critical semantic info for discovery and relationships return { id: field.id, name: field.name, display_name: field.display_name, database_type: field.database_type, base_type: field.base_type, effective_type: field.effective_type, semantic_type: field.semantic_type || undefined, // ✓ Preserve for understanding field purpose table_id: field.table_id, position: field.position, active: field.active, fk_target_field_id: field.fk_target_field_id || undefined, // ✓ Preserve relationships }; } else if (optimizationLevel === OptimizationLevel.AGGRESSIVE) { // Aggressive: Essential info + relationships without timestamps and advanced metadata return { id: field.id, name: field.name, display_name: field.display_name, description: field.description || undefined, database_type: field.database_type, base_type: field.base_type, effective_type: field.effective_type, semantic_type: field.semantic_type || undefined, // ✓ Always preserve semantic info table_id: field.table_id, position: field.position, active: field.active, database_indexed: field.database_indexed, database_required: field.database_required, fk_target_field_id: field.fk_target_field_id || undefined, // ✓ Always preserve relationships }; } else { // Standard: Full field information return { id: field.id, name: field.name, display_name: field.display_name, description: field.description || undefined, database_type: field.database_type, base_type: field.base_type, effective_type: field.effective_type, semantic_type: field.semantic_type || undefined, table_id: field.table_id, position: field.position, database_position: field.database_position, active: field.active, database_indexed: field.database_indexed, database_required: field.database_required, has_field_values: field.has_field_values, visibility_type: field.visibility_type, preview_display: field.preview_display, fk_target_field_id: field.fk_target_field_id || undefined, created_at: field.created_at, updated_at: field.updated_at, }; } }); } return optimized; } /** * Optimize database response by removing unnecessary fields that consume tokens * but aren't used by other handlers. Focuses on essential connection and table info. * Supports pagination for large databases that exceed token limits. */ export function optimizeDatabaseResponse( database: any, optimizationLevel: OptimizationLevel = OptimizationLevel.STANDARD, tableOffset: number = 0, tableLimit?: number ): OptimizedDatabase { const optimized: OptimizedDatabase = { id: database.id, name: database.name, engine: database.engine, retrieved_at: new Date().toISOString(), }; // Add optional fields only if they exist and have meaningful values if (database.description) { optimized.description = database.description; } if (database.timezone) { optimized.timezone = database.timezone; } if (database.auto_run_queries !== undefined) { optimized.auto_run_queries = database.auto_run_queries; } if (database.is_sample !== undefined) { optimized.is_sample = database.is_sample; } if (database.is_on_demand !== undefined) { optimized.is_on_demand = database.is_on_demand; } if (database.uploads_enabled !== undefined) { optimized.uploads_enabled = database.uploads_enabled; } if (database.dbms_version) { optimized.dbms_version = { flavor: database.dbms_version.flavor, version: database.dbms_version.version, 'semantic-version': database.dbms_version['semantic-version'], }; } if (database.initial_sync_status) { optimized.initial_sync_status = database.initial_sync_status; } if (database.created_at) { optimized.created_at = database.created_at; } if (database.updated_at) { optimized.updated_at = database.updated_at; } // Essential table information with pagination support if (database.tables && Array.isArray(database.tables) && database.tables.length > 0) { // Apply pagination if specified let paginatedTables = database.tables; const totalTables = database.tables.length; if (tableLimit !== undefined) { const startIndex = tableOffset; const endIndex = tableOffset + tableLimit; paginatedTables = database.tables.slice(startIndex, endIndex); // Add pagination metadata (optimized as any).pagination = { total_tables: totalTables, table_offset: tableOffset, table_limit: tableLimit, current_page_size: paginatedTables.length, has_more: endIndex < totalTables, next_offset: endIndex < totalTables ? endIndex : undefined, }; } optimized.tables = paginatedTables.map((table: any) => { if (optimizationLevel === OptimizationLevel.ULTRA_MINIMAL) { // Ultra minimal: Only essential identifiers for discovery return { id: table.id, name: table.name, display_name: table.display_name, schema: table.schema || undefined, active: table.active, db_id: table.db_id, }; } else if (optimizationLevel === OptimizationLevel.AGGRESSIVE) { // Aggressive: Essential info without timestamps and heavy metadata return { id: table.id, name: table.name, display_name: table.display_name, description: table.description || undefined, schema: table.schema || undefined, entity_type: table.entity_type || undefined, active: table.active, db_id: table.db_id, is_upload: table.is_upload, }; } else { // Standard: Full table information return { id: table.id, name: table.name, display_name: table.display_name, description: table.description || undefined, schema: table.schema || undefined, view_count: table.view_count || undefined, entity_type: table.entity_type || undefined, active: table.active, db_id: table.db_id, field_order: table.field_order, is_upload: table.is_upload, initial_sync_status: table.initial_sync_status, created_at: table.created_at, updated_at: table.updated_at, estimated_row_count: table.estimated_row_count || undefined, }; } }); } return optimized; } /** * Optimize collection response by removing unnecessary fields that consume tokens * but aren't used by other handlers. Collections are relatively small already. */ export function optimizeCollectionResponse( collection: any, optimizationLevel: OptimizationLevel = OptimizationLevel.STANDARD ): OptimizedCollection { const optimized: OptimizedCollection = { id: collection.id, name: collection.name, archived: collection.archived, slug: collection.slug, can_write: collection.can_write, can_restore: collection.can_restore, is_sample: collection.is_sample, effective_location: collection.effective_location, location: collection.location, is_personal: collection.is_personal, created_at: collection.created_at, can_delete: collection.can_delete, retrieved_at: new Date().toISOString(), }; // Add optional fields based on optimization level if ( collection.description && (optimizationLevel === OptimizationLevel.STANDARD || optimizationLevel === OptimizationLevel.AGGRESSIVE) ) { optimized.description = collection.description; } if (collection.authority_level && optimizationLevel !== OptimizationLevel.ULTRA_MINIMAL) { optimized.authority_level = collection.authority_level; } if (collection.personal_owner_id !== null && collection.personal_owner_id !== undefined) { optimized.personal_owner_id = collection.personal_owner_id; } if (collection.type) { optimized.type = collection.type; } if (collection.parent_id !== null && collection.parent_id !== undefined) { optimized.parent_id = collection.parent_id; } if (collection.namespace) { optimized.namespace = collection.namespace; } // Essential hierarchy information (only for standard level) if ( collection.effective_ancestors && Array.isArray(collection.effective_ancestors) && collection.effective_ancestors.length > 0 && optimizationLevel === OptimizationLevel.STANDARD ) { optimized.effective_ancestors = collection.effective_ancestors.map((ancestor: any) => ({ 'metabase.collections.models.collection.root/is-root?': ancestor['metabase.collections.models.collection.root/is-root?'], authority_level: ancestor.authority_level, name: ancestor.name, is_personal: ancestor.is_personal, id: ancestor.id, can_write: ancestor.can_write, })); } // Include collection items if they exist (from enhanced collection retrieval) if (collection.items && Array.isArray(collection.items)) { // Organize items by type for better presentation, similar to resources handler const organizedItems = { cards: collection.items.filter((item: any) => item.model === 'card'), dashboards: collection.items.filter((item: any) => item.model === 'dashboard'), collections: collection.items.filter((item: any) => item.model === 'collection'), other: collection.items.filter( (item: any) => !['card', 'dashboard', 'collection'].includes(item.model) ), }; (optimized as any).items = { total_count: collection.items.length, cards: organizedItems.cards.map((card: any) => ({ id: card.id, name: card.name, description: card.description, model: card.model, view_count: card.view_count, })), dashboards: organizedItems.dashboards.map((dashboard: any) => ({ id: dashboard.id, name: dashboard.name, description: dashboard.description, model: dashboard.model, view_count: dashboard.view_count, })), collections: organizedItems.collections.map((subcollection: any) => ({ id: subcollection.id, name: subcollection.name, description: subcollection.description, model: subcollection.model, })), other: organizedItems.other.map((item: any) => ({ id: item.id, name: item.name, description: item.description, model: item.model, })), }; } return optimized; } /** * Optimize field response by removing unnecessary fields that consume tokens * but aren't used by other handlers. Focuses on schema information and relationships. */ export function optimizeFieldResponse( field: any, optimizationLevel: OptimizationLevel = OptimizationLevel.STANDARD ): OptimizedField { const optimized: OptimizedField = { id: field.id, name: field.name, display_name: field.display_name, database_type: field.database_type, base_type: field.base_type, effective_type: field.effective_type, table_id: field.table_id, position: field.position, database_position: field.database_position, active: field.active, database_indexed: field.database_indexed, database_required: field.database_required, has_field_values: field.has_field_values, visibility_type: field.visibility_type, preview_display: field.preview_display, created_at: field.created_at, updated_at: field.updated_at, table: { id: field.table.id, name: field.table.name, display_name: field.table.display_name, db_id: field.table.db_id, }, retrieved_at: new Date().toISOString(), }; // Add optional fields based on optimization level if ( field.description && (optimizationLevel === OptimizationLevel.STANDARD || optimizationLevel === OptimizationLevel.AGGRESSIVE) ) { optimized.description = field.description; } // Always preserve semantic type - critical for understanding field purpose if (field.semantic_type) { optimized.semantic_type = field.semantic_type; } // Always preserve foreign key relationships - critical for joins and relationships if (field.fk_target_field_id !== null && field.fk_target_field_id !== undefined) { optimized.fk_target_field_id = field.fk_target_field_id; } // Essential fingerprint data (only for standard level) if ( field.fingerprint && field.fingerprint.global && optimizationLevel === OptimizationLevel.STANDARD ) { optimized.fingerprint = { global: { 'distinct-count': field.fingerprint.global['distinct-count'], 'nil%': field.fingerprint.global['nil%'], }, }; } // Add optional table fields if (field.table.schema) { optimized.table.schema = field.table.schema; } if (field.table.entity_type) { optimized.table.entity_type = field.table.entity_type; } if (field.table.view_count !== undefined) { optimized.table.view_count = field.table.view_count; } // Essential target field information (for foreign keys) - always preserve relationships if (field.target) { optimized.target = { id: field.target.id, name: field.target.name, display_name: field.target.display_name, table_id: field.target.table_id, database_type: field.target.database_type, base_type: field.target.base_type, effective_type: field.target.effective_type, }; // Always preserve semantic type of target field for relationship understanding if (field.target.semantic_type) { optimized.target.semantic_type = field.target.semantic_type; } } return optimized; }

Latest Blog Posts

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/jerichosequitin/Metabase'

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