Skip to main content
Glama

Convex MCP server

Official
by get-convex
getSchemas.ts1.91 kB
import { DatabaseReader } from "../../_generated/server"; import { Doc } from "../../_generated/dataModel"; import { queryPrivateSystem } from "../secretSystemTables"; import { v } from "convex/values"; type SchemaMetadata = Doc<"_schemas">; export const getSchemaByState = async ( db: DatabaseReader, state: SchemaMetadata["state"]["state"], ) => await db .query("_schemas") .withIndex("by_state", (q) => q.eq("state", { state })) .unique(); export default queryPrivateSystem({ args: { componentId: v.optional(v.union(v.string(), v.null())) }, handler: async function ({ db }): Promise<{ active?: string; inProgress?: string; }> { const active = await getSchemaByState(db, "active"); const pending = await getSchemaByState(db, "pending"); const validated = await getSchemaByState(db, "validated"); if (pending && validated) { throw new Error("Unexpectedly found both pending and validated schemas"); } return { active: active?.schema, inProgress: pending?.schema || validated?.schema, }; }, }); export const schemaValidationProgress = queryPrivateSystem({ args: { componentId: v.optional(v.union(v.string(), v.null())) }, handler: async function ({ db, }): Promise<{ numDocsValidated: number; totalDocs: number | null } | null> { const pending = await getSchemaByState(db, "pending"); if (!pending) { return null; } const schemaValidationProgressDoc = await db .query("_schema_validation_progress") .withIndex("by_schema_id", (q) => q.eq("schemaId", pending._id)) .unique(); if (!schemaValidationProgressDoc) { return null; } return { numDocsValidated: Number(schemaValidationProgressDoc.numDocsValidated), totalDocs: schemaValidationProgressDoc.totalDocs ? Number(schemaValidationProgressDoc.totalDocs) : null, }; }, });

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