Revit MCP

by revit-mcp
Verified
// import { z } from "zod"; // import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; // import { RevitClientConnection } from "../utils/SocketClient.js"; // export function registerCreateWallTool(server: McpServer) { // server.tool( // "createWall", // "create wall", // { // startX: z.number(), // startY: z.number(), // endX: z.number(), // endY: z.number(), // height: z.number(), // thickness: z.number(), // }, // async (args, extra) => { // // 创建参数对象 // const params = { // startX: args.startX, // startY: args.startY, // endX: args.endX, // endY: args.endY, // height: args.height, // thickness: args.thickness, // }; // const revitClient = new RevitClientConnection("localhost", 8080); // try { // // 等待连接建立 // await new Promise<void>((resolve, reject) => { // // 如果已连接,直接解析 // if (revitClient.isConnected) { // resolve(); // return; // } // // 设置临时事件监听器 // const onConnect = () => { // revitClient.socket.removeListener("connect", onConnect); // revitClient.socket.removeListener("error", onError); // resolve(); // }; // const onError = (error: any) => { // revitClient.socket.removeListener("connect", onConnect); // revitClient.socket.removeListener("error", onError); // reject(new Error("连接到Revit客户端失败")); // }; // // 添加事件监听器 // revitClient.socket.on("connect", onConnect); // revitClient.socket.on("error", onError); // // 连接到服务器 // revitClient.connect(); // // 设置连接超时 // setTimeout(() => { // revitClient.socket.removeListener("connect", onConnect); // revitClient.socket.removeListener("error", onError); // reject(new Error("连接到Revit客户端超时")); // }, 5000); // }); // // 使用新的sendCommand方法,直接传递命令名称和参数 // const response = await revitClient.sendCommand("createWall", params); // // 检查是否有错误信息 // if (response.errorMessage && response.errorMessage.trim() !== "") { // return { // content: [ // { // type: "text", // text: `创建墙体失败: ${response.errorMessage}`, // }, // ], // isError: true, // }; // } // // 成功创建墙体,返回详细信息 // return { // content: [ // { // type: "text", // text: `墙体创建成功!\n墙体ID: ${response.elementId}\n起点: (${response.startPoint.x}, ${response.startPoint.y})\n终点: (${response.endPoint.x}, ${response.endPoint.y})\n高度: ${response.height}\n厚度: ${response.thickness}`, // }, // ], // isError: false, // }; // } catch (error) { // return { // content: [ // { // type: "text", // text: `处理Revit响应时出错: ${ // error instanceof Error ? error.message : String(error) // }`, // }, // ], // isError: true, // }; // } finally { // // 操作完成后关闭连接 // revitClient.disconnect(); // } // } // ); // }