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
TypeScript
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