Skip to main content
Glama
promptHandlers.ts1.78 kB
import { generateRequestId } from '../../utils/index.js'; import { ErrorCode, McpError } from '../../types/core.js'; import { MetabaseApiClient } from '../../api.js'; import { promptDefinitions } from './promptDefinitions.js'; import { generateCardExecutionWorkflowPrompt, generateCardExportWorkflowPrompt, } from './promptGenerators.js'; import { ListPromptsRequest, GetPromptRequest, Prompt, LogFunction } from './types.js'; /** * Handle listing all available prompts */ export async function handleListPrompts(_request: ListPromptsRequest, logInfo: LogFunction) { logInfo('Processing request to list available prompts'); const prompts: Prompt[] = promptDefinitions.map(prompt => ({ name: prompt.name, description: prompt.description, arguments: prompt.arguments, })); return { prompts }; } /** * Handle getting a specific prompt */ export async function handleGetPrompt( request: GetPromptRequest, apiClient: MetabaseApiClient, logInfo: LogFunction, logWarn: LogFunction, logError: LogFunction ) { const requestId = generateRequestId(); const promptName = request.params?.name; const args = request.params?.arguments || {}; logInfo(`Processing prompt request: ${promptName}`, { requestId, arguments: args }); await apiClient.getSessionToken(); try { switch (promptName) { case 'execute_card': return generateCardExecutionWorkflowPrompt(args, apiClient, logInfo, logWarn); case 'export_card': return generateCardExportWorkflowPrompt(args, apiClient, logInfo, logWarn); default: throw new McpError(ErrorCode.InvalidRequest, `Unknown prompt: ${promptName}`); } } catch (error) { logError(`Failed to generate prompt: ${promptName}`, error); throw error; } }

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