UNPKG

synaptra

Version:

A high-performance Model Context Protocol server for GraphQL APIs with advanced features, type-safety, and developer experience improvements

269 lines 9.27 kB
import { z } from 'zod'; import { GraphQLSchema, DocumentNode, GraphQLError } from 'graphql'; export declare const McpConfigSchema: z.ZodObject<{ name: z.ZodDefault<z.ZodString>; endpoint: z.ZodString; headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>; defaultApiKey: z.ZodOptional<z.ZodString>; allowMutations: z.ZodDefault<z.ZodBoolean>; allowSubscriptions: z.ZodDefault<z.ZodBoolean>; schema: z.ZodOptional<z.ZodString>; timeout: z.ZodDefault<z.ZodNumber>; retries: z.ZodDefault<z.ZodNumber>; security: z.ZodDefault<z.ZodObject<{ maxDepth: z.ZodDefault<z.ZodNumber>; maxComplexity: z.ZodDefault<z.ZodNumber>; allowIntrospection: z.ZodDefault<z.ZodBoolean>; rateLimiting: z.ZodDefault<z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; windowMs: z.ZodDefault<z.ZodNumber>; max: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; windowMs: number; max: number; }, { enabled?: boolean | undefined; windowMs?: number | undefined; max?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { maxDepth: number; maxComplexity: number; allowIntrospection: boolean; rateLimiting: { enabled: boolean; windowMs: number; max: number; }; }, { maxDepth?: number | undefined; maxComplexity?: number | undefined; allowIntrospection?: boolean | undefined; rateLimiting?: { enabled?: boolean | undefined; windowMs?: number | undefined; max?: number | undefined; } | undefined; }>>; logging: z.ZodDefault<z.ZodObject<{ level: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug"]>>; queries: z.ZodDefault<z.ZodBoolean>; performance: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { level: "error" | "warn" | "info" | "debug"; queries: boolean; performance: boolean; }, { level?: "error" | "warn" | "info" | "debug" | undefined; queries?: boolean | undefined; performance?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { name: string; endpoint: string; headers: Record<string, string>; allowMutations: boolean; allowSubscriptions: boolean; timeout: number; retries: number; security: { maxDepth: number; maxComplexity: number; allowIntrospection: boolean; rateLimiting: { enabled: boolean; windowMs: number; max: number; }; }; logging: { level: "error" | "warn" | "info" | "debug"; queries: boolean; performance: boolean; }; defaultApiKey?: string | undefined; schema?: string | undefined; }, { endpoint: string; name?: string | undefined; headers?: Record<string, string> | undefined; defaultApiKey?: string | undefined; allowMutations?: boolean | undefined; allowSubscriptions?: boolean | undefined; schema?: string | undefined; timeout?: number | undefined; retries?: number | undefined; security?: { maxDepth?: number | undefined; maxComplexity?: number | undefined; allowIntrospection?: boolean | undefined; rateLimiting?: { enabled?: boolean | undefined; windowMs?: number | undefined; max?: number | undefined; } | undefined; } | undefined; logging?: { level?: "error" | "warn" | "info" | "debug" | undefined; queries?: boolean | undefined; performance?: boolean | undefined; } | undefined; }>; export type McpConfig = z.infer<typeof McpConfigSchema>; export interface GraphQLEndpoint { url: string; headers: Record<string, string>; timeout: number; } export interface SchemaInfo { schema: GraphQLSchema; sdl: string; lastUpdated: Date; version: string; } export interface QueryInfo { query: string | DocumentNode; variables?: Record<string, any>; operationName?: string; context?: Record<string, any>; headers?: Record<string, string>; } export interface QueryResult { data?: any; errors?: GraphQLError[]; extensions?: Record<string, any>; } export interface PerformanceMetrics { startTime: number; endTime?: number; duration?: number; queryComplexity?: number; queryDepth?: number; } export declare const IntrospectSchemaParamsSchema: z.ZodObject<{ format: z.ZodDefault<z.ZodEnum<["sdl", "json", "introspection"]>>; includeDescription: z.ZodDefault<z.ZodBoolean>; includeDeprecated: z.ZodDefault<z.ZodBoolean>; headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; }, "strip", z.ZodTypeAny, { format: "sdl" | "json" | "introspection"; includeDescription: boolean; includeDeprecated: boolean; headers?: Record<string, string> | undefined; }, { headers?: Record<string, string> | undefined; format?: "sdl" | "json" | "introspection" | undefined; includeDescription?: boolean | undefined; includeDeprecated?: boolean | undefined; }>; export declare const QueryGraphQLParamsSchema: z.ZodObject<{ query: z.ZodString; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; operationName: z.ZodOptional<z.ZodString>; validate: z.ZodDefault<z.ZodBoolean>; dryRun: z.ZodDefault<z.ZodBoolean>; headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; }, "strip", z.ZodTypeAny, { query: string; validate: boolean; dryRun: boolean; headers?: Record<string, string> | undefined; variables?: Record<string, any> | undefined; operationName?: string | undefined; }, { query: string; headers?: Record<string, string> | undefined; variables?: Record<string, any> | undefined; operationName?: string | undefined; validate?: boolean | undefined; dryRun?: boolean | undefined; }>; export declare const BuildQueryParamsSchema: z.ZodObject<{ operation: z.ZodEnum<["query", "mutation", "subscription"]>; selection: z.ZodString; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; fragments: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; }, "strip", z.ZodTypeAny, { operation: "query" | "mutation" | "subscription"; selection: string; variables?: Record<string, any> | undefined; fragments?: string[] | undefined; }, { operation: "query" | "mutation" | "subscription"; selection: string; variables?: Record<string, any> | undefined; fragments?: string[] | undefined; }>; export declare const AnalyzeQueryParamsSchema: z.ZodObject<{ query: z.ZodString; variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; includeComplexity: z.ZodDefault<z.ZodBoolean>; includeDepth: z.ZodDefault<z.ZodBoolean>; includeFields: z.ZodDefault<z.ZodBoolean>; headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; }, "strip", z.ZodTypeAny, { query: string; includeComplexity: boolean; includeDepth: boolean; includeFields: boolean; headers?: Record<string, string> | undefined; variables?: Record<string, any> | undefined; }, { query: string; headers?: Record<string, string> | undefined; variables?: Record<string, any> | undefined; includeComplexity?: boolean | undefined; includeDepth?: boolean | undefined; includeFields?: boolean | undefined; }>; export interface SchemaIntrospectionResult { schema: string; format: string; types: number; queries: number; mutations: number; subscriptions: number; version: string; lastUpdated: string; } export interface QueryAnalysisResult { operation: string; complexity?: number; depth?: number; fields?: string[]; variables?: string[]; fragments?: string[]; errors?: string[]; warnings?: string[]; } export declare class McpGraphQLError extends Error { code: string; details?: Record<string, any> | undefined; constructor(message: string, code: string, details?: Record<string, any> | undefined); } export declare class SchemaError extends McpGraphQLError { constructor(message: string, details?: Record<string, any>); } export declare class QueryError extends McpGraphQLError { constructor(message: string, details?: Record<string, any>); } export declare class ValidationError extends McpGraphQLError { constructor(message: string, details?: Record<string, any>); } export declare class NetworkError extends McpGraphQLError { constructor(message: string, details?: Record<string, any>); } export interface Plugin { name: string; version: string; beforeRequest?: (query: QueryInfo) => Promise<QueryInfo>; afterRequest?: (result: QueryResult, query: QueryInfo) => Promise<QueryResult>; beforeIntrospection?: (endpoint: GraphQLEndpoint) => Promise<GraphQLEndpoint>; afterIntrospection?: (schema: SchemaInfo) => Promise<SchemaInfo>; } export interface Middleware { name: string; handler: (context: any, next: () => Promise<any>) => Promise<any>; } //# sourceMappingURL=index.d.ts.map