@contextprompt/completions-sdk
Version:
Multi-provider completions SDK with MCP support for OpenAI, Claude, and Gemini
82 lines (81 loc) • 3.45 kB
TypeScript
import OpenAI from "openai";
import { ChildProcess } from "child_process";
interface MCPServerDefinition {
command?: string;
args?: string[];
type?: "http" | "streamable-http";
url?: string;
headers?: Record<string, string>;
timeout?: number;
serverInstructions?: boolean;
env?: Record<string, string>;
}
interface MCPServerConfig {
[serverName: string]: MCPServerDefinition;
}
interface MCPServerStatus {
name: string;
type: "command" | "http" | "streamable-http";
status: "connected" | "disconnected" | "error" | "starting";
pid?: number;
url?: string;
lastError?: string;
uptime?: number;
}
interface MCPServerInstance {
name: string;
config: MCPServerDefinition;
type: "command" | "http" | "streamable-http";
process?: ChildProcess;
sessionId?: string;
initialized: boolean;
lastError?: string;
startTime?: number;
}
declare class MultiProviderOpenAI extends OpenAI {
mcpServersConfig: MCPServerConfig;
mcpEnabled: boolean;
mcpServerInstances: Map<string, MCPServerInstance>;
mcpToolsCache: any;
mcpLastCacheTime: number;
CACHE_DURATION: number;
toolToServerMap: Map<string, string>;
originalOpenAIOptions: any;
mcpInitializationPromise: Promise<any>;
mcpClient: any;
constructor(options?: any);
_overrideChatCompletions(): void;
ensureMCPInitialized(): Promise<void>;
initializeMCP(): Promise<void>;
_initializeMCPServer(serverName: string): Promise<void>;
_getServerType(config: MCPServerDefinition): "command" | "http" | "streamable-http";
_initializeCommandServer(instance: MCPServerInstance): Promise<void>;
_initializeHttpServer(instance: MCPServerInstance): Promise<void>;
_mcpRequest(serverName: string, method: string, params?: {}, sessionId?: any, customInstance?: MCPServerInstance): Promise<{
data: any;
response: Response;
}>;
getMCPTools(): Promise<any>;
_getMCPToolsInternal(): Promise<any[]>;
_displayToolList(tools: any): void;
callMCPTool(name: string, args: any): Promise<any>;
callMCPTool(serverName: string, toolName: string, args: any): Promise<any>;
private _callToolByName;
private _callToolOnServer;
listAvailableTools(serverName?: string): Promise<any[]>;
private _getToolsFromServer;
getMCPServerStatus(serverName?: string): Promise<MCPServerStatus | MCPServerStatus[]>;
private _getServerStatus;
restartMCPServer(serverName: string): Promise<void>;
getMCPServerCapabilities(serverName: string): Promise<any>;
_initializePerRequestServers(mcpServersConfig: MCPServerConfig): Promise<Map<string, MCPServerInstance>>;
_getToolsFromPerRequestServers(perRequestServers: Map<string, MCPServerInstance>): Promise<any[]>;
_cleanupPerRequestServers(perRequestServers: Map<string, MCPServerInstance>): void;
_callToolWithServers(toolName: string, args: any, perRequestServers: Map<string, MCPServerInstance>): Promise<any>;
createChatCompletion(options: any): Promise<any>;
createWithMCPTools(options: any): Promise<any>;
_createStreamingWithTools(options: any, perRequestServers?: Map<any, any>, toolExecutionFeedback?: boolean): AsyncGenerator<any, void, unknown>;
_processToolCalls(response: any, originalOptions: any, perRequestServers?: Map<any, any>): Promise<any>;
}
export default MultiProviderOpenAI;
export { MultiProviderOpenAI as OpenAI };