UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and

107 lines (106 loc) 3.28 kB
/** * MCP Client Factory * Creates and manages MCP clients for external servers * Supports stdio, SSE, and WebSocket transports */ 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 { ChildProcess } from "child_process"; import type { MCPTransportType } from "../types/externalMcp.js"; import type { MCPServerInfo } from "../types/mcpTypes.js"; /** * MCP client creation result */ export interface MCPClientResult { /** Whether client creation was successful */ success: boolean; /** Created client instance */ client?: Client; /** Created transport instance */ transport?: Transport; /** Created process (for stdio transport) */ process?: ChildProcess; /** Error message if failed */ error?: string; /** Creation duration in milliseconds */ duration: number; /** Server capabilities reported during handshake */ capabilities?: ClientCapabilities; } /** * 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 */ 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; /** * 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; }