@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
TypeScript
/**
* 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;
}