Fusion360 MCP Server

MCP

Connects AI to Autodesk Fusion 360 with 90+ tools for sketches, extrude, revolve and loft, chamfers and shells, booleans, sheet metal and patterns, to automate part modeling. Needs Fusion 360 with the repo's add-in copied into its AddIns folder and started, plus uv. Beta.

faust-machines/fusion360-mcp-server122
GitHub에서 보기
README

Fusion360 MCP Server

Last updated: 2026-09-16

Beta — This project is under active development. APIs and tool behavior may change between releases. Use at your own discretion. Feedback and bug reports welcome via GitHub Issues.

MCP server that connects AI coding agents to Autodesk Fusion 360 for CAD automation.

Tested with Claude Code. Works with any MCP-compatible client — OpenCode, Codex, Cursor, or anything that speaks the Model Context Protocol.

How it works

Any MCP Client ←(stdio MCP)→ This Server ←(TCP :9876)→ Fusion360MCP Add-in ←(CustomEvent)→ Fusion Main Thread

Two components:

  1. MCP Server (this repo) — Python process that speaks MCP protocol to Claude and forwards commands over TCP
  2. Fusion360MCP Add-in (installed in Fusion's AddIns folder) — runs inside Fusion 360, executes API calls safely on the main thread

Prerequisites

  • uv (Python package manager)
  • Autodesk Fusion 360
  • An MCP-compatible client (Claude Code, OpenCode, Codex, Cursor, etc.)

Installation

1. Install the Fusion 360 Add-in

Quick install (symlink for development):

./scripts/install-addon.sh

Manual install:

# macOS
cp -r addon ~/Library/Application\ Support/Autodesk/Autodesk\ Fusion\ 360/API/AddIns/Fusion360MCP

# Windows (PowerShell)
Copy-Item -Recurse addon "$env:APPDATA\Autodesk\Autodesk Fusion 360\API\AddIns\Fusion360MCP"

Then start it in Fusion: Shift+S → Add-Ins → Fusion360MCP → Run

You should see [MCP] Server listening on localhost:9876 in the TEXT COMMANDS window.

2. Connect your MCP client

The MCP server is published on PyPI — no need to clone this repo.

Claude Code
claude mcp add fusion360 -- uvx fusion360-mcp-server --mode socket
Other MCP clients

The server runs over stdio, so any MCP-compatible client can launch it. The command is:

uvx fusion360-mcp-server --mode socket
Cursor (~/.cursor/mcp.json)
{
  "mcpServers": {
    "fusion360": {
      "command": "uvx",
      "args": [
        "fusion360-mcp-server",
        "--mode", "socket"
      ]
    }
  }
}

Cross-machine setup (LAN)

If the MCP server and Fusion 360 run on different machines (e.g. MCP server on a Mac Mini, Fusion on a Windows PC), override the bind/connect address via environment variables on both sides.

On the Fusion host (where the add-in runs), bind to all interfaces before starting Fusion:

# Windows
$env:FUSION_MCP_HOST = "0.0.0.0"
# macOS / Linux
export FUSION_MCP_HOST=0.0.0.0

Then start Fusion and run the Fusion360MCP add-in. The log line Server listening on 0.0.0.0:9876 confirms the bind.

On the MCP-server host, point the client at the Fusion host's LAN IP:

# Either via CLI flag
uvx fusion360-mcp-server --mode socket --host 192.168.1.42

# Or via env var (useful in MCP client configs)
FUSION_MCP_HOST=192.168.1.42 uvx fusion360-mcp-server --mode socket

Security note: the TCP socket has no authentication. Only expose it on a trusted LAN — never bind to 0.0.0.0 on a host reachable from the public internet.

3. Verify

Call the ping tool from your client. If it returns {"ok": true, "status": "pong"}, everything is connected.

Uninstalling

  1. Remove the fusion360 entry from your MCP client config
  2. Stop the add-in in Fusion (Shift+S → Add-Ins → Fusion360MCP → Stop)
  3. Delete the add-in folder from Fusion's AddIns directory

Available Tools (93)

Tools marked (2026+) require a recent Fusion build — they use APIs introduced in the January–July 2026 releases and are live-tested on Fusion 2705 (arm64).

Scene & Query

ToolDescription
pingHealth check (instant, no Fusion API)
get_scene_infoDesign name, bodies, sketches, features, camera
get_object_infoDetailed info about a named body or sketch
get_bounding_boxAxis-aligned bbox (min/max/size/center) for body or component; unions all bodies when called on a component
list_componentsList all components in the design

Design Type Safety

ToolDescription
get_design_typeCheck if design is in parametric or direct mode
set_design_typeSwitch design type (parametric/direct recovery)

Sketching

ToolDescription
create_sketchNew sketch on xy/yz/xz plane, optional offset
draw_rectangleRectangle in most recent sketch
draw_circleCircle in most recent sketch
draw_lineLine in most recent sketch
draw_arcArc (center + start + sweep angle)
draw_splineFit-point or control-point spline
create_polygonRegular polygon (3–64 sides)
add_constraintGeometric constraint (coincident, parallel, tangent, etc.)
auto_constrain(2026+) Auto-constrain a sketch via the AutoConstrain API — 3 result options (thorough / fast / tolerance-adjusting)
add_dimensionDriving dimension (distance, angle, radial, diameter)
offset_curveOffset connected sketch curves
trim_curveTrim at intersections
extend_curveExtend to nearest intersection
project_geometryProject edges/bodies onto sketch plane

Features

ToolDescription
extrudeExtrude a sketch profile
revolveRevolve a profile around an axis
sweepSweep a profile along a path
loftLoft between two or more profiles
filletRound edges (all/top/bottom/vertical)
chamferChamfer edges
shellHollow out a body
mirrorMirror a body across a plane
create_holeHole feature on a body face
rectangular_patternPattern in rows and columns
circular_patternPattern around an axis
create_threadAdd threads (cosmetic or modeled)
draft_facesDraft/taper faces for mold release
split_bodySplit a body using a plane
split_faceSplit faces of a body
offset_facesPush/pull faces by a distance
scale_bodyScale uniformly or non-uniformly
suppress_featureSuppress a timeline feature
unsuppress_featureRe-enable a suppressed feature

Body Operations

ToolDescription
move_bodyTranslate a body by (x, y, z)
rename_bodyRename a body (searches root and all components)
boolean_operationJoin/cut/intersect two bodies
delete_allClear the design
undoUndo last operation (with design-type safety guard)

Direct Primitives

ToolDescription
create_boxBox (via TemporaryBRepManager, history-less)
create_box_parametricHistory-based box: sketch rectangle + dimensions + extrude. length/width/height accept numbers (cm) or string expressions referencing User Parameters (e.g. "boxL", "outer - 2*wall_t")
create_cylinderCylinder
create_sphereSphere
create_torusTorus

Surface Operations

ToolDescription
patch_surfaceCreate a patch surface from boundary edges
stitch_surfacesStitch surface bodies into one
thicken_surfaceThicken a surface into a solid
ruled_surfaceRuled surface from an edge
trim_surfaceTrim a surface with another body

Sheet Metal

ToolDescription
create_flangeCreate a flange on an edge
create_bendAdd a bend
flat_patternCreate flat pattern
unfoldUnfold specific bends

Construction Geometry

ToolDescription
create_construction_planeOffset, angle, midplane, 3-point, tangent
create_construction_axisTwo-point, intersection, edge, perpendicular
create_ucs(2026+, preview API) User Coordinate System at a point with optional rotation

Assembly

ToolDescription
create_componentCreate a sub-assembly component
add_jointJoint between two components
create_as_built_jointJoint from current positions
create_rigid_groupLock components together

Inspection & Analysis

ToolDescription
measure_distanceMinimum distance between entities
measure_angleAngle between entities
get_physical_propertiesMass, volume, area, center of mass
create_section_analysisSection plane through model
check_interferenceDetect collisions between components
compare_meshes(2026+) Deviation statistics between two mesh bodies (min/max/mean/RMS, cm) — e.g. validate against a reference STL

Appearance

ToolDescription
set_appearanceAssign material appearance from library
set_color(2026+) Assign a flat RGB color (+ opacity) to a body

Parameters

ToolDescription
get_parametersList all user parameters
create_parameterCreate a new parameter
set_parameterUpdate a parameter value
delete_parameterRemove a parameter

Import / Export

ToolDescription
import_meshImport STL/OBJ/3MF as mesh body via MeshBodies.add(). Unit-aware (mm/cm/m/in/ft). Returns the mesh name and bounding box
export_stlExport body as STL (supports bodies inside components)
export_stepExport body as STEP (supports bodies inside components)
export_f3dExport design as Fusion archive
export_view_sheetExport multi-view PNG sheet (iso/front/top/right) for visual inspection
exportUnified dispatcher — routes to export_stl/export_step/export_f3d based on explicit format or file-extension inference

CAM / Manufacturing

ToolDescription
cam_create_setupCreate a manufacturing setup (milling/turning/cutting); applies stock mode/offsets
cam_create_operationAdd a machining operation (face, contour, adaptive, drilling, etc.); applies stepdown/feed/speed/coolant parameters
cam_generate_toolpathGenerate toolpaths for operations
cam_post_processPost-process to G-code — pass a full .cps path (cloud-post builds don't ship local posts)
cam_list_setupsList all manufacturing setups
cam_list_operationsList operations in a setup
cam_get_operation_infoGet operation details (strategy, tool, parameters)

Code Execution

ToolDescription
execute_codeRun arbitrary Python in Fusion (REPL-style)

Perception

ToolDescription
render_viewCapture the active viewport as PNG (optional camera preset: iso/front/top/...). Returns an image block for visual verification

MCP Protocol Features

  • Tool annotations — each tool is tagged with readOnlyHint, destructiveHint, and idempotentHint so MCP clients can auto-approve safe operations
  • Resources — fusion360://status, fusion360://design, fusion360://parameters for passive state inspection
  • Resource templates — fusion360://body/{name}, fusion360://component/{name} for dynamic entity lookup
  • Prompts — create-box, model-threaded-bolt, sheet-metal-enclosure workflow templates
  • Structured errors — failures carry isError=True plus a stable error_kind (e.g. BODY_NOT_FOUND, TIMEOUT), contextual hints, and a traceback; infrastructure errors (bridge timeout, unknown command) are classified the same way, not flattened to a generic message
  • Mock mode — --mode mock returns plausible test data without Fusion running (all responses include "mode": "mock")

Development

uv sync --dev       # install deps
uv run pytest -v    # run tests (363 tests)
uv run ruff check   # lint

Notes

  • All Fusion API units are centimeters (Fusion's internal unit).
  • One operation per tool call. Batching multiple operations crashes the add-in.
  • Timeouts: the add-in's main-thread bridge times out after 30s and cancels the queued command; the client waits up to 45s so it receives that structured TIMEOUT error. Mutation commands are never auto-retried — after a timeout, call get_scene_info to check whether anything was applied before retrying.
  • Add-in logs to ~/fusion360mcp.log.
  • The undo tool includes a design-type safety guard — it checks before/after and auto-redoes if the undo would switch from parametric to direct mode.
  • Tested on Fusion 2705.1.15 (macOS arm64). Tools marked (2026+) need a build from 2026 or later.

Acknowledgements

Inspired by BlenderMCP — the socket bridge architecture originated there.

Also built on ideas from the existing Fusion 360 MCP ecosystem:

License

MIT