Skip to main content
Glama

Convex MCP server

Official
by get-convex
schema.ts2.74 kB
import { defineSchema, defineTable } from "convex/server"; import { v } from "convex/values"; // Math.random() works in schema const _unused = Math.random(); // Date.now() works in schema const _unused_date = Date.now(); export default defineSchema({ messages: defineTable({ channel: v.string(), text: v.string(), }).index("by_channel", ["channel"]), users: defineTable({ name: v.string(), }), counters: defineTable({ count: v.number(), }), maps: defineTable({ map: v.any(), }), nodes: defineTable({ name: v.string(), }), edges: defineTable({ src: v.id("nodes"), dst: v.id("nodes"), }), sets: defineTable({ set: v.any(), }), any: defineTable(v.any()), // This table serves as a serialization test to make sure backend can // serialize all the types in schemas. testTypes: defineTable({ nullField: v.null(), numberField: v.number(), int64Field: v.int64(), booleanField: v.boolean(), stringField: v.string(), bytesField: v.bytes(), arrayField: v.array(v.boolean()), anyField: v.any(), literalBigint: v.literal(1n), literalNumber: v.literal(0.0), literalString: v.literal("hello world"), literalBoolean: v.literal(true), union: v.union( v.object({ a: v.array(v.number()), b: v.optional(v.string()) }), v.object({ c: v.any(), d: v.bytes() }), ), object: v.object({ a: v.array(v.number()), b: v.optional(v.string()) }), }), foods: defineTable({ description: v.string(), cuisine: v.string(), theLetterA: v.string(), bOrC: v.string(), embedding: v.array(v.float64()), }) .vectorIndex("by_embedding", { vectorField: "embedding", dimensions: 1536, filterFields: ["cuisine"], }) .searchIndex("by_description", { searchField: "description", filterFields: ["theLetterA", "cuisine", "bOrC"], }), // This table serves as a test to ensure virtual ids can be represented // within schemas as foreign keys. virtualForeignKeys: defineTable({ foreignKeyField: v.id("_scheduled_functions"), }), stagedIndexes: defineTable({ name: v.string(), embedding: v.array(v.float64()), }) .index("by_name", { fields: ["name"], staged: true }) .searchIndex("search_by_name", { searchField: "name", staged: true, }) .vectorIndex("by_embedding", { vectorField: "embedding", dimensions: 1536, staged: true, }), }); // Keep this in sync with the schema! It's important for cleaning up data between tests. export const ALL_TABLE_NAMES = [ "messages", "users", "maps", "nodes", "edges", "sets", "any", "testTypes", "foods", "stagedIndexes", ] as const;

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