synaptra
Version:
A high-performance Model Context Protocol server for GraphQL APIs with advanced features, type-safety, and developer experience improvements
97 lines • 4.09 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NetworkError = exports.ValidationError = exports.QueryError = exports.SchemaError = exports.McpGraphQLError = exports.AnalyzeQueryParamsSchema = exports.BuildQueryParamsSchema = exports.QueryGraphQLParamsSchema = exports.IntrospectSchemaParamsSchema = exports.McpConfigSchema = void 0;
const zod_1 = require("zod");
// Configuration schemas
exports.McpConfigSchema = zod_1.z.object({
name: zod_1.z.string().default('mcp-gql'),
endpoint: zod_1.z.string().url(),
headers: zod_1.z.record(zod_1.z.string()).default({}), // Default headers, can be overridden per request
defaultApiKey: zod_1.z.string().optional(), // Default API key used when no Authorization header is provided
allowMutations: zod_1.z.boolean().default(false),
allowSubscriptions: zod_1.z.boolean().default(false),
schema: zod_1.z.string().optional(),
timeout: zod_1.z.number().default(30000),
retries: zod_1.z.number().default(3),
security: zod_1.z.object({
maxDepth: zod_1.z.number().default(10),
maxComplexity: zod_1.z.number().default(1000),
allowIntrospection: zod_1.z.boolean().default(true),
rateLimiting: zod_1.z.object({
enabled: zod_1.z.boolean().default(false),
windowMs: zod_1.z.number().default(60000),
max: zod_1.z.number().default(100),
}).default({}),
}).default({}),
logging: zod_1.z.object({
level: zod_1.z.enum(['error', 'warn', 'info', 'debug']).default('info'),
queries: zod_1.z.boolean().default(false),
performance: zod_1.z.boolean().default(false),
}).default({}),
});
// Tool parameter schemas
exports.IntrospectSchemaParamsSchema = zod_1.z.object({
format: zod_1.z.enum(['sdl', 'json', 'introspection']).default('sdl'),
includeDescription: zod_1.z.boolean().default(true),
includeDeprecated: zod_1.z.boolean().default(false),
headers: zod_1.z.record(zod_1.z.string()).optional(), // Per-request headers
});
exports.QueryGraphQLParamsSchema = zod_1.z.object({
query: zod_1.z.string(),
variables: zod_1.z.record(zod_1.z.any()).optional(),
operationName: zod_1.z.string().optional(),
validate: zod_1.z.boolean().default(true),
dryRun: zod_1.z.boolean().default(false),
headers: zod_1.z.record(zod_1.z.string()).optional(), // Per-request headers
});
exports.BuildQueryParamsSchema = zod_1.z.object({
operation: zod_1.z.enum(['query', 'mutation', 'subscription']),
selection: zod_1.z.string(),
variables: zod_1.z.record(zod_1.z.any()).optional(),
fragments: zod_1.z.array(zod_1.z.string()).optional(),
});
exports.AnalyzeQueryParamsSchema = zod_1.z.object({
query: zod_1.z.string(),
variables: zod_1.z.record(zod_1.z.any()).optional(),
includeComplexity: zod_1.z.boolean().default(true),
includeDepth: zod_1.z.boolean().default(true),
includeFields: zod_1.z.boolean().default(true),
headers: zod_1.z.record(zod_1.z.string()).optional(), // Per-request headers
});
// Error types
class McpGraphQLError extends Error {
code;
details;
constructor(message, code, details) {
super(message);
this.code = code;
this.details = details;
this.name = 'McpGraphQLError';
}
}
exports.McpGraphQLError = McpGraphQLError;
class SchemaError extends McpGraphQLError {
constructor(message, details) {
super(message, 'SCHEMA_ERROR', details);
}
}
exports.SchemaError = SchemaError;
class QueryError extends McpGraphQLError {
constructor(message, details) {
super(message, 'QUERY_ERROR', details);
}
}
exports.QueryError = QueryError;
class ValidationError extends McpGraphQLError {
constructor(message, details) {
super(message, 'VALIDATION_ERROR', details);
}
}
exports.ValidationError = ValidationError;
class NetworkError extends McpGraphQLError {
constructor(message, details) {
super(message, 'NETWORK_ERROR', details);
}
}
exports.NetworkError = NetworkError;
//# sourceMappingURL=index.js.map