Skip to main content
Glama

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

Related MCP server: Fusion360MCP

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
{
  "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

Tool

Description

ping

Health check (instant, no Fusion API)

get_scene_info

Design name, bodies, sketches, features, camera

get_object_info

Detailed info about a named body or sketch

get_bounding_box

Axis-aligned bbox (min/max/size/center) for body or component; unions all bodies when called on a component

list_components

List all components in the design

Design Type Safety

Tool

Description

get_design_type

Check if design is in parametric or direct mode

set_design_type

Switch design type (parametric/direct recovery)

Sketching

Tool

Description

create_sketch

New sketch on xy/yz/xz plane, optional offset

draw_rectangle

Rectangle in most recent sketch

draw_circle

Circle in most recent sketch

draw_line

Line in most recent sketch

draw_arc

Arc (center + start + sweep angle)

draw_spline

Fit-point or control-point spline

create_polygon

Regular polygon (3–64 sides)

add_constraint

Geometric constraint (coincident, parallel, tangent, etc.)

auto_constrain

(2026+) Auto-constrain a sketch via the AutoConstrain API — 3 result options (thorough / fast / tolerance-adjusting)

add_dimension

Driving dimension (distance, angle, radial, diameter)

offset_curve

Offset connected sketch curves

trim_curve

Trim at intersections

extend_curve

Extend to nearest intersection

project_geometry

Project edges/bodies onto sketch plane

Features

Tool

Description

extrude

Extrude a sketch profile

revolve

Revolve a profile around an axis

sweep

Sweep a profile along a path

loft

Loft between two or more profiles

fillet

Round edges (all/top/bottom/vertical)

chamfer

Chamfer edges

shell

Hollow out a body

mirror

Mirror a body across a plane

create_hole

Hole feature on a body face

rectangular_pattern

Pattern in rows and columns

circular_pattern

Pattern around an axis

create_thread

Add threads (cosmetic or modeled)

draft_faces

Draft/taper faces for mold release

split_body

Split a body using a plane

split_face

Split faces of a body

offset_faces

Push/pull faces by a distance

scale_body

Scale uniformly or non-uniformly

suppress_feature

Suppress a timeline feature

unsuppress_feature

Re-enable a suppressed feature

Body Operations

Tool

Description

move_body

Translate a body by (x, y, z)

rename_body

Rename a body (searches root and all components)

boolean_operation

Join/cut/intersect two bodies

delete_all

Clear the design

undo

Undo last operation (with design-type safety guard)

Direct Primitives

Tool

Description

create_box

Box (via TemporaryBRepManager, history-less)

create_box_parametric

History-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_cylinder

Cylinder

create_sphere

Sphere

create_torus

Torus

Surface Operations

Tool

Description

patch_surface

Create a patch surface from boundary edges

stitch_surfaces

Stitch surface bodies into one

thicken_surface

Thicken a surface into a solid

ruled_surface

Ruled surface from an edge

trim_surface

Trim a surface with another body

Sheet Metal

Tool

Description

create_flange

Create a flange on an edge

create_bend

Add a bend

flat_pattern

Create flat pattern

unfold

Unfold specific bends

Construction Geometry

Tool

Description

create_construction_plane

Offset, angle, midplane, 3-point, tangent

create_construction_axis

Two-point, intersection, edge, perpendicular

create_ucs

(2026+, preview API) User Coordinate System at a point with optional rotation

Assembly

Tool

Description

create_component

Create a sub-assembly component

add_joint

Joint between two components

create_as_built_joint

Joint from current positions

create_rigid_group

Lock components together

Inspection & Analysis

Tool

Description

measure_distance

Minimum distance between entities

measure_angle

Angle between entities

get_physical_properties

Mass, volume, area, center of mass

create_section_analysis

Section plane through model

check_interference

Detect 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

Tool

Description

set_appearance

Assign material appearance from library

set_color

(2026+) Assign a flat RGB color (+ opacity) to a body

Parameters

Tool

Description

get_parameters

List all user parameters

create_parameter

Create a new parameter

set_parameter

Update a parameter value

delete_parameter

Remove a parameter

Import / Export

Tool

Description

import_mesh

Import STL/OBJ/3MF as mesh body via MeshBodies.add(). Unit-aware (mm/cm/m/in/ft). Returns the mesh name and bounding box

export_stl

Export body as STL (supports bodies inside components)

export_step

Export body as STEP (supports bodies inside components)

export_f3d

Export design as Fusion archive

export_view_sheet

Export multi-view PNG sheet (iso/front/top/right) for visual inspection

export

Unified dispatcher — routes to export_stl/export_step/export_f3d based on explicit format or file-extension inference

CAM / Manufacturing

Tool

Description

cam_create_setup

Create a manufacturing setup (milling/turning/cutting); applies stock mode/offsets

cam_create_operation

Add a machining operation (face, contour, adaptive, drilling, etc.); applies stepdown/feed/speed/coolant parameters

cam_generate_toolpath

Generate toolpaths for operations

cam_post_process

Post-process to G-code — pass a full .cps path (cloud-post builds don't ship local posts)

cam_list_setups

List all manufacturing setups

cam_list_operations

List operations in a setup

cam_get_operation_info

Get operation details (strategy, tool, parameters)

Code Execution

Tool

Description

execute_code

Run arbitrary Python in Fusion (REPL-style)

Perception

Tool

Description

render_view

Capture 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

Available Tools

80 tools
add_constraintAdd Sketch ConstraintB

Add a geometric constraint in the active sketch. Entities are referenced by index within the sketch.

Inputs: constraint_type (required), entity_one, entity_two, symmetry_line, +1 more.

add_dimensionAdd Sketch DimensionB

Add a driving dimension to constrain sketch geometry. Value is in cm for distances, degrees for angles.

Inputs: dimension_type (required), value (required), entity_one, entity_two, +1 more.

add_jointAdd JointB

Add a joint between two components

Inputs: component_one (required), component_two (required), joint_type.

boolean_operationBoolean OperationB

Combine two named bodies (join/cut/intersect)

Inputs: target_body (required), tool_body (required), operation.

cam_create_operationCreate CAM OperationB

Add a machining operation to a setup. Strategy determines the toolpath type.

Inputs: setup_name (required), strategy (required), name, tool_number, +6 more.

cam_create_setupCreate CAM SetupB

Create a manufacturing setup for a body. Defines the stock, coordinate system, and operation type (milling/turning/cutting).

Inputs: body_name (required), name, operation_type, stock_mode, +3 more.

cam_generate_toolpathGenerate ToolpathB

Generate toolpaths for a specific operation or all operations in a setup

Inputs: setup_name, operation_name, generate_all.

cam_get_operation_infoGet CAM Operation InfoB
Read-onlyIdempotent

Get details about a specific operation (strategy, tool, parameters, toolpath status)

Inputs: setup_name (required), operation_name (required).

cam_list_operationsList CAM OperationsA
Read-onlyIdempotent

List operations within a setup

Inputs: setup_name (required).

cam_list_setupsList CAM SetupsB
Read-onlyIdempotent

List all manufacturing setups in the document

Inputs: no named parameters.

cam_post_processPost ProcessB

Post-process toolpaths to generate NC code (G-code)

Inputs: setup_name (required), operation_name, post_processor, output_folder, +1 more.

chamferChamfer EdgesC

Chamfer edges of a body

Inputs: distance (required), body_name, body_index, edge_selection.

check_interferenceCheck InterferenceB
Read-onlyIdempotent

Detect collisions between components/bodies

Inputs: component_names (required), include_coincident_faces.

circular_patternCircular PatternC

Pattern a body around an axis

Inputs: body_name (required), count (required), axis, total_angle.

create_as_built_jointCreate As-Built JointC

Create a joint from components' current positions (easier than geometric joints)

Inputs: component_one (required), component_two (required), joint_type (required).

create_bendCreate BendB

Add a bend to a sheet metal body

Inputs: body_name (required), bend_line_sketch, angle, bend_radius.

create_boxCreate BoxC

Create a box primitive (non-parametric via TemporaryBRepManager)

Inputs: length (required), width (required), height (required), center_x, +2 more.

create_componentCreate ComponentB

Create a new component (sub-assembly) in the design

Inputs: name (required), parent_name.

create_construction_axisCreate Construction AxisC

Create a construction axis

Inputs: method (required), point_one, point_two, plane_one, +3 more.

create_construction_planeCreate Construction PlaneB

Create a construction plane for sketching

Inputs: method (required), plane, offset, angle, +6 more.

create_cylinderCreate CylinderC

Create a cylinder primitive (non-parametric via TemporaryBRepManager)

Inputs: radius (required), height (required), base_x, base_y, +2 more.

create_flangeCreate FlangeA

Create a sheet metal flange on an edge

Inputs: body_name (required), edge_index (required), height, angle, +1 more.

create_holeCreate HoleB

Create a hole feature on a body face

Inputs: diameter (required), depth (required), body_name, body_index, +3 more.

create_parameterCreate ParameterB

Create a new user parameter

Inputs: name (required), value (required), unit (required), comment.

create_polygonCreate PolygonB

Draw a regular polygon in the most recent sketch

Inputs: sides (required), radius (required), center_x, center_y, +1 more.

create_rigid_groupCreate Rigid GroupB

Lock multiple components together

Inputs: component_names (required), include_children.

create_section_analysisCreate Section AnalysisB

Cut a section plane through the model

Inputs: plane, offset.

create_sketchCreate SketchB

Create a new sketch on xy/yz/xz plane, optionally offset

Inputs: plane, z_offset.

create_sphereCreate SphereB

Create a sphere primitive (non-parametric via TemporaryBRepManager)

Inputs: radius (required), center_x, center_y, center_z.

create_threadCreate ThreadA

Add threads to a cylindrical face (cosmetic or modeled)

Inputs: body_name (required), face_index (required), is_internal, thread_type, +5 more.

create_torusCreate TorusB

Create a torus primitive (non-parametric via TemporaryBRepManager)

Inputs: major_radius (required), minor_radius (required), center_x, center_y, +2 more.

delete_allDelete AllA
Destructive

Clear the design (delete all timeline items)

Inputs: no named parameters.

delete_parameterDelete ParameterB
Destructive

Remove a user parameter

Inputs: name (required).

draft_facesDraft / Taper FacesB

Add a draft angle to faces of a body (for mold release / injection molding)

Inputs: body_name (required), angle (required), face_selection, pull_direction_plane, +1 more.

draw_arcDraw ArcB

Draw an arc in the most recent sketch (center + start point + sweep angle)

Inputs: center_x (required), center_y (required), start_x (required), start_y (required), +3 more.

draw_circleDraw CircleB

Draw a circle in the most recent sketch

Inputs: radius (required), center_x, center_y, center_z.

draw_lineDraw LineB

Draw a line in the most recent sketch

Inputs: start_x (required), start_y (required), end_x (required), end_y (required), +2 more.

draw_rectangleDraw RectangleA

Draw a rectangle in the most recent sketch

Inputs: width (required), height (required), origin_x, origin_y, +1 more.

draw_splineDraw SplineA

Draw a spline in the most recent sketch. Use fit_points for a curve through points, or control_points for a control-polygon spline.

Inputs: spline_type (required), points (required), degree.

execute_codeExecute CodeA

Run arbitrary Python in Fusion 360. The last expression's value is returned (REPL-style). Pre-defined names: app, ui, design, component, adsk, math.

Inputs: code (required).

export_f3dExport F3DA

Export the design as a native Fusion 360 archive (.f3d)

Inputs: file_path.

export_stepExport STEPB

Export a body or component as a STEP file

Inputs: body_name (required), file_path.

export_stlExport STLB

Export a named body as an STL file

Inputs: body_name (required), file_path.

extend_curveExtend CurveA

Extend a sketch curve to the nearest intersection. The end nearest to the given point is extended.

Inputs: curve_index (required), point_x (required), point_y (required), sketch_name.

extrudeExtrudeC

Extrude a sketch profile

Inputs: height (required), profile_index, operation, direction.

filletFillet EdgesB

Round edges of a body

Inputs: radius (required), body_name, body_index, edge_selection.

flat_patternFlat PatternB

Create a flat pattern from a sheet metal body

Inputs: body_name (required).

get_object_infoGet Object InfoB
Read-onlyIdempotent

Get detailed info about a named body or sketch

Inputs: name (required).

get_parametersGet ParametersB
Read-onlyIdempotent

List all user parameters in the design

Inputs: no named parameters.

get_physical_propertiesGet Physical PropertiesB
Read-onlyIdempotent

Get mass, volume, surface area, center of mass, and density of a body

Inputs: body_name (required), accuracy.

get_scene_infoGet Scene InfoB
Read-onlyIdempotent

Get design name, bodies, sketches, features, camera info

Inputs: no named parameters.

list_componentsList ComponentsB
Read-onlyIdempotent

List all components in the design

Inputs: no named parameters.

loftLoftB

Loft between two or more sketch profiles

Inputs: profile_sketch_names (required), operation.

measure_angleMeasure AngleB
Read-onlyIdempotent

Measure angle between two entities

Inputs: entity_one (required), entity_two (required).

measure_distanceMeasure DistanceB
Read-onlyIdempotent

Measure minimum distance between two entities

Inputs: entity_one (required), entity_two (required).

mirrorMirror BodyB

Mirror a body across a construction plane

Inputs: mirror_plane (required), body_name, body_index.

move_bodyMove BodyB

Translate a named body by (x, y, z)

Inputs: body_name (required), x, y, z.

offset_curveOffset CurveB

Offset connected sketch curves by a distance. Direction is determined by the direction_point.

Inputs: curve_index (required), offset_distance (required), direction_x, direction_y, +1 more.

offset_facesOffset FacesB

Push/pull faces of a body by a distance

Inputs: body_name (required), distance (required), face_selection, face_indices.

patch_surfacePatch SurfaceB

Create a patch surface from boundary edges

Inputs: sketch_name (required), profile_index, continuity.

pingPingA
Read-onlyIdempotent

Health check — returns immediately without touching Fusion API

Inputs: no named parameters.

project_geometryProject GeometryB

Project edges or bodies onto the active sketch plane

Inputs: source_name (required), is_linked, sketch_name.

rectangular_patternRectangular PatternB

Pattern a body in rows and columns

Inputs: body_name (required), x_count, x_spacing, y_count, +1 more.

revolveRevolveB

Revolve a sketch profile around an axis

Inputs: angle (required), profile_index, axis_origin_x, axis_origin_y, +5 more.

ruled_surfaceRuled SurfaceB

Create a ruled surface from an edge or sketch curve

Inputs: body_name (required), edge_index (required), distance, rule_type.

scale_bodyScale BodyB

Scale a body uniformly or non-uniformly

Inputs: body_name (required), scale (required), scale_x, scale_y, +4 more.

set_appearanceSet AppearanceB
Idempotent

Assign a material appearance to a body, face, or component from the Fusion appearance library

Inputs: target_name (required), appearance_name (required), target_type, face_index.

set_parameterSet ParameterB
Idempotent

Update the value of an existing user parameter

Inputs: name (required), value (required).

shellShell BodyB

Hollow out a body by removing a face

Inputs: thickness (required), body_name, body_index, face_selection.

split_bodySplit BodyB

Split a body using a plane or face

Inputs: body_name (required), splitting_plane, splitting_body, extend_tool.

split_faceSplit FaceB

Split faces of a body using a plane

Inputs: body_name (required), face_indices, splitting_plane, extend_tool.

stitch_surfacesStitch SurfacesB

Stitch surface bodies into a single body

Inputs: body_names (required), tolerance.

suppress_featureSuppress FeatureB

Suppress (disable) a feature in the timeline

Inputs: feature_name (required).

sweepSweepB

Sweep a sketch profile along a path (sketch curve)

Inputs: profile_index (required), path_sketch_name (required), path_curve_index, operation.

thicken_surfaceThicken SurfaceB

Thicken a surface body into a solid

Inputs: body_name (required), thickness (required), direction.

trim_curveTrim CurveA

Trim a sketch curve at its intersections. The segment nearest to the given point is removed.

Inputs: curve_index (required), point_x (required), point_y (required), sketch_name.

trim_surfaceTrim SurfaceB

Trim a surface body with another body

Inputs: body_name (required), tool_name (required).

undoUndoB

Undo the last operation

Inputs: no named parameters.

unfoldUnfoldB

Unfold specific bends in a sheet metal body

Inputs: body_name (required), bend_indices.

unsuppress_featureUnsuppress FeatureB

Unsuppress (re-enable) a feature in the timeline

Inputs: feature_name (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 80 tools

    Disambiguation4/5

    Most tools have distinct purposes, but some overlap exists, such as 'create_box', 'create_cylinder', 'create_sphere', and 'create_torus' all being primitive creation tools, which could cause minor confusion. However, the descriptions clarify their specific geometric shapes, reducing ambiguity.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern throughout, such as 'add_constraint', 'create_sketch', 'export_step', and 'measure_distance'. There are no deviations in naming conventions, making the set predictable and readable.

    Tool Count2/5

    With 80 tools, the count is excessive for a single server, making it overwhelming and difficult for agents to navigate efficiently. While Fusion 360 is a complex CAD/CAM system, this many tools likely includes overly granular or redundant operations that could be consolidated.

    Completeness5/5

    The tool set provides comprehensive coverage for Fusion 360's domain, including sketching, modeling, assembly, manufacturing (CAM), sheet metal, parameters, export, and analysis. There are no obvious gaps; it supports full CRUD/lifecycle operations and advanced workflows.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI-powered parametric CAD design in Autodesk Fusion 360 through natural language commands. Supports multiple AI backends (Ollama, OpenAI, Gemini, Claude) with intelligent routing and safety validation for geometric operations.
      22
      MIT
    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables AI-powered CAD automation in Autodesk Fusion 360 through natural language prompts. Features a modern web chat interface with multiple LLM backends for creating 3D models, sketches, and parametric designs.
      -
    • A
      license
      B
      quality
      C
      maintenance
      Connects AI coding agents to Autodesk Fusion 360 for CAD/CAM automation, exposing 84 tools for sketching, modeling, assembly, inspection, export, and G-code post-processing through any MCP-compatible client.
      85
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI coding agents to drive Autodesk Fusion 360 over the Model Context Protocol, exposing 92 tools for sketching, modeling, querying, measuring and exporting CAD geometry through natural language. Includes an in-Fusion add-in that executes API calls safely on Fusion's main thread, with stdio transport compatible with any MCP client.
      8
      92
      MIT