touchdesigner-mcp-server
Version:
MCP server for TouchDesigner
65 lines (64 loc) • 2.19 kB
TypeScript
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;
}