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
TypeScript
/**
* 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