UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio

110 lines (109 loc) 3.47 kB
/** * MCP Client Factory * Creates and manages MCP clients for external servers * Supports stdio, SSE, WebSocket, and HTTP transports * Enhanced with retry, rate limiting, and OAuth 2.1 support */ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js"; import type { ClientCapabilities } from "@modelcontextprotocol/sdk/types.js"; import { type ChildProcess } from "child_process"; import type { MCPTransportType, MCPServerInfo, MCPClientResult } from "../types/index.js"; /** * MCPClientFactory * Factory class for creating MCP clients with different transports */ export declare class MCPClientFactory { private static readonly NEUROLINK_IMPLEMENTATION; private static readonly DEFAULT_CAPABILITIES; /** * Create an MCP client for the given server configuration * Enhanced with retry logic, rate limiting, and circuit breaker protection */ static createClient(config: MCPServerInfo, timeout?: number): Promise<MCPClientResult>; /** * Internal client creation logic */ private static createClientInternal; /** * Create transport based on configuration */ private static createTransport; /** * Create stdio transport with process spawning */ private static createStdioTransport; /** * Create SSE transport */ private static createSSETransport; /** * Create WebSocket transport */ private static createWebSocketTransport; /** * Create HTTP transport (Streamable HTTP) * Enhanced with OAuth 2.1, rate limiting, and configurable timeouts */ private static createHTTPTransport; /** * Create a fetch wrapper with timeout support */ private static createFetchWithTimeout; /** * Create an enhanced fetch function with timeout and optional retry */ private static createEnhancedFetch; /** * Set up OAuth provider if configured */ private static setupAuthProvider; /** * Get authorization header based on auth configuration */ private static getAuthorizationHeader; /** * Perform MCP handshake and get server capabilities */ private static performHandshake; /** * Get server information */ private static getServerInfo; /** * Extract capabilities from server info */ private static extractCapabilities; /** * Create a timeout promise with AbortController support * Provides consistent async timeout patterns across the factory */ private static createTimeoutPromise; /** * Close an MCP client and clean up resources */ static closeClient(client: Client, transport: Transport, process?: ChildProcess): Promise<void>; /** * Test connection to an MCP server */ static testConnection(config: MCPServerInfo, timeout?: number): Promise<{ success: boolean; error?: string; capabilities?: ClientCapabilities; }>; /** * Validate MCP server configuration for client creation */ static validateClientConfig(config: MCPServerInfo): { isValid: boolean; errors: string[]; }; /** * Get supported transport types */ static getSupportedTransports(): MCPTransportType[]; /** * Get default client capabilities */ static getDefaultCapabilities(): ClientCapabilities; }