Skip to main content
Glama
christophersutton

InstantDB MCP Server

queryDB.ts2.43 kB
import { init } from "@instantdb/admin"; import { queryStore, Query } from "../utils/queries.js"; // Extract app ID and admin token from environment variables const INSTANT_APP_ID = process.env.INSTANT_APP_ID; const INSTANT_APP_ADMIN_TOKEN = process.env.INSTANT_APP_ADMIN_TOKEN; if (!INSTANT_APP_ID || !INSTANT_APP_ADMIN_TOKEN) { throw new Error('Environment variables INSTANT_APP_ID and INSTANT_APP_ADMIN_TOKEN are required'); } // Initialize InstantDB Admin SDK const db = init({ appId: INSTANT_APP_ID, adminToken: INSTANT_APP_ADMIN_TOKEN, }); // Define interface for the return value interface QueryResult { content: Query; } export function queryDB(request: { query: string; name: string }): Promise<QueryResult> { const { query, name } = request; console.error("[Tool] queryDB called with name:", name, "and query:", query); if (!query || !name) { throw new Error('Both "query" and "name" parameters are required'); } return new Promise(async (resolve, reject) => { try { console.error("[Tool] Executing InstantDB query:", query); let parsedQuery; try { parsedQuery = JSON.parse(query); } catch (parseError) { console.error('[Tool] Error parsing query JSON:', parseError); const errorMessage = parseError instanceof Error ? parseError.message : 'Unknown error during JSON parsing'; const errorResult = queryStore.addQuery(name, query, null, false, `Invalid query format: ${errorMessage}`); resolve({ content: errorResult }); return; } // Execute the query using InstantDB Admin SDK const result = await db.query(parsedQuery); // Store the successful query result const newQuery = queryStore.addQuery(name, query, result, true); console.error( "[Tool] Query executed successfully, result:", JSON.stringify(result, null, 2) ); resolve({ content: newQuery }); } catch (error) { console.error("[Tool] Error executing query:", error); // Store the failed query attempt with error information const errorMessage = error instanceof Error ? error.message : 'Unknown error during query execution'; const errorQuery = queryStore.addQuery( name, query, null, false, errorMessage ); resolve({ content: errorQuery }); } }); }

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/christophersutton/instantdb-mcp'

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