Skip to main content
Glama

Convex MCP server

Official
by get-convex
baseClient.ts1.54 kB
import { jsonToConvex, convexToJson } from "convex/values"; import { client } from "./websocket"; import { outgoingMessages } from "./protocol"; const subscriptions = new Map<string, () => void>(); export function addQuery(args: { udfPath: string; udfArgsJson: string }) { const udfArgs = jsonToConvex(JSON.parse(args.udfArgsJson)) as any; const { queryToken, unsubscribe } = client.subscribe(args.udfPath, udfArgs); subscriptions.set(queryToken, unsubscribe); return queryToken; } export function queryResult(token: string) { const result = (client as any).localQueryResultByToken(token); if (result === undefined) { return null; } else { return JSON.stringify(convexToJson(result)); } } export function removeQuery(token: string) { const unsubscribe = subscriptions.get(token); if (!unsubscribe) { throw new Error(`Unknown query token: ${token}`); } unsubscribe(); } export function runMutation(args: { mutationId: number; udfPath: string; udfArgsJson: string; }) { const udfArgs = jsonToConvex(JSON.parse(args.udfArgsJson)) as any; client .mutation(args.udfPath, udfArgs) .then((result) => { outgoingMessages.push({ type: "mutationDone", mutationId: args.mutationId, result: { type: "success", value: convexToJson(result) as any }, }); }) .catch((error) => { outgoingMessages.push({ type: "mutationDone", mutationId: args.mutationId, result: { type: "failure", error: error.toString() }, }); }); }

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/get-convex/convex-backend'

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