Skip to main content
Glama
Fusion360 Live MCP
by tbrito88

Fusion360 Live MCP

Last updated: 2026-09-29

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.

Origin — This is a derivative of faust-machines/fusion360-mcp-server (MIT-licensed), adapted for Autodesk Fusion 2704.1.53 with additional bug fixes found through live testing inside Fusion. See CORRECOES.md for the full list of changes from upstream. The original copyright notice is preserved in LICENSE as required by its MIT license. Upstream's package, module and add-in names (fusion360-mcp-server, fusion360_mcp, Fusion360MCP) were renamed here so both projects can be installed side by side without clashing.

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

Live-tested with Claude Code. Works with any client that speaks the Model Context Protocol over stdio — Hermes Agent, OpenClaw, Codex, Gemini CLI, Cursor and others; see Other agents and LLMs.

WARNING

Check every G-code before it reaches a machine. The agent can generate toolpaths and post-process them to G-code, but nothing here verifies them for collisions, feeds or fixturing. Simulate every toolpath in Fusion's Manufacture workspace and have a qualified person review the program before running it on any CNC. The CAM tools are marked so your MCP client asks for approval before running them; approving one is not a substitute for that review. This software comes with no warranty (see LICENSE).

How it works

Any MCP Client ←(stdio MCP)→ This Server ←(TCP :9876)→ Fusion360LiveMCP 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. Fusion360LiveMCP Add-in (installed in Fusion's AddIns folder) — runs inside Fusion 360, executes API calls safely on the main thread

Related MCP server: Fusion360 MCP Server

Prerequisites

  • uv (Python package manager)

  • Autodesk Fusion 360

  • An MCP-compatible client (Claude Code, OpenCode, Codex, Cursor, etc.)

Security

  • The add-in listens on localhost:9876 with no authentication. Any program running under your user account can connect and send commands — including execute_code, which runs arbitrary Python inside Fusion with your permissions. Only run the add-in on machines where you trust the local software.

  • Connections that don't speak the add-in's JSON protocol are dropped before any command is read. This blocks a web page from making your browser send commands to localhost.

  • execute_code, cam_generate_toolpath and cam_post_process are annotated as destructive, so clients that honour MCP tool annotations ask before running them instead of auto-approving. Read the code or the CAM setup an agent wants to run before approving it.

  • Binding to 0.0.0.0 (the LAN setup) extends the same trust to every machine on that network.

  • Please report vulnerabilities privately through the repository's Security → Report a vulnerability page, not in a public issue.

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/Fusion360LiveMCP

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

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

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

2. Connect your MCP client

This fork is not published on PyPI (upstream's fusion360-mcp-server package there does not include the fixes in CORRECOES.md). Clone this repo and run it from source with uv:

git clone https://github.com/tbrito88/fusion360-live-mcp.git
cd fusion360-live-mcp
uv sync

Claude Code

claude mcp add fusion360-live -- uv run --directory /path/to/fusion360-live-mcp -m fusion360_live_mcp --mode socket

Other agents and LLMs

The server speaks standard MCP over stdio, so it works with any client that supports stdio servers and tool calling — which model runs behind the client doesn't matter. The launch command is always:

uv run --directory /path/to/fusion360-live-mcp -m fusion360_live_mcp --mode socket

To avoid needing uv at runtime, point the client at the virtual environment's Python instead: /path/to/fusion360-live-mcp/.venv/Scripts/python.exe on Windows (.venv/bin/python elsewhere) with args -m fusion360_live_mcp --mode socket.

Three settings matter in every client:

  • Timeouts. Fusion operations can be slow, and on Windows the first call may start Fusion and wait up to 240 s for the add-in. Allow at least 300 s per tool call and 60 s for startup.

  • Environment. Some clients (Hermes, Codex) don't pass your whole shell environment to the server. If you use FUSION360_LIVE_MCP_HOST, _PORT or _AUTOLAUNCH, declare them in the client's env block.

  • Tool count. The 92 tool definitions take about 15k tokens. OpenAI-compatible APIs reject requests with more than 128 tools (the agent's own tools count too), and small local models get less accurate with long tool lists. When that matters, use the client's tool filter with this core set (~40 tools, ~6k tokens):

    ping, "get_*", list_components, create_sketch, "draw_*", create_polygon, extrude, revolve, fillet, chamfer, shell, create_hole, mirror, rectangular_pattern, circular_pattern, boolean_operation, move_body, rename_body, delete_body, create_box, create_cylinder, create_sphere, "measure_*", check_interference, "*_parameter", export, render_view, undo

Every tool description states its units (cm and degrees), and the server sends the same rules as MCP instructions, so models that never saw this README still get sizes right.

mcp_servers:
  fusion360-live:
    command: "uv"
    args: ["run", "--directory", "/path/to/fusion360-live-mcp", "-m", "fusion360_live_mcp", "--mode", "socket"]
    timeout: 300
    connect_timeout: 60
    # tools:
    #   include: [ping, "get_*", extrude, ...]   # the core set above

Hermes registers the tools as mcp_fusion360_live_<tool>.

{
  mcp: {
    servers: {
      "fusion360-live": {
        transport: "stdio",
        command: "uv",
        args: ["run", "--directory", "/path/to/fusion360-live-mcp", "-m", "fusion360_live_mcp", "--mode", "socket"],
        connectionTimeoutMs: 60000,
        requestTimeoutMs: 300000,
        // toolFilter: { include: ["ping", "get_*", "extrude"] },  // the core set above
      },
    },
  },
}
[mcp_servers.fusion360-live]
command = "uv"
args = ["run", "--directory", "/path/to/fusion360-live-mcp", "-m", "fusion360_live_mcp", "--mode", "socket"]
startup_timeout_sec = 60   # default 10 is too short for the first uv run
tool_timeout_sec = 300     # default 60 is too short for auto-launch
# enabled_tools = ["ping", "get_scene_info", "extrude"]
{
  "mcpServers": {
    "fusion360-live": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/fusion360-live-mcp", "-m", "fusion360_live_mcp", "--mode", "socket"],
      "timeout": 600000
    }
  }
}

Add "includeTools": [...] to limit the tool list.

{
  "mcpServers": {
    "fusion360-live": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/fusion360-live-mcp", "-m", "fusion360_live_mcp", "--mode", "socket"]
    }
  }
}

What has been verified: the MCP protocol with a generic client (the official Python SDK) running under the same filtered environment Hermes uses, and every tool schema against OpenAI's and Gemini's rules (tests/test_client_compat.py). Live modelling inside Fusion has so far been done with Claude only.

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:FUSION360_LIVE_MCP_HOST = "0.0.0.0"
# macOS / Linux
export FUSION360_LIVE_MCP_HOST=0.0.0.0

Then start Fusion and run the Fusion360LiveMCP 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
uv run --directory /path/to/fusion360-live-mcp -m fusion360_live_mcp --mode socket --host 192.168.1.42

# Or via env var (useful in MCP client configs)
FUSION360_LIVE_MCP_HOST=192.168.1.42 uv run --directory /path/to/fusion360-live-mcp -m fusion360_live_mcp --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. See Security.

3. Verify

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

Uninstalling

  1. Remove the fusion360-live entry from your MCP client config

  2. Stop the add-in in Fusion (Shift+S → Add-Ins → Fusion360LiveMCP → Stop)

  3. Delete the add-in folder from Fusion's AddIns directory

Available Tools (92)

Tools marked (2026+) require a recent Fusion build — they use APIs introduced in the January–July 2026 releases.

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_body

Delete one named body (searches root and all components) — use instead of undo to remove a body

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 a single body

thicken_surface

Thicken a surface body into a solid

Sheet Metal

Tool

Description

convert_to_sheet_metal

Convert a solid body of uniform thickness into sheet metal (thickness taken from the geometry)

fold_sheet_metal

Bend a sheet metal body along a line of the last sketch (draw the line with draw_line first)

flat_pattern

Create the flat pattern of a sheet metal body (run convert_to_sheet_metal first)

export_flat_pattern_dxf

Export the flat pattern as DXF for laser/plasma/waterjet cutting (run flat_pattern first)

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 (497 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 ~/fusion360livemcp.log.

  • Auto-launch (Windows): when the add-in is unreachable on localhost and Fusion is not running, the server starts Fusion and marks this add-in as run on startup in Fusion's add-in list (JSLoadedScriptsinfo). If Fusion is already running it does nothing, so no unsaved work is lost. Set FUSION360_LIVE_MCP_AUTOLAUNCH=0 to disable.

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

  • This fork is tested on Fusion 2704.1.53 (Windows x86_64) — see CORRECOES.md for the full validation log. 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 — see LICENSE.

Autodesk and Fusion are registered trademarks of Autodesk, Inc. This project is not affiliated with, endorsed by, or supported by Autodesk.

Available Tools

92 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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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.

auto_constrainAuto-Constrain SketchA

Automatically add geometric constraints and dimensions to fully constrain a sketch (Fusion 2026+ AutoConstrain API). result_option: 1 = thorough/slow (default), 2 = fast, 3 = may move geometry within tolerance.

Inputs: sketch_name, result_option.

boolean_operationBoolean OperationA

Combine two named bodies (join/cut/intersect). For 'join', target_body and tool_body must actually touch or overlap — confirmed live that Fusion silently discards the tool body's geometry (no error, no merge) when they don't, so this refuses up front with the real minimum distance between them instead of reporting a false success.

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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: strategy (required), setup_name (required), name, coolant, +8 more.

cam_create_setupCreate CAM SetupB

Create a manufacturing setup for a body. Defines the stock, coordinate system, and operation type (milling/turning/cutting). Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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 ProcessC

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

Inputs: setup_name (required), output_units, program_name, output_folder, +2 more.

chamferChamfer EdgesB

Chamfer edges of a body. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: distance (required), x_max, x_min, y_max, +7 more.

check_interferenceCheck InterferenceA
Read-onlyIdempotent

Detect collisions between components/bodies. Interference volumes in cm³.

Inputs: component_names (required), include_coincident_faces.

circular_patternCircular PatternA

Pattern a body OR a feature around an axis. Without feature_name, this duplicates the whole body N times as separate overlapping bodies (correct for copying a whole part, e.g. around a turntable) — it does NOT add copies of a feature to the same body. For the common case — a bolt circle, repeating a single hole around one part — pass feature_name (the feature that created it, e.g. from create_hole's feature_name) so the result stays one body with N holes. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: count (required), body_name (required), axis, total_angle, +1 more.

compare_meshesCompare Mesh BodiesA
Read-onlyIdempotent

Compare two mesh bodies and return deviation statistics (min/max/mean/RMS signed distance in cm) — e.g. validate an imported STL against a reference mesh. Requires Fusion 2026+.

Inputs: mesh_name_a (required), mesh_name_b (required).

convert_to_sheet_metalConvert to Sheet MetalA

Convert a solid body of uniform thickness into sheet metal. Thickness is taken from the geometry, not from the rule. This replaces flange creation, which the Fusion API does not expose: model the shape with extrude/shell, then convert.

Inputs: body_name (required), rule_name, face_index.

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_boxCreate BoxA

Create a box primitive (non-parametric via TemporaryBRepManager). center_x/center_y are the box CENTER, but center_z is its BOTTOM face: the box spans center_z .. center_z + height (confirmed live: center_z=6, height=12 gave Z 6..18). Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

create_box_parametricCreate Parametric BoxA

Create a history-based rectangular box via sketch rectangle + extrude (unlike create_box which uses TemporaryBRepManager). length/width/height accept a number (cm, Fusion internal unit) or a string expression referencing User Parameters (e.g. 'boxL', '56 mm', 'outer - 2 * wall_t'). Call create_parameter first to define named parameters. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: width (required), height (required), length (required), plane, +5 more.

create_componentCreate ComponentB

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

Inputs: name (required), parent_name.

create_construction_axisCreate Construction AxisB

Create a construction axis. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: method (required), body_name, plane_one, plane_two, +3 more.

create_construction_planeCreate Construction PlaneB

Create a construction plane for sketching. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

create_cylinderCreate CylinderA

Create a cylinder (or cone, with top_radius) primitive (non-parametric via TemporaryBRepManager). The base circle is centred at (base_x, base_y, base_z); the body extends height along axis, or along (direction_x, direction_y, direction_z) when given — any direction, e.g. an inclined valve bore. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

create_holeCreate HoleB

Create a hole feature on a body face. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

create_parameterCreate ParameterA

Create a new user parameter. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

create_polygonCreate PolygonB

Draw a regular polygon in the most recent sketch. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: plane, offset.

create_sketchCreate SketchB

Create a new sketch on xy/yz/xz plane, optionally offset. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: plane, z_offset.

create_sphereCreate SphereB

Create a sphere primitive (non-parametric via TemporaryBRepManager) Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

create_threadCreate ThreadB

Add threads to a cylindrical face (cosmetic or modeled) Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: body_name (required), near_x, near_y, near_z, +8 more.

create_torusCreate TorusA

Create a torus primitive (non-parametric via TemporaryBRepManager) Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

create_ucsCreate User Coordinate SystemA

Create a UCS at (x, y, z) with optional rotation (Fusion 2026+ UCS API, preview). A hidden reference sketch is created to anchor the UCS — do not delete it. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: x, y, z, name, +3 more.

delete_allDelete AllA
Destructive

Clear the design (delete all timeline items)

Inputs: no named parameters.

delete_bodyDelete BodyA
Destructive

Delete one named body (searches root and all components). Use this instead of undo to remove a body: API-created features are not reliably on Fusion's UI undo stack.

Inputs: body_name (required).

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) Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

draw_arcDraw ArcA

Draw an arc in the most recent sketch (center + start point + sweep angle) Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

draw_lineDraw LineB

Draw a line in the most recent sketch. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

draw_rectangleDraw RectangleB

Draw a rectangle in the most recent sketch. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

execute_codeExecute CodeA
Destructive

Run arbitrary Python in Fusion 360. The last expression's value is returned (REPL-style). Pre-defined names: app, ui, design, component, adsk, math, late_results. The add-in waits 30 s by default; pass timeout_s (max 600) for a script that runs many features on a large timeline. A command that times out while running still finishes; its result is kept and late_results() returns it. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: code (required), timeout_s.

exportExport (unified)A

Unified export wrapper — dispatches to export_stl / export_step / export_f3d based on format or file extension. Format is auto-detected from file_path extension if not specified. STL and STEP require body_name; F3D exports the whole design.

Inputs: format, body_name, file_path.

export_f3dExport F3DA

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

Inputs: file_path.

export_flat_pattern_dxfExport Flat Pattern DXFA

Export the flat pattern of a sheet metal body as DXF, for laser, plasma or waterjet cutting (run flat_pattern first)

Inputs: body_name (required), 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 CurveB

Extend a sketch curve to the nearest intersection. The end nearest to the given point is extended. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

extrudeExtrudeA

Extrude a sketch profile. For operation cut/intersect, pass target_body_name whenever the document has more than one body — confirmed live that leaving it unset cuts EVERY body the tool geometrically reaches, not just an intended target. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: height (required), direction, operation, profile_index, +1 more.

filletFillet EdgesB

Round edges of a body. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: radius (required), x_max, x_min, y_max, +7 more.

flat_patternFlat PatternA

Create the flat pattern of a sheet metal body (run convert_to_sheet_metal first)

Inputs: body_name (required), face_index.

fold_sheet_metalFold Sheet MetalA

Bend a sheet metal body along a line of the last sketch. Draw the line on the sheet face with draw_line first. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: body_name (required), bend_angle (required), face_index, line_index, +2 more.

get_bounding_boxGet Bounding BoxA
Read-onlyIdempotent

Axis-aligned bounding box for a body or component by name. Returns min, max, size, and center in cm (Fusion internal units). For components, unions bounding boxes of all contained bodies. Useful for measuring imported reference geometry.

Inputs: 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. Bounding box in cm.

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. Returns mass in kg, volume in cm³, area in cm², density in kg/cm³ and center of mass in cm.

Inputs: body_name (required), accuracy.

get_scene_infoGet Scene InfoB
Read-onlyIdempotent

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

Inputs: no named parameters.

import_meshImport MeshA

Import a mesh file (STL, OBJ, or 3MF) as a mesh body. Returns the mesh name and bounding box. Use for reference geometry (e.g. exported SketchUp model).

Inputs: file_path (required), units, component_name.

list_componentsList ComponentsB
Read-onlyIdempotent

List all components in the design

Inputs: no named parameters.

loftLoftC

Loft between two or more sketch profiles

Inputs: profile_sketch_names (required), operation, target_body_name.

measure_angleMeasure AngleA
Read-onlyIdempotent

Measure the angle between one face of each of two bodies (picked by index — defaults to each body's first face).

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

measure_distanceMeasure DistanceA
Read-onlyIdempotent

Measure minimum distance between two entities. Returns the distance and closest points in cm.

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 BodyA

Move a named body: optional rotation (angle, degrees) about an axis parallel to x/y/z through (pivot_x, pivot_y, pivot_z), then translation by (x, y, z). Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: body_name (required), x, y, z, +5 more.

offset_curveOffset CurveB

Offset connected sketch curves by a distance. Direction is determined by the direction_point. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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 PatternA

Pattern a body in rows and columns. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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. For operation cut/intersect, pass target_body_name whenever the document has more than one body — confirmed live that leaving it unset cuts EVERY body within the revolve's sweep, not just an intended target (it sliced two unrelated bodies elsewhere in the document purely because they sat within the sweep radius). Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: angle (required), operation, axis_origin_x, axis_origin_y, +6 more.

scale_bodyScale BodyB

Scale a body uniformly or non-uniformly. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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_colorSet Body ColorA
Idempotent

Assign a flat RGB color to a body (creates/reuses a design-local appearance). Useful for visually distinguishing parts before render_view. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: red (required), blue (required), green (required), body_name (required), +1 more.

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 ParameterA
Idempotent

Update the value of an existing user parameter. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

shellShell BodyA

Hollow out a body, removing the selected planar face(s) as the opening. top/bottom = the +Z/-Z facing face(s) at the body's extreme Z; up_facing/down_facing = every +Z/-Z facing planar face (e.g. a stepped rim), optionally limited by z_min/z_max. Returns faces_removed and removed_face_z. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: thickness (required), z_max, z_min, body_name, +2 more.

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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

Inputs: body_names (required), tolerance.

suppress_featureSuppress FeatureA

Suppress (disable) one or more timeline features. Pass feature_names for a batch: it recomputes the timeline ONCE (one call per feature costs a full recompute each — ~2.5 s apiece on a 200+ item timeline). Suppressing a Combine cut/join brings its tool body back; the result lists bodies_appeared so you can suppress the feature that made it.

Inputs: feature_name, feature_names.

sweepSweepC

Sweep a sketch profile along a path (sketch curve)

Inputs: profile_index (required), path_sketch_name (required), operation, path_curve_index, +1 more.

thicken_surfaceThicken SurfaceB

Thicken a surface body into a solid. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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. Unless a parameter says otherwise, lengths and coordinates are in cm (not mm) and angles in degrees.

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

undoUndoB

Undo the last operation

Inputs: no named parameters.

unsuppress_featureUnsuppress FeatureB

Unsuppress (re-enable) one or more timeline features; feature_names recomputes once for the whole batch.

Inputs: feature_name, feature_names.

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 92 tools

    Disambiguation3/5

    The set covers many distinct CAD operations, but there is significant overlap: multiple export tools (export, export_stl, export_step, export_f3d), two box creation tools (create_box, create_box_parametric), multiple joint tools (add_joint, create_as_built_joint, create_rigid_group), and both render_view and export_view_sheet produce images. Descriptions help resolve most cases, but an agent must read carefully to avoid misselection.

    Naming Consistency4/5

    Names are consistently snake_case and mostly follow a verb_noun pattern (split_body, create_sketch, get_parameters). A few single-verb names (extrude, mirror, loft) are conventional CAD terms and do not break the pattern; minor deviations like 'export' vs 'export_stl' and 'boolean_operation' are acceptable.

    Tool Count1/5

    92 tools is far beyond the 3–15 typical range and exceeds even the 25+ 'too many' threshold. While the domain is broad, many operations could be consolidated (e.g., export variants, primitive creation, sketch drawing tools), indicating an over-exposed surface that increases cognitive load.

    Completeness4/5

    The surface covers modeling, sketching, constraints, assemblies, measurement, export/import, sheet metal, CAM, and rendering—nearly all of Fusion 360's major workflows. Minor gaps exist (e.g., importing STEP/IGES, creating engineering drawings), but execute_code provides an escape hatch for missing operations.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to generate Autodesk Fusion 360 Python scripts through natural language commands, using the Model Context Protocol (MCP) for tool calls and script generation.
      6
      MIT
    • 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
      A
      quality
      C
      maintenance
      Enables controlling Autodesk Fusion 360 from any MCP-compatible AI client through natural language. Exposes tools for creating sketches, drawing rectangles and circles, extruding, revolving, filleting, shelling, drilling holes and bolt-circle patterns, managing user parameters, and exporting STEP/STL files, plus batch generation of parametric variants.
      15
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables MCP-compatible coding agents to inspect and automate Autodesk Fusion designs through a local add-in, with whole-task approval, recovery checkpoints, undoable transactions, and geometry validation.
      Apache 2.0