import { EventEmitter } from 'node:events'; import type { GetTaskPayloadResult, Task } from '@modelcontextprotocol/sdk/types.js'; import type { PromptMetadata, ResourceMetadata, ResourceTemplateMetadata, ToolMetadata } from '@nest-mcp/common'; /** * Configuration for proxying MCP task protocol requests to upstream servers. * Used by the gateway to forward tasks/list, tasks/get, tasks/cancel, and * tasks/result to the appropriate upstream client. */ export interface TaskHandlerConfig { listTasks(cursor?: string): Promise<{ tasks: Task[]; nextCursor?: string; }>; getTask(taskId: string): Promise; cancelTask(taskId: string): Promise; getTaskPayload(taskId: string): Promise; } export interface RegisteredTool extends ToolMetadata { instance: Record; } export interface RegisteredResource extends ResourceMetadata { instance: Record; } export interface RegisteredResourceTemplate extends ResourceTemplateMetadata { instance: Record; } export interface RegisteredPrompt extends PromptMetadata { instance: Record; } export interface RegisteredCompletion { refType: 'ref/prompt' | 'ref/resource'; refName: string; methodName: string; instance: Record; } export declare class McpRegistryService { private readonly logger; readonly events: EventEmitter<[never]>; private readonly tools; private readonly resources; private readonly resourceTemplates; private readonly prompts; private readonly completionHandlers; private _taskHandlerConfig?; get hasTools(): boolean; get hasResources(): boolean; get hasResourceTemplates(): boolean; get hasPrompts(): boolean; get taskHandlerConfig(): TaskHandlerConfig | undefined; /** * Register a task handler config for gateway-style task passthrough. * When set, the transport layer registers tasks/list, tasks/get, tasks/cancel, * and tasks/result handlers that delegate to this config instead of a local TaskManager. */ registerTaskHandlers(config: TaskHandlerConfig): void; /** * Broadcast a server-initiated notification to all active downstream sessions. * Used by the gateway to forward upstream notifications (e.g. notifications/tasks/status) * to every connected downstream client. */ broadcastNotification(method: string, params: Record): void; /** * Scan a provider instance for decorated methods and register them. */ registerProvider(instance: unknown): void; private scanToolMetadata; private scanResourceMetadata; private scanResourceTemplateMetadata; private scanPromptMetadata; private scanCompletionMetadata; getTool(name: string): RegisteredTool | undefined; getAllTools(): RegisteredTool[]; getResource(uri: string): RegisteredResource | undefined; getAllResources(): RegisteredResource[]; getResourceTemplate(uriTemplate: string): RegisteredResourceTemplate | undefined; getAllResourceTemplates(): RegisteredResourceTemplate[]; getPrompt(name: string): RegisteredPrompt | undefined; getAllPrompts(): RegisteredPrompt[]; getCompletionHandler(refType: 'ref/prompt' | 'ref/resource', refName: string): RegisteredCompletion | undefined; getAllCompletionHandlers(): RegisteredCompletion[]; registerTool(tool: RegisteredTool): void; unregisterTool(name: string): boolean; registerResource(resource: RegisteredResource): void; unregisterResource(uri: string): boolean; registerPrompt(prompt: RegisteredPrompt): void; registerResourceTemplate(template: RegisteredResourceTemplate): void; unregisterResourceTemplate(uriTemplate: string): boolean; registerCompletionHandler(handler: RegisteredCompletion): void; private warnIfMissingDescription; unregisterPrompt(name: string): boolean; } //# sourceMappingURL=registry.service.d.ts.map