Fusion360 Live MCP
Summary: An MCP server that lets AI agents drive Autodesk Fusion 360 over a local socket bridge — sketching, modelling, assemblies, sheet metal, inspection, CAM, export and arbitrary Python — via 92 tools running on Fusion's main thread.
Scene & query —
ping,get_scene_info,get_object_info,get_bounding_box,list_components; design-type check/repair (get_design_type,set_design_type).Sketching — create sketches, draw rectangles/circles/lines/arcs/splines/polygons, constraints, auto-constrain, dimensions, offset/trim/extend,
project_geometry.Features — extrude, revolve, sweep, loft, fillet, chamfer, shell, mirror, holes, threads, draft, split body/face, offset faces, scale, rectangular/circular patterns, suppress/unsuppress.
Primitives & body ops — box (direct or parametric/expression-driven), cylinder/cone, sphere, torus; move, rename, delete, boolean join/cut/intersect, delete-all, undo (with design-type guard).
Surfaces & sheet metal — patch, stitch, thicken; convert to sheet metal, fold, flat pattern, flat-pattern DXF export.
Construction & assembly — construction planes/axes, UCS (2026+), components, joints (incl. as-built), rigid groups.
Inspection — measure distance/angle, physical properties, section analysis, interference check, mesh deviation comparison (2026+).
Presentation — set appearance from the Fusion library (localised names), flat RGB colour,
render_viewviewport PNG capture, multi-view HTML/PNG sheet export.Parameters — list, create, update and delete user parameters; parametric box dimensions can reference them as expressions.
Import/export — mesh import (STL/OBJ/3MF, unit-aware), STL, STEP, F3D, and a unified
exportdispatcher with extension inference.CAM — create setups and operations (milling/turning/cutting), generate toolpaths, post-process to G-code (destructive-annotated for client approval), list setups/operations and inspect them.
Code execution —
execute_coderuns arbitrary Python inside Fusion with access toapp,ui,design,component,adsk, returning the last expression (REPL-style, up to 600 s, with late-result retrieval).Protocol niceties — every tool carries read-only/destructive/idempotent annotations, structured errors with
error_kindand hints, resources/resources templates, workflow prompts, and a mock mode for testing without Fusion.Caveats — units are centimetres and degrees throughout; one operation per call; mutating commands are never auto-retried after a timeout; G-code is never collision- or feed-verified, so toolpaths must be simulated and reviewed before machining.
Provides tools for automating Autodesk Fusion 360 CAD modelling through a Fusion add-in connected over TCP, covering sketch creation and constraints, 3D primitives, extrude/revolve/loft/sweep, fillets, chamfers, shells, patterns, booleans and joints, sheet metal conversion and flat patterns, CAM setups, operations and toolpath generation, G-code post-processing, measurement and interference checks, parameter management, exports (STL, STEP, F3D, DXF) and viewport rendering.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fusion360 Live MCP Create a 5 cm cube, then fillet the vertical edges with a 0.5 cm radius."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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 ThreadTwo components:
MCP Server (this repo) — Python process that speaks MCP protocol to Claude and forwards commands over TCP
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:9876with no authentication. Any program running under your user account can connect and send commands — includingexecute_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_toolpathandcam_post_processare 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.shManual 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 syncClaude Code
claude mcp add fusion360-live -- uv run --directory /path/to/fusion360-live-mcp -m fusion360_live_mcp --mode socketOther 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 socketTo 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,_PORTor_AUTOLAUNCH, declare them in the client'senvblock.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 aboveHermes 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.0Then 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 socketSecurity 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
Remove the
fusion360-liveentry from your MCP client configStop the add-in in Fusion (Shift+S → Add-Ins → Fusion360LiveMCP → Stop)
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 |
| Health check (instant, no Fusion API) |
| Design name, bodies, sketches, features, camera |
| Detailed info about a named body or sketch |
| Axis-aligned bbox (min/max/size/center) for body or component; unions all bodies when called on a component |
| List all components in the design |
Design Type Safety
Tool | Description |
| Check if design is in parametric or direct mode |
| Switch design type (parametric/direct recovery) |
Sketching
Tool | Description |
| New sketch on xy/yz/xz plane, optional offset |
| Rectangle in most recent sketch |
| Circle in most recent sketch |
| Line in most recent sketch |
| Arc (center + start + sweep angle) |
| Fit-point or control-point spline |
| Regular polygon (3–64 sides) |
| Geometric constraint (coincident, parallel, tangent, etc.) |
| (2026+) Auto-constrain a sketch via the AutoConstrain API — 3 result options (thorough / fast / tolerance-adjusting) |
| Driving dimension (distance, angle, radial, diameter) |
| Offset connected sketch curves |
| Trim at intersections |
| Extend to nearest intersection |
| Project edges/bodies onto sketch plane |
Features
Tool | Description |
| Extrude a sketch profile |
| Revolve a profile around an axis |
| Sweep a profile along a path |
| Loft between two or more profiles |
| Round edges (all/top/bottom/vertical) |
| Chamfer edges |
| Hollow out a body |
| Mirror a body across a plane |
| Hole feature on a body face |
| Pattern in rows and columns |
| Pattern around an axis |
| Add threads (cosmetic or modeled) |
| Draft/taper faces for mold release |
| Split a body using a plane |
| Split faces of a body |
| Push/pull faces by a distance |
| Scale uniformly or non-uniformly |
| Suppress a timeline feature |
| Re-enable a suppressed feature |
Body Operations
Tool | Description |
| Translate a body by (x, y, z) |
| Rename a body (searches root and all components) |
| Join/cut/intersect two bodies |
| Delete one named body (searches root and all components) — use instead of |
| Clear the design |
| Undo last operation (with design-type safety guard) |
Direct Primitives
Tool | Description |
| Box (via TemporaryBRepManager, history-less) |
| History-based box: sketch rectangle + dimensions + extrude. |
| Cylinder |
| Sphere |
| Torus |
Surface Operations
Tool | Description |
| Create a patch surface from boundary edges |
| Stitch surface bodies into a single body |
| Thicken a surface body into a solid |
Sheet Metal
Tool | Description |
| Convert a solid body of uniform thickness into sheet metal (thickness taken from the geometry) |
| Bend a sheet metal body along a line of the last sketch (draw the line with |
| Create the flat pattern of a sheet metal body (run |
| Export the flat pattern as DXF for laser/plasma/waterjet cutting (run |
Construction Geometry
Tool | Description |
| Offset, angle, midplane, 3-point, tangent |
| Two-point, intersection, edge, perpendicular |
| (2026+, preview API) User Coordinate System at a point with optional rotation |
Assembly
Tool | Description |
| Create a sub-assembly component |
| Joint between two components |
| Joint from current positions |
| Lock components together |
Inspection & Analysis
Tool | Description |
| Minimum distance between entities |
| Angle between entities |
| Mass, volume, area, center of mass |
| Section plane through model |
| Detect collisions between components |
| (2026+) Deviation statistics between two mesh bodies (min/max/mean/RMS, cm) — e.g. validate against a reference STL |
Appearance
Tool | Description |
| Assign material appearance from library |
| (2026+) Assign a flat RGB color (+ opacity) to a body |
Parameters
Tool | Description |
| List all user parameters |
| Create a new parameter |
| Update a parameter value |
| Remove a parameter |
Import / Export
Tool | Description |
| Import STL/OBJ/3MF as mesh body via |
| Export body as STL (supports bodies inside components) |
| Export body as STEP (supports bodies inside components) |
| Export design as Fusion archive |
| Export multi-view PNG sheet (iso/front/top/right) for visual inspection |
| Unified dispatcher — routes to |
CAM / Manufacturing
Tool | Description |
| Create a manufacturing setup (milling/turning/cutting); applies stock mode/offsets |
| Add a machining operation (face, contour, adaptive, drilling, etc.); applies stepdown/feed/speed/coolant parameters |
| Generate toolpaths for operations |
| Post-process to G-code — pass a full |
| List all manufacturing setups |
| List operations in a setup |
| Get operation details (strategy, tool, parameters) |
Code Execution
Tool | Description |
| Run arbitrary Python in Fusion (REPL-style) |
Perception
Tool | Description |
| 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, andidempotentHintso MCP clients can auto-approve safe operationsResources —
fusion360://status,fusion360://design,fusion360://parametersfor passive state inspectionResource templates —
fusion360://body/{name},fusion360://component/{name}for dynamic entity lookupPrompts —
create-box,model-threaded-bolt,sheet-metal-enclosureworkflow templatesStructured errors — failures carry
isError=Trueplus a stableerror_kind(e.g.BODY_NOT_FOUND,TIMEOUT), contextualhints, and a traceback; infrastructure errors (bridge timeout, unknown command) are classified the same way, not flattened to a generic messageMock mode —
--mode mockreturns 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 # lintNotes
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
TIMEOUTerror. Mutation commands are never auto-retried — after a timeout, callget_scene_infoto check whether anything was applied before retrying.Add-in logs to
~/fusion360livemcp.log.Auto-launch (Windows): when the add-in is unreachable on
localhostand 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. SetFUSION360_LIVE_MCP_AUTOLAUNCH=0to disable.The
undotool 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 toolsadd_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 InfoBRead-onlyIdempotent
Get details about a specific operation (strategy, tool, parameters, toolpath status)
Inputs: setup_name (required), operation_name (required).
cam_list_operationsList CAM OperationsARead-onlyIdempotent
List operations within a setup
Inputs: setup_name (required).
cam_list_setupsList CAM SetupsBRead-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 InterferenceARead-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 BodiesARead-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 AllADestructive
Clear the design (delete all timeline items)
Inputs: no named parameters.
delete_bodyDelete BodyADestructive
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 ParameterBDestructive
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 CodeADestructive
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 BoxARead-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 TypeARead-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 InfoBRead-onlyIdempotent
Get detailed info about a named body or sketch. Bounding box in cm.
Inputs: name (required).
get_parametersGet ParametersBRead-onlyIdempotent
List all user parameters in the design
Inputs: no named parameters.
get_physical_propertiesGet Physical PropertiesBRead-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 InfoBRead-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 ComponentsBRead-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 AngleARead-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 DistanceARead-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.
pingPingARead-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 BodyAIdempotent
Rename a body (searches root and all components)
Inputs: new_name (required), body_name (required).
render_viewRender ViewportARead-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 AppearanceBIdempotent
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 ColorAIdempotent
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 TypeAIdempotent
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 ParameterAIdempotent
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
Scored across 92 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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.6MIT
- AlicenseBqualityCmaintenanceConnects 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.85MIT
- AlicenseAqualityCmaintenanceEnables 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.15MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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