Skip to main content
Glama
schema.ts1.99 kB
/** * Zod schemas for validating mcpGraph configuration */ import { z } from "zod"; const jsonSchemaPropertySchema = z.object({ type: z.string(), description: z.string().optional(), }); const jsonSchemaSchema = z.object({ type: z.string(), properties: z.record(jsonSchemaPropertySchema).optional(), required: z.array(z.string()).optional(), description: z.string().optional(), }); const serverMetadataSchema = z.object({ name: z.string(), version: z.string(), description: z.string(), }); const baseNodeSchema = z.object({ id: z.string(), type: z.string(), next: z.string().optional(), }); const entryNodeSchema = baseNodeSchema.extend({ type: z.literal("entry"), next: z.string(), }); const exitNodeSchema = baseNodeSchema.extend({ type: z.literal("exit"), }); const mcpToolNodeSchema = baseNodeSchema.extend({ type: z.literal("mcp_tool"), server: z.string(), tool: z.string(), args: z.record(z.unknown()), next: z.string(), }); const transformNodeSchema = baseNodeSchema.extend({ type: z.literal("transform"), transform: z.object({ expr: z.string(), }), next: z.string(), }); const switchConditionSchema = z.object({ rule: z.unknown().optional(), target: z.string(), }); const switchNodeSchema = baseNodeSchema.extend({ type: z.literal("switch"), conditions: z.array(switchConditionSchema), }); const nodeSchema = z.discriminatedUnion("type", [ entryNodeSchema, exitNodeSchema, mcpToolNodeSchema, transformNodeSchema, switchNodeSchema, ]); const toolDefinitionSchema = z.object({ name: z.string(), description: z.string(), inputSchema: jsonSchemaSchema, outputSchema: jsonSchemaSchema, entryNode: z.string(), exitNode: z.string(), }); export const mcpGraphConfigSchema = z.object({ version: z.string(), server: serverMetadataSchema, tools: z.array(toolDefinitionSchema), nodes: z.array(nodeSchema), }); export type McpGraphConfigSchema = z.infer<typeof mcpGraphConfigSchema>;

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/TeamSparkAI/mcpGraph'

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