UNPKG

touchdesigner-mcp-server

Version:
65 lines (64 loc) 2.19 kB
import type { Transport } from "@modelcontextprotocol/server"; import { McpServer } from "@modelcontextprotocol/server"; 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 * * The `logging` capability was removed: MCP deprecates the Logging feature as * of protocol revision 2026-07-28 (SEP-2577) in favor of stderr logging. */ export interface TouchDesignerCapabilities { prompts: Record<string, never>; tools: Record<string, never>; } export interface TouchDesignerServerParams { tdClient?: TouchDesignerClient; } /** * 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(params?: TouchDesignerServerParams); /** * 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(params?: TouchDesignerServerParams): McpServer; /** * Connect to MCP transport */ connect(transport: Transport): Promise<Result<void, Error>>; /** * Disconnect from MCP transport */ disconnect(): Promise<Result<void, Error>>; /** * Check if connected to MCP transport */ isConnectedToMCP(): boolean; /** * Register all features with the server * Only called after all dependencies are initialized */ private registerAllFeatures; }