Skip to main content
Glama
Fusion360 MCP Server

Fusion360 MCP Server

by forgemorrow

Fusion360 MCP Server

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: Fusion MCP para Codex

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"
      ]
    }
  }
}

3. Verify

Call the ping tool from your client. If it returns {"pong": true}, 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 (84)

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

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.)

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)

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

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

Appearance

Tool

Description

set_appearance

Assign material appearance from library

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

Export

Tool

Description

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

CAM / Manufacturing

Tool

Description

cam_create_setup

Create a manufacturing setup (milling/turning/cutting)

cam_create_operation

Add a machining operation (face, contour, adaptive, drilling, etc.)

cam_generate_toolpath

Generate toolpaths for operations

cam_post_process

Post-process to G-code (fanuc, grbl, haas, etc.)

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)

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 — tool results include isError=True when the add-in reports failures

  • 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 (171 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.

  • Commands time out after 30 seconds.

  • 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.

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

85 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, sketch_name, +1 more.

add_dimensionAdd Sketch DimensionB

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

Inputs: value (required), dimension_type (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: tool_body (required), target_body (required), operation.

cam_create_operationCreate CAM OperationB

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

Inputs: strategy (required), setup_name (required), name, coolant, +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, stock_mode, operation_type, +3 more.

cam_generate_toolpathGenerate ToolpathB

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

Inputs: setup_name, generate_all, operation_name.

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), output_units, output_folder, operation_name, +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: count (required), body_name (required), axis, total_angle.

create_as_built_jointCreate As-Built JointC

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

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

create_bendCreate BendB

Add a bend to a sheet metal body

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

create_boxCreate BoxC

Create a box primitive (non-parametric via TemporaryBRepManager)

Inputs: width (required), height (required), length (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), body_name, plane_one, plane_two, +3 more.

create_construction_planeCreate Construction PlaneB

Create a construction plane for sketching

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

create_cylinderCreate CylinderC

Create a cylinder primitive (non-parametric via TemporaryBRepManager)

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

create_flangeCreate FlangeA

Create a sheet metal flange on an edge

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

create_holeCreate HoleB

Create a hole feature on a body face

Inputs: depth (required), diameter (required), center_x, center_y, +3 more.

create_parameterCreate ParameterB

Create a new user parameter

Inputs: name (required), unit (required), value (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_modeled, is_internal, +5 more.

create_torusCreate TorusB

Create a torus primitive (non-parametric via TemporaryBRepManager)

Inputs: major_radius (required), minor_radius (required), axis, center_x, +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: angle (required), body_name (required), face_selection, is_tangent_chain, +1 more.

draw_arcDraw ArcB

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

Inputs: start_x (required), start_y (required), center_x (required), center_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: end_x (required), end_y (required), start_x (required), start_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: points (required), spline_type (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.

export_view_sheetExport View SheetA

Render canonical orthographic + isometric views as PNGs and emit a self-contained HTML sheet suitable for sharing with a mechanical engineer. Opens in any browser; Print -> Save as PDF for a static artifact. Restores the viewport camera after rendering.

Inputs: notes, title, views, image_size, +1 more.

extend_curveExtend CurveA

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

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

extrudeExtrudeC

Extrude a sketch profile

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

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_design_typeGet Design TypeA
Read-onlyIdempotent

Check if the design is in parametric or direct mode. Use this to detect accidental mode switches.

Inputs: no named parameters.

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: distance (required), body_name (required), face_indices, face_selection.

patch_surfacePatch SurfaceB

Create a patch surface from boundary edges

Inputs: sketch_name (required), continuity, profile_index.

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, y_count, x_spacing, +1 more.

rename_bodyRename BodyA
Idempotent

Rename a body (searches root and all components)

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

render_viewRender ViewportA
Read-onlyIdempotent

Capture the active viewport as a PNG so you can visually verify the model. Pass a canonical view (iso/front/top/etc.) to reposition the camera first, or 'current' to keep it as is. Returns base64-encoded image bytes alongside metadata; the MCP server delivers it as an image content block.

Inputs: fit, view, width, height.

revolveRevolveB

Revolve a sketch profile around an axis

Inputs: angle (required), operation, 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: scale (required), body_name (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), face_index, target_type.

set_design_typeSet Design TypeA
Idempotent

Switch design type between 'parametric' and 'direct'. Use 'parametric' to recover from accidental direct-mode switches (equivalent to Capture Design History in the UI).

Inputs: design_type (required).

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), extend_tool, splitting_body, splitting_plane.

split_faceSplit FaceB

Split faces of a body using a plane

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

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), operation, path_curve_index.

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: point_x (required), point_y (required), curve_index (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.1/5.0

    Scored across 85 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes (e.g., extrude vs revolve vs loft), but several CAM tools (cam_generate_toolpath, cam_post_process, cam_create_operation) and some feature tools (split_body vs split_face, create_bend vs create_flange) have subtle overlaps that could cause confusion without domain knowledge.

    Naming Consistency4/5

    The vast majority of tools follow a consistent snake_case verb_noun pattern. A few naming quirks exist (e.g., 'extrude' and 'fillet' as bare verbs, and the 'cam_' prefix for CAM tools), but these are minor deviations and not misleading.

    Tool Count1/5

    85 tools is excessive for a single MCP server, far exceeding the typical 3-15 range. While Fusion 360 is a broad domain, this count suggests poor scoping and will impose significant cognitive load on an agent.

    Completeness5/5

    The tool set covers an impressively complete range of Fusion 360 workflows: sketching, solid modeling, surface modeling, sheet metal, CAM, assemblies, parameters, measurement, rendering, and export. CRUD operations for parameters and components are present, and the domain coverage is comprehensive.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Connects AI coding agents to Autodesk Fusion 360 for CAD automation, enabling natural language control over sketching, 3D modeling, and CAM operations. It uses a Python-based bridge and a custom add-in to execute over 80 tools ranging from simple geometry creation to complex assembly and parameter management.
      80
      483 PyPI
      147
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants to inspect and automate Autodesk Fusion 360 through MCP, providing tools for CAD modeling, CAM manufacturing, and document management.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that gives AI agents genuine 3D spatial understanding of Autodesk Fusion 360, enabling exact measurements, collision analysis, and free-space placement search, plus Fusion-native parametric authoring for clean, human-editable models.
      MIT
    • A
      license
      C
      quality
      C
      maintenance
      Enables MCP-compatible assistants to control Autodesk Fusion for mechanical modeling, assembly editing, CAM workflows, inspection, and model export through Fusion's native MCP endpoint.
      39
      1
      MIT