Fusion 360 × MCP

A deep-dive into connecting Claude Code to Autodesk Fusion 360 via the Model Context Protocol — what's possible, what's not, and how to build it.

Research Report • April 2026

Executive Overview

The 60-second verdict on whether this is worth building.

80
MCP Tools Available
6+
Existing GitHub Projects
9
Academic Papers
0
Drawing API Access

Build it — but fork, don't start from scratch.

faust-machines/fusion360-mcp-server already provides 80 tools covering sketching, 3D features, assemblies, CAM, export, and more. It's MIT-licensed, actively maintained, and uses the proven BlenderMCP socket-bridge pattern. The 3D design space is wide open — parametric modeling, assemblies, materials, CAM, and export all have solid API support.

The catch: Fusion 360's Drawing/2D API is essentially non-existent. You cannot programmatically create drawing sheets, add dimensions, place views, or modify title blocks. This is confirmed by Autodesk staff on the forums as of March 2026. If technical drawings are critical to your workflow, you'll need to generate them outside Fusion (e.g., via CadQuery + DXF export).

Fusion 360 API Landscape

What the API can (and cannot) do.

Architecture

Languages: Python (recommended) and C++. JavaScript was deprecated.

Two modes: Scripts (run once, exit) and Add-ins (persistent, background). For MCP, you need an add-in.

Threading: Fusion is single-threaded. All API calls must execute on the main thread. Background threads communicate via CustomEvent.

Units: Everything is in centimeters internally.

Location: ~/Library/Application Support/Autodesk/Autodesk Fusion 360/API/AddIns/

Capability Matrix

DomainAPI SupportFeasibilityNotes
Sketches (2D geometry)FullEASYLines, arcs, circles, splines, constraints, dimensions
3D FeaturesFullEASYExtrude, revolve, sweep, loft, fillet, chamfer, shell, boolean
Parametric DesignFullEASYCreate/modify/delete parameters, read design timeline
Assemblies & JointsFullMEDIUMComponents, joints, as-built joints, rigid groups
Materials & AppearancesFullEASYApply from material library by name
Surface OperationsFullMEDIUMPatch, stitch, thicken, ruled, trim
Sheet MetalFullMEDIUMFlange, bend, flat pattern, unfold
Construction GeometryFullEASYPlanes, axes at offset/angle
Export/ImportFullEASYSTL, STEP, F3D, IGES, OBJ
InspectionFullEASYDistance, angle, mass, volume, CoM, interference
CAM/ToolpathsFullMEDIUMSetups, operations, toolpath gen, G-code post
Drawings/2D DocsNoneNONENo API for sheets, views, dims, annotations, title blocks
Generative DesignNoneNONEConfirmed by Autodesk: no API access
SimulationNoneNONEStress, thermal, modal not API-accessible
T-Spline/FormLimitedHARDVertex-level manipulation not fully exposed
Critical limitation: The Drawing workspace has no public API. Autodesk forum posts from March 2026 confirm: "I cannot find any public API objects or methods to directly access drawing sheets or title blocks." This means automated technical drawings are not possible through Fusion 360's API.

Event System

Document Events

Open, save, close, activate — react to user actions on documents.

Command Events

Created, execute, preview, validate — hook into Fusion's command framework.

Custom Events

Fire events from background threads to main thread. Critical for the MCP bridge — this is how you safely call the API from a socket server thread.

Application Events

Startup, idle, document activation — lifecycle hooks for the add-in.

MCP Architecture

How Claude Code talks to Fusion 360.

Claude Code

MCP Client
Tool calls

MCP Server

Python process
stdio transport

Socket Bridge

TCP localhost
JSON protocol

Fusion 360 Add-in

Python add-in
CustomEvent → API

The Core Challenge

Fusion 360's API can only be called from within the Fusion process. There is no external/remote API. Brian Ekins (Autodesk API Expert): "Fusion doesn't have anything built-in to the API to support this."

The solution is the BlenderMCP pattern: a persistent add-in inside Fusion runs a socket server on a background thread. The external MCP server connects as a client, sends commands as JSON, and the add-in uses CustomEvent to marshal calls to the main thread where the actual API executes.

Communication Patterns

Socket-Based PREFERRED

Add-in starts TCP server on localhost. External MCP connects as client. Fast, reliable, bidirectional. Used by faust-machines.

HTTP-Based ALTERNATIVE

Add-in runs Flask/BaseHTTPServer. External processes send HTTP requests. Easier to debug but more overhead. Used by sockcymbal.

File-Based FALLBACK

Shared directory for command/response files. Add-in polls. Slowest, but works when nothing else does.

Threading Model

Python # The critical pattern: background thread → CustomEvent → main thread import adsk.core, adsk.fusion, threading, json app = adsk.core.Application.get() # Register a custom event that runs on the main thread custom_event = app.registerCustomEvent('MCPCommandEvent') class MCPEventHandler(adsk.core.CustomEventHandler): def notify(self, args): # This runs on the MAIN thread -- safe to call Fusion API cmd = json.loads(args.additionalInfo) result = execute_fusion_command(cmd) # Send result back to socket client send_response(result) handler = MCPEventHandler() custom_event.add(handler) def socket_server_thread(): # Runs on background thread -- CANNOT call Fusion API directly while True: data = socket.recv(4096) # Fire event to main thread app.fireCustomEvent('MCPCommandEvent', data.decode()) thread = threading.Thread(target=socket_server_thread, daemon=True) thread.start()

Existing Fusion 360 MCP Servers

Don't build from scratch — there are 6+ projects on GitHub already.

faust-machines/fusion360-mcp-server RECOMMENDED

The most comprehensive Fusion MCP. Socket bridge architecture (inspired by BlenderMCP). MIT licensed, actively developed. Includes mock mode for testing without Fusion running.
80tools
faust-machines tool breakdown (80 tools across 15 categories)
CategoryCountTools
Scene & Query4ping, get_scene_info, get_object_info, list_components
Sketching13create_sketch, draw_rectangle, draw_circle, draw_line, draw_arc, draw_spline, polygon, constraints, dimensions, offset, trim, extend, project
3D Features18extrude, revolve, sweep, loft, fillet, chamfer, shell, mirror, hole, circular_pattern, rectangular_pattern, thread, draft, split, offset_faces, scale, suppress, unsuppress
Body Operations4move, boolean, delete_all, undo
Direct Primitives4box, cylinder, sphere, torus
Surface Operations5patch, stitch, thicken, ruled, trim
Sheet Metal4flange, bend, flat_pattern, unfold
Construction2planes, axes
Assembly4component, joint, as_built_joint, rigid_group
Inspection5distance, angle, physical_properties, section_analysis, interference
Appearance1set_appearance
Parameters4get, create, set, delete
Export3STL, STEP, F3D
CAM7create_setup, create_operation, generate_toolpath, post_process, list_setups, list_operations, get_operation_info
Code Execution1execute_python (REPL-style arbitrary code)
Important: One operation per tool call. Batching multiple operations crashes Fusion. 30-second timeout per call.

Joe-Spencer/fusion-mcp-server

Runs as a Fusion add-in with HTTP SSE on port 3000. Has resources (active-document-info, design-structure, parameters) and prompts. GPL-3.0.
30stars

sockcymbal/autodesk-fusion-mcp-python

Three-component architecture with LiveCube script, Fusion Server bridge, and MCP Server. From YCombinator MCP Hackathon. Currently only supports generate_cube. MIT.
17stars

Misterbra/fusion360-claude-ultimate

"Control Fusion 360 with Claude." Focused on Claude Desktop integration.
 

ArchimedesCrypto/fusion360-mcp-server & JustusBraitinger/FusionMCP

Similar socket bridge architectures, focused on basic geometry operations.
 

Design Space Capabilities

What Claude Code could do in Fusion's 3D modeling environment.

2D Sketch Creation EASY

Full sketch API: create geometry on any plane or face, add constraints, apply dimensions. This is where most designs start.

MCP Tool Call
// Claude sends this to the MCP server { "tool": "create_sketch", "arguments": { "plane": "XY", "name": "Base Profile" } } { "tool": "draw_rectangle", "arguments": { "sketch_name": "Base Profile", "x1": 0, "y1": 0, "x2": 5.0, "y2": 3.0 } }
Fusion 360 API (executed by add-in)
Python design = app.activeProduct root = design.rootComponent # Create sketch on XY plane sketch = root.sketches.add( root.xYConstructionPlane ) sketch.name = "Base Profile" # Draw rectangle (units in cm) lines = sketch.sketchCurves.sketchLines p1 = adsk.core.Point3D.create(0, 0, 0) p2 = adsk.core.Point3D.create(5.0, 3.0, 0) lines.addTwoPointRectangle(p1, p2)

Available sketch primitives: lines, arcs, circles, ellipses, splines, polygons, slots, text, construction lines, reference points, projected geometry

Constraints: coincident, collinear, concentric, equal, horizontal, vertical, midpoint, parallel, perpendicular, tangent, fix/unfix, symmetry

3D Modeling Operations EASY

The full suite of 3D operations is API-accessible. Claude can build complex solid bodies step by step.

Extrude

New body, join, cut, intersect. One/two sides, symmetric, to object. Taper angle support.

Revolve

Full or partial revolution around an axis. All operation types.

Sweep

Profile along a path. Guide rails, twist angle, scale.

Loft

Between multiple profiles. Guide rails, center line, closed loft.

Fillet & Chamfer

Edge selection by reference. Variable radius fillet. Chamfer by distance or angle.

Shell

Hollow out a solid body. Select faces to remove. Specify wall thickness.

Boolean

Union, intersect, subtract between bodies. Essential for complex geometry.

Pattern

Rectangular and circular patterns. Mirror across planes.

Direct Primitives

Box, cylinder, sphere, torus — one-call creation for simple shapes.

MCP Tool Call // "Create a cylinder 20mm diameter, 50mm tall, with 2mm fillets on top edges" // Claude would issue these sequential tool calls: 1. create_cylinder(center=[0,0,0], radius=1.0, height=5.0) // cm units 2. fillet(edges="top_edges", radius=0.2) 3. set_appearance(body="Body1", material="Aluminum") 4. get_physical_properties(body="Body1") // mass, volume, CoM

Assembly & Joints MEDIUM

Create multi-component assemblies with mechanical joints. More complex due to reference management.

Components

Create new components, create occurrences (instances), organize component hierarchy. Each component has its own origin and features.

Joints

Rigid, revolute, slider, cylindrical, pin-slot, planar, ball. Define motion limits, offsets, and driven joints.

As-Built Joints

Create joints that maintain current component positions. Useful when components are already placed correctly.

Rigid Groups

Lock components together. Useful for treating sub-assemblies as single units.

Parametric Design EASY

This is where Claude + Fusion gets really powerful. Named parameters mean Claude can iterate on designs by tweaking values.

Conversation
"Make the wall thickness 3mm" → set_parameter(name="wall_thickness", value=0.3) "What's the current mass?" → get_physical_properties() → "245.3 grams" "Make it lighter — try 2mm walls" → set_parameter(name="wall_thickness", value=0.2) → get_physical_properties() → "163.5 grams — 33% reduction"
What this enables
// Design optimization loops for thickness in [1.5, 2.0, 2.5, 3.0]: set_parameter("wall_thickness", thickness) props = get_physical_properties() results.append({ "thickness": thickness, "mass": props["mass"], "volume": props["volume"] }) // Claude can reason about the tradeoffs // and recommend the optimal value

Inspection & Analysis EASY

Claude can read and analyze the current design state — the foundation for design review and optimization.

Physical Properties

Mass, volume, surface area, center of mass, moments of inertia

Distance & Angle

Measure between any two entities (points, edges, faces, bodies)

Interference

Check if bodies overlap — critical for assembly validation

Section Analysis

Cut through a body with a plane, inspect cross-section

Design Structure

Read component tree, feature timeline, parameter values

Bounding Box

Get overall dimensions of any body or component

Drawing Space Capabilities

The hard truth about 2D technical drawings.

The Drawing API does not exist.

As of March 2026, Fusion 360 provides zero public API access to the Drawing workspace. You cannot programmatically:

Forum confirmation: "I cannot find any public API objects or methods to directly access drawing sheets or title blocks." — Autodesk Community Forums, 2026-03-31

Workarounds

CadQuery + DXF Export MEDIUM

Use CadQuery (Python parametric CAD) to generate 2D profiles and export as DXF. Not integrated with Fusion, but produces standards-compliant 2D drawings.

Export STEP + External Drawing Tool MEDIUM

Export the 3D model as STEP, then use FreeCAD's TechDraw or LibreCAD to generate drawings programmatically. Multi-tool pipeline.

Fusion UI Automation HARD

Theoretically possible to use OS-level UI automation (pyautogui, AppleScript) to click through Fusion's Drawing UI. Fragile, unreliable, not recommended.

Wait for Autodesk HOPE

Autodesk knows this is a gap. The Drawing workspace was only added to Fusion in 2021 — the API may eventually follow. No timeline.

CAM & Manufacturing

From design to G-code — fully API-accessible.

What Claude Could Do

"Set up a 3-axis milling operation for this part. Use a 6mm flat end mill, 0.5mm stepdown, conventional milling. Post-process for a Haas VF-2."

Create Setup EASY

Define stock, WCS origin, fixture orientation

Create Operations MEDIUM

2D adaptive, 2D pocket, 2D contour, face, drilling, 3D adaptive, 3D contour, etc.

Generate Toolpaths EASY

Calculate toolpaths for any operation

Post-Process EASY

Generate G-code for specific machines (Haas, Fanuc, etc.)

List & Inspect EASY

Read existing setups, operations, and their parameters

Tool Library MEDIUM

Access tool library for cutter selection

Design → CAM → G-code: a complete digital manufacturing pipeline via natural language

Natural Language → CAD

Example conversations showing what's possible.

Example: "Design a phone stand"
User: Create a phone stand. 60-degree angle, 3mm thick, 80mm wide, with a 15mm lip at the bottom to hold the phone. Claude: I'll build this in Fusion 360. Creating the profile sketch first. // Step 1: Create sketch on XZ plane → create_sketch(plane="XZ", name="Stand Profile") // Step 2: Draw the angled back (60° from horizontal) → draw_line(sketch="Stand Profile", x1=0, y1=0, x2=5.0, y2=8.66) // 10cm at 60° // Step 3: Draw the bottom lip (15mm forward) → draw_line(sketch="Stand Profile", x1=0, y1=0, x2=-1.5, y2=0) // Step 4: Draw the lip wall (15mm up) → draw_line(sketch="Stand Profile", x1=-1.5, y1=0, x2=-1.5, y2=1.5) // Step 5: Extrude the profile 80mm (8cm) wide → extrude(profile="Stand Profile", distance=8.0, type="symmetric") // Step 6: Shell to 3mm wall thickness → shell(thickness=0.3, faces_to_remove=["back_face"]) // Step 7: Add fillets for aesthetics → fillet(edges="all_edges", radius=0.1) // Step 8: Apply material → set_appearance(material="ABS Plastic - White") // Step 9: Get physical properties → get_physical_properties() Claude: Done! The phone stand is 80mm wide, 100mm tall at a 60° angle, with a 15mm lip. Wall thickness is 3mm. Mass: 42.3g in ABS plastic. Ready to export for 3D printing?
Example: "Optimize this bracket"
User: This bracket is too heavy. Can you make it lighter while keeping the mounting holes? Claude: Let me analyze the current design first. → get_scene_info() → get_physical_properties(body="Bracket") // Result: 156g, aluminum, 45mm x 60mm x 8mm Claude: Current mass: 156g. I'll try three approaches: 1. Reduce thickness from 8mm to 5mm 2. Add lightening pockets 3. Add fillets to reduce material → set_parameter("thickness", 0.5) → get_physical_properties() // 97g - 38% reduction Claude: Reducing thickness to 5mm gives 97g (38% lighter). The mounting holes are unchanged. Want me to also add lightening pockets between the holes?
Example: "Generate a family of parts"
User: Create spacers in 5mm, 10mm, 15mm, and 20mm heights. All with M8 through-hole, 20mm OD. Claude: I'll create a parametric spacer and generate 4 variants. // Create the template with named parameters → create_parameter("spacer_height", 0.5) → create_parameter("outer_diameter", 2.0) → create_parameter("hole_diameter", 0.8) // Build the geometry referencing parameters → create_sketch(plane="XY") → draw_circle(center=[0,0], radius="outer_diameter/2") → draw_circle(center=[0,0], radius="hole_diameter/2") → extrude(distance="spacer_height") // Export each variant for height in [0.5, 1.0, 1.5, 2.0]: → set_parameter("spacer_height", height) → export_stl(filename=f"spacer_{height*10:.0f}mm.stl") Claude: Generated 4 spacer STL files: - spacer_5mm.stl, spacer_10mm.stl, spacer_15mm.stl, spacer_20mm.stl All have M8 through-hole and 20mm OD.

What Claude Brings to the Table

Conversational Iteration

Unlike scripting, Claude maintains context. "Make it taller" works because Claude remembers which parameter controls height.

Error Recovery

If an operation fails, Claude can read the error, diagnose it (e.g., sketch not closed, invalid geometry), and try an alternative approach.

Design Reasoning

Claude can explain why design choices matter — wall thickness vs. strength, fillet radius vs. stress concentration, material selection tradeoffs.

Code Generation Fallback

The execute_python tool lets Claude write arbitrary Fusion API code for operations not covered by the 80 predefined tools.

Alternatives & Comparison

Other ways to get LLMs doing CAD.

ToolTypeAPI QualityDrawing SupportMCP Exists?Best For
Fusion 360 Commercial CAD
NONE Yes (6+) Full mechanical design + CAM
FreeCAD Open-source CAD
YES (TechDraw) Yes (3+) Free, drawings, open ecosystem
CadQuery Python library
DXF export Yes (1) Code-first parametric CAD
OpenSCAD Script-only CAD
NONE Community Simple programmatic models
Zoo.dev (KittyCAD) AI-native CAD
KCL-based API-first Text-to-CAD, AI-first workflow
Blender 3D modeling
N/A Yes (BlenderMCP) Artistic/visual 3D, not engineering

The Hybrid Approach

Use Fusion 360 MCP for 3D design and CAM (where it excels), and CadQuery or FreeCAD for automated 2D technical drawings (where Fusion's API fails). Claude can orchestrate both — design in Fusion, export STEP, generate drawings in FreeCAD's TechDraw.

AI + CAD Research Landscape

Zoo.dev / Text-to-CAD

First text-to-CAD model generating B-Rep surfaces (not meshes). Outputs STEP files. Uses KCL (KittyCAD Language). The most promising AI-native approach.

Project Salvador (Autodesk)

Autodesk's own generative AI plug-in for Fusion 360. Text-based interaction for CAD modeling. Not clear if publicly available or API-accessible.

fscad (JesusFreke)

OpenSCAD-like declarative framework within Fusion 360. Functional/declarative geometry creation — a good mental model for LLM-driven design.

Academic Papers (9 found)

View all papers on LLMs + CAD
PaperYearKey Contribution
Large Language Models for CAD: A Survey2025First systematic survey — taxonomy of 6 key areas
Text-to-CadQuery2025New paradigm for CAD generation with LLMs via CadQuery
Text2CAD2024Generating sequential CAD models from instructions
Conversational CAD2024Natural language interface for parametric 3D modeling
CADialogue2025Multimodal LLM-powered conversational CAD assistant
From Dialogue to Design2026GenAI-based automation of parametric CAD
Generative AI for CAD Automation2025Leveraging LLMs for CAD workflows
LLM4CAD2025Multimodal LLMs for 3D design (ASME)
MIT: LLMs in Design & Manufacturing2025How LLMs help humans in design and manufacturing

Implementation Roadmap

A phased approach to building the Fusion 360 MCP integration.

Phase 0 — Setup (1 day)
Fork & Configure
Fork faust-machines/fusion360-mcp-server. Install the add-in in Fusion. Configure Claude Code's MCP settings to point at the server. Verify with ping tool. Run in mock mode first to validate the MCP protocol without Fusion.
claude_desktop_config.json { "mcpServers": { "fusion360": { "command": "python", "args": ["-m", "fusion_mcp_server"], "env": { "FUSION_HOST": "localhost", "FUSION_PORT": "8765" } } } }
Phase 1 — Read-Only (1 week)
Inspect & Analyze
Use query tools only: get_scene_info, list_components, get_object_info, get_physical_properties, parameters. Let Claude understand existing designs without modifying them. Build confidence in the bridge stability.
Phase 2 — Basic Creation (2 weeks)
Sketches & Simple Extrusions
Create sketches, draw basic geometry, extrude. Start with simple parts: boxes, cylinders, brackets. Validate that Claude can reason about Fusion's coordinate system and units (cm).
Phase 3 — Advanced Modeling (2-3 weeks)
Complex Features & Assemblies
Sweep, loft, patterns, sheet metal, assemblies with joints. This is where the 80-tool coverage really shines. Build custom prompts for common design patterns.
Phase 4 — CAM Integration (1-2 weeks)
Design to G-Code
Create CAM setups, define operations, generate toolpaths, post-process. Complete the design-to-manufacturing pipeline. Requires knowledge of machining practices.
Phase 5 — Drawing Workaround (ongoing)
Multi-Tool Drawing Pipeline
Export STEP from Fusion → import into FreeCAD/CadQuery → generate 2D drawings programmatically. Build a second MCP (or extend the first) to handle the drawing workflow. Monitor Autodesk's API roadmap for native drawing support.

Resources & Links

Everything you need to get started.

Official Autodesk Documentation

GitHub Repositories

Community

Fusion 360 MCP Research Report

Research compiled April 2026 • Sources: Autodesk API Docs, GitHub, Autodesk Forums, arXiv, ResearchGate

Generated by Claude Code × Firecrawl