Unity Editor MCP Server

import { handleError } from '../utils/errors.js'; export class ToolRegistry { tools = new Map(); logger; constructor(logger) { this.logger = logger; } add(tool) { this.tools.set(tool.name, tool); this.logger.info(`Added tool: ${tool.name}`); } getAll() { return Array.from(this.tools.values()); } registerWithServer(server) { for (const tool of this.getAll()) { this.logger.info(`Registering tool with MCP server: ${tool.name}`); // Use the pattern from the restructuring plan server.tool(tool.name, tool.description, tool.parameters.shape, async (params) => { try { this.logger.info(`Executing tool: ${tool.name}`, params); const result = await tool.handler(params); this.logger.info(`Tool execution successful: ${tool.name}`); return result; } catch (error) { this.logger.error(`Tool execution failed: ${tool.name}`, error); throw handleError(error, `Tool ${tool.name}`); } }); } } }