perkovicluka/fusion-360-mcp-server
3.2
If you are the rightful owner of fusion-360-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This project connects an MCP client to Autodesk Fusion 360 using a lightweight MCP server and a Fusion Python add-in.
Tools
5
Resources
0
Prompts
0
Fusion 360 MCP Server
This project links an MCP client (e.g., ChatGPT, Claude, etc.) to Autodesk Fusion 360 through a lightweight MCP server and a Fusion Python add-in.
Example CAD design of a billiards table generated by ChatGPT and fusion-360-mcp-server:
Architecture
- MCP client → FastMCP server (stdio/HTTP) →
fusion_client.py(JSON/TCP) → Fusion add-in (FusionMCP.py) → Fusion API. - Server listens on HTTP
http://0.0.0.0:8000/mcp(for connector UIs) and the add-in listens on TCP127.0.0.1:8765for commands.
Project Layout
server/mcp_server.py– FastMCP server entrypoint, registers tools.tools_geometry.py– MCP tool wrappers calling Fusion over TCP.fusion_client.py– Simple TCP JSON client to the Fusion add-in.
fusion_addin/FusionMCP/FusionMCP.py– Fusion add-in: TCP server + Fusion API command handlers.FusionMCP.manifest– Add-in manifest for Fusion.
Prerequisites
- Autodesk Fusion 360 installed.
- Python 3.10+ for the MCP server.
mcp[cli]installed in a virtual environment for the server side.
Setup
-
Install the Fusion add-in
- macOS: copy
fusion_addin/FusionMCPto~/Library/Application Support/Autodesk/Autodesk Fusion 360/API/AddIns/. - Windows: copy to
%APPDATA%\Autodesk\Autodesk Fusion 360\API\AddIns\(e.g.,C:\Users\<you>\AppData\Roaming\Autodesk\Autodesk Fusion 360\API\AddIns\). - In Fusion: Tools → Scripts and Add-Ins → Add-Ins tab → select
FusionMCP→ Run (optionally “Run on Startup”).
- macOS: copy
-
Create and activate a venv for the MCP server
cd server python3 -m venv .venv source .venv/bin/activate # macOS/Linux # or .venv\Scripts\activate # Windows pip install "mcp[cli]" -
Run the MCP server (HTTP for connector UIs)
cd server . .venv/bin/activate python mcp_server.py- Local endpoint:
http://127.0.0.1:8000/mcp(also bound on0.0.0.0). - For ChatGPT web connector, use an HTTPS tunnel (e.g.,
ngrok http --url=<your-domain> 8000with/mcppath). - Ensure Fusion is open and the FusionMCP add-in is running.
- Local endpoint:
Fusion Add-in Protocol (TCP)
- Add-in listens on
127.0.0.1:8765. - Messages: single JSON per connection
{"command": "...", "args": {...}}. - Responses: JSON with
{"ok": bool, ...}.
Key MCP Tools
Geometry/Sketch:
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)(centered at x,y)
Operations:
fusion_extrude_last_profile(distance_cm)fusion_cut_extrude_last_profile(distance_cm)fusion_cut_extrude_last_profile_to_body()(through-all; multi-profile safe)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)
Inspection:
fusion_ping()fusion_list_faces()(face metadata)fusion_get_face_info(face_index)(center, normal, area, type)fusion_get_body_bbox()(bounding boxes for all bodies)
Troubleshooting
- If connector reports “unsafe URL” or 404/502, ensure you use
http://127.0.0.1:8000/mcplocally or an HTTPS tunnel URL with/mcp. - “No bodies” errors: create geometry first (e.g.,
fusion_create_box) or ensure bodies exist. - Sketch-dependent tools require an existing/active sketch; use
fusion_create_sketch_on_faceor a plane sketch first.
Typical Workflow Example
- Clean workspace:
fusion_delete_all_bodies. - Create main body:
fusion_create_rect_plate(width_cm=6, depth_cm=2.5, thickness_cm=3, fillet_radius_cm=0.6). - Shell:
fusion_shell_last_body(thickness_cm=0.25). - Inspect faces:
fusion_list_facesorfusion_get_face_info(face_index=6); pick a planar face. - Sketch on face:
fusion_create_sketch_on_face(face_index=6). - Add rectangle:
fusion_create_sketch_rectangle_at(x_cm=0, y_cm=0.4, width_cm=3.5, height_cm=2.3). - Cut through:
fusion_cut_extrude_last_profile_to_body(). - Inspect bodies:
fusion_get_body_bbox(). Move/delete as needed withfusion_move_body/fusion_delete_body.
Notes
- Units: treated as model units (assumed cm in this workflow).
- The add-in uses only Fusion’s built-in Python APIs (no external deps).
- Server binds
0.0.0.0:8000for tunneling convenience; add-in listens locally on127.0.0.1:8765.
License
MIT (or match your project’s license).