UNPKG

touchdesigner-mcp-server

Version:
61 lines (60 loc) 1.83 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { McpLogger } from "../core/logger.js"; import { registerPrompts } from "../features/prompts/index.js"; import { registerTools } from "../features/tools/index.js"; import { createTouchDesignerClient } from "../tdClient/index.js"; import { ConnectionManager } from "./connectionManager.js"; /** * TouchDesigner MCP Server implementation */ export class TouchDesignerServer { server; logger; tdClient; connectionManager; /** * Initialize TouchDesignerServer with proper dependency injection */ constructor() { this.server = new McpServer({ name: "TouchDesigner", version: "0.2.13", }, { capabilities: { prompts: {}, logging: {}, tools: {}, }, }); this.logger = new McpLogger(this.server); this.tdClient = createTouchDesignerClient({ logger: this.logger }); this.connectionManager = new ConnectionManager(this.server, this.logger, this.tdClient); this.registerAllFeatures(); } /** * Connect to MCP transport */ async connect(transport) { return this.connectionManager.connect(transport); } /** * Disconnect from MCP transport */ async disconnect() { return this.connectionManager.disconnect(); } /** * Check if connected to MCP transport */ isConnectedToMCP() { return this.connectionManager.isConnected(); } /** * Register all features with the server * Only called after all dependencies are initialized */ registerAllFeatures() { registerPrompts(this.server, this.logger); registerTools(this.server, this.logger, this.tdClient); } }