import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js"; import type { ILogger } from "../core/logger.js"; import type { Result } from "../core/result.js"; import type { TouchDesignerClient } from "../tdClient/touchDesignerClient.js"; /** * Capabilities supported by TouchDesigner MCP Server */ export interface TouchDesignerCapabilities { logging: Record; prompts: Record; tools: Record; } /** * TouchDesigner MCP Server implementation */ export declare class TouchDesignerServer { readonly server: McpServer; readonly logger: ILogger; readonly tdClient: TouchDesignerClient; private readonly connectionManager; /** * Initialize TouchDesignerServer with proper dependency injection */ constructor(); /** * Create a new TouchDesignerServer instance * * Factory method for creating server instances in multi-session scenarios. * Each session should have its own server instance to maintain independent MCP protocol state. * * @returns McpServer instance ready for connection to a transport * * @example * ```typescript * // In TransportRegistry * const serverFactory = () => TouchDesignerServer.create(); * const transport = await registry.getOrCreate(sessionId, body, serverFactory); * ``` */ static create(): McpServer; /** * Connect to MCP transport */ connect(transport: Transport): Promise>; /** * Disconnect from MCP transport */ disconnect(): Promise>; /** * Check if connected to MCP transport */ isConnectedToMCP(): boolean; /** * Register all features with the server * Only called after all dependencies are initialized */ private registerAllFeatures; }