Fusion 360 MCP服务器
此项目通过轻量级MCP服务器和Fusion Python插件将MCP客户端(例如ChatGPT、Claude等)链接到Autodesk Fusion 360。
*ChatGPT和fusion-360-mcp-server生成的台球桌的CAD设计示例:*
建筑
- MCP客户端→ FastMCP服务器(stdio/HTTP) →
fusion_client.py(JSON/TCP)→ Fusion插件(FusionMCP.py) → 融合API。 - 服务器监听HTTP
http://0.0.0.0:8000/mcp(用于连接器UI)和外接程序侦听TCP127.0.0.1:8765对于命令。
项目布局
server/
- mcp_server.py –FastMCP服务器入口点,注册工具。 - tools_geometry.py –MCP工具包装器通过TCP调用Fusion。 - fusion_client.py –Fusion插件的简单TCP JSON客户端。
fusion_addin/FusionMCP/
- FusionMCP.py –Fusion插件:TCP服务器+Fusion API命令处理程序。 - FusionMCP.manifest –为Fusion添加清单。
先决条件
- 已安装Autodesk Fusion 360。
- MCP服务器的Python 3.10+。
mcp[cli]安装在服务器端的虚拟环境中。
设置
- 安装Fusion插件
- macOS:复制 fusion_addin/FusionMCP 到 ~/Library/Application Support/Autodesk/Autodesk Fusion 360/API/AddIns/. - Windows:复制到 %APPDATA%\Autodesk\Autodesk Fusion 360\API\AddIns\ (例如。, C:\Users\\AppData\Roaming\Autodesk\Autodesk Fusion 360\API\AddIns\). - 在Fusion中:工具→ 脚本和插件→ “加载项”选项卡→ 选择 FusionMCP → 运行(可选“启动时运行”)。
- 为MCP服务器创建并激活venv
cd server
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# or
.venv\Scripts\activate # Windows
pip install "mcp[cli]"- 运行MCP服务器(HTTP用于连接器UI)
cd server
. .venv/bin/activate
python mcp_server.py- 本地终结点: http://127.0.0.1:8000/mcp (也受约束 0.0.0.0). - 对于ChatGPT网络连接器,使用HTTPS隧道(例如。, ngrok http --url= 8000 随着 /mcp 路径)。 - 确保Fusion已打开,FusionMCP插件正在运行。
融合插件协议(TCP)
- 加载项正在收听
127.0.0.1:8765. - 消息:每个连接一个JSON
{"command": "...", "args": {...}}. - 响应:JSON
{"ok": bool, ...}.
关键MCP工具
几何图形/草图:
fusion_create_box(width_cm, depth_cm, height_cm)fusion_create_cylinder(diameter_cm, height_cm)fusion_create_sphere(diameter_cm)fusion_create_rect_plate(width_cm, depth_cm, thickness_cm, fillet_radius_cm=0)fusion_create_sketch_rectangle(width_cm, height_cm, plane="XY")fusion_create_sketch_circle(radius_cm, plane="XY")fusion_create_sketch_on_face(face_index)fusion_create_offset_plane(plane, offset_cm)fusion_create_sketch_circle_at(x_cm, y_cm, radius_cm)fusion_create_sketch_rectangle_at(x_cm, y_cm, width_cm, height_cm)(以x、y为中心)
操作:
fusion_extrude_last_profile(distance_cm)fusion_cut_extrude_last_profile(distance_cm)fusion_cut_extrude_last_profile_to_body()(全部;多配置文件安全)fusion_shell_last_body(thickness_cm)fusion_fillet_last_body_edges(radius_cm)fusion_delete_all_bodies()fusion_delete_body(body_index)fusion_move_body(body_index, x_cm, y_cm, z_cm)
检查:
fusion_ping()fusion_list_faces()(面部元数据)fusion_get_face_info(face_index)(中心、正常、区域、类型)fusion_get_body_bbox()(所有物体的边界框)
故障排除
- 如果连接器报告“不安全URL”或404/502,请确保使用
http://127.0.0.1:8000/mcp本地或HTTPS隧道URL/mcp. - “No bodies”错误:首先创建几何图形(例如。,
fusion_create_box)或确保尸体存在。 - 草图相关工具需要现有/活动草图;使用
fusion_create_sketch_on_face或者首先绘制平面草图。
典型工作流示例
- 清洁工作区:
fusion_delete_all_bodies. - 创建主体:
fusion_create_rect_plate(width_cm=6, depth_cm=2.5, thickness_cm=3, fillet_radius_cm=0.6). - 外壳:
fusion_shell_last_body(thickness_cm=0.25). - 检查表面:
fusion_list_faces或fusion_get_face_info(face_index=6)选择一个平面。 - 面部素描:
fusion_create_sketch_on_face(face_index=6). - 添加矩形:
fusion_create_sketch_rectangle_at(x_cm=0, y_cm=0.4, width_cm=3.5, height_cm=2.3). - 切入:
fusion_cut_extrude_last_profile_to_body(). - 检查车身:
fusion_get_body_bbox().根据需要移动/删除fusion_move_body/fusion_delete_body.
备注
- 单位:视为模型单位(在此工作流程中假设为厘米)。
- 该插件仅使用Fusion的内置Python API(没有外部deps)。
- 服务器绑定
0.0.0.0:8000便于隧道掘进;外接程序在本地监听127.0.0.1:8765.
许可证
MIT(或匹配您的项目许可证)。
