UNPKG

ultimate-mcp-server

Version:

The definitive all-in-one Model Context Protocol server for AI-assisted coding across 30+ platforms

83 lines 2.21 kB
/** * Smart Lazy Tool Registry * * Implements eager registration with lazy implementation loading * to maintain fast startup while showing all tools immediately */ import { Tool } from '@modelcontextprotocol/sdk/types.js'; import { ToolDefinition } from '../types/index.js'; export interface LazyToolDefinition extends Omit<ToolDefinition, 'handler'> { loader: () => Promise<ToolDefinition | Tool | any>; loaded?: boolean; implementation?: ToolDefinition; handler?: (args: any) => Promise<any>; } export declare class LazyToolRegistry { private tools; private loadingPromises; private loadedCount; private totalCount; /** * Register a tool with lazy loading */ registerLazyTool(config: { name: string; description: string; inputSchema: any; tags?: string[]; loader: () => Promise<ToolDefinition>; }): void; /** * Check if a tool is registered (without loading) */ hasToolMetadata(name: string): boolean; /** * Get tool metadata without loading implementation */ getToolMetadata(name: string): LazyToolDefinition | null; /** * Get all tool metadata without loading implementations */ getAllToolMetadata(): LazyToolDefinition[]; /** * Get tool implementation (loads if needed) */ getImplementation(name: string): Promise<any>; /** * Register all tools with their loaders */ registerAllTools(): void; /** * Ensure a tool is loaded */ private ensureLoaded; /** * Load a tool's implementation */ private loadTool; /** * Get all registered tools (immediate) */ getAllTools(): ToolDefinition[]; /** * Get a specific tool */ getTool(name: string): ToolDefinition | undefined; /** * Preload specific tools */ preloadTools(toolNames: string[]): Promise<void>; /** * Preload tools by tag */ preloadByTag(tag: string): Promise<void>; /** * Get loading statistics */ getStats(): { total: number; loaded: number; percentage: number; }; } //# sourceMappingURL=lazy-tool-registry.d.ts.map