Skip to main content
Glama

Coupler Analytics

by railsware
handler.ts1.58 kB
import { DatabaseSync as Database } from 'node:sqlite' import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js' import { fromError } from 'zod-validation-error' import { textResponse } from '../../util/tool-response.js' import { FileManager } from '../shared/file-manager.js' import { logger } from '../../logger/index.js' import { zodInputSchema } from './schema.js' export const handler = async (params?: Record<string, unknown>): Promise<CallToolResult> => { const validationResult = zodInputSchema.safeParse(params) if (!validationResult.success) { const error = fromError(validationResult.error) logger.error(`Invalid parameters for get-data tool: ${error.toString()}`) return textResponse({ text: `Invalid parameters for get-data tool. ${error.toString()}`, isError: true, }) } const fileManager = new FileManager(validationResult.data) let sqlitePath: string try { sqlitePath = await fileManager.getFile('sqlite') } catch (e) { return textResponse({ text: `Failed to get data flow ${validationResult.data.dataflowId} sqlite file. ${e}`, isError: true }) } const db = new Database(sqlitePath, { readOnly: true }) let statement, queryResult try { statement = db.prepare(validationResult.data.query) queryResult = statement.all() } catch (e) { return textResponse({ text: `Failed to execute query: ${e}`, isError: true }) } finally { db.close() } return textResponse({ text: JSON.stringify(queryResult, null, 2), structuredContent: { data: queryResult } }) }

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/railsware/coupler-io-mcp-server'

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