Skip to main content
Glama
MikelA92
by MikelA92

get_generated_sql

Retrieve the SQL code generated by Metabase from query builder parameters to verify and understand the actual database queries being executed.

Instructions

📝 [MODERATE RISK] Get the generated SQL for a query-builder card with parameters. Use this to see the actual SQL that Metabase generates from query builder parameters. Risk: Moderate - executes queries to generate SQL.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cardIdYesThe card ID
parametersYesQuery parameters object

Implementation Reference

  • The core handler function for 'get_generated_sql'. Fetches the query-builder card by ID, merges provided parameters into the query structure, posts to Metabase /api/dataset endpoint to generate the SQL, extracts the SQL from response, and formats a response with the generated SQL.
    async getGeneratedSQL(cardId, parameters) { Validators.validateCardId(cardId); this.logger.debug('Getting generated SQL', { cardId, parameters }); // Get the base card const baseCard = await this.apiClient.makeRequest(`/api/card/${cardId}`); if (baseCard.dataset_query.type !== 'query') { throw new Error('Card is not a query-builder card'); } // Create a modified dataset query with the provided parameters const modifiedQuery = { ...baseCard.dataset_query, query: { ...baseCard.dataset_query.query, ...parameters, }, }; // Use the query endpoint to get the generated SQL const body = { database: baseCard.dataset_query.database, type: 'query', query: modifiedQuery.query, }; const results = await this.apiClient.makeRequest('/api/dataset', { method: 'POST', body: JSON.stringify(body), }); // Extract SQL if available const sql = results.query || results.native?.query || 'SQL not available in response'; return { content: [ { type: 'text', text: `Generated SQL for Query Builder Card: Card ID: ${cardId} Card Name: ${baseCard.name} Parameters Applied: ${JSON.stringify(parameters, null, 2)} Generated SQL: ${sql} Full Query Response: ${JSON.stringify(results, null, 2)}`, }, ], }; }
  • Defines the tool schema including name, description, and inputSchema for validation (cardId: integer, parameters: object). Used by MCP server for tool listing and validation.
    name: 'get_generated_sql', description: '📝 [MODERATE RISK] Get the generated SQL for a query-builder card with parameters. Use this to see the actual SQL that Metabase generates from query builder parameters. Risk: Moderate - executes queries to generate SQL.', inputSchema: { type: 'object', properties: { cardId: { type: 'integer', description: 'The card ID', minimum: 1, }, parameters: { type: 'object', description: 'Query parameters object', additionalProperties: true, }, }, required: ['cardId', 'parameters'], }, },
  • Registers the tool in the MCP server's executeTool switch statement, dispatching calls to the CardHandlers.getGeneratedSQL method.
    case 'get_generated_sql': return await this.cardHandlers.getGeneratedSQL(args.cardId, args.parameters);

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/MikelA92/metabase-mcp-mab'

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