fusion-360-mcp-server

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:

Screenshot 2025-12-05 at 2 38 21 PM

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 TCP 127.0.0.1:8765 for 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

  1. Install the Fusion add-in

    • macOS: copy fusion_addin/FusionMCP to ~/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”).
  2. 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]"
    
  3. 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 on 0.0.0.0).
    • For ChatGPT web connector, use an HTTPS tunnel (e.g., ngrok http --url=<your-domain> 8000 with /mcp path).
    • Ensure Fusion is open and the FusionMCP add-in is running.

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/mcp locally 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_face or a plane sketch first.

Typical Workflow Example

  1. Clean workspace: fusion_delete_all_bodies.
  2. Create main body: fusion_create_rect_plate(width_cm=6, depth_cm=2.5, thickness_cm=3, fillet_radius_cm=0.6).
  3. Shell: fusion_shell_last_body(thickness_cm=0.25).
  4. Inspect faces: fusion_list_faces or fusion_get_face_info(face_index=6); pick a planar face.
  5. Sketch on face: fusion_create_sketch_on_face(face_index=6).
  6. Add rectangle: fusion_create_sketch_rectangle_at(x_cm=0, y_cm=0.4, width_cm=3.5, height_cm=2.3).
  7. Cut through: fusion_cut_extrude_last_profile_to_body().
  8. Inspect bodies: fusion_get_body_bbox(). Move/delete as needed with fusion_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:8000 for tunneling convenience; add-in listens locally on 127.0.0.1:8765.

License

MIT (or match your project’s license).