Fusion360 MCP Server
Provides tools for interacting with Autodesk Fusion 360, enabling CAD automation through sketching, 3D modeling, body operations, assemblies, sheet metal, inspection, parameters, and CAM/manufacturing.
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 MCP Server Create a 50mm circle and extrude it 10mm"
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 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 ThreadTwo components:
MCP Server (this repo) — Python process that speaks MCP protocol to Claude and forwards commands over TCP
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.shManual 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 socketOther 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
Remove the
fusion360entry from your MCP client configStop the add-in in Fusion (Shift+S → Add-Ins → Fusion360MCP → Stop)
Delete the add-in folder from Fusion's AddIns directory
Available Tools (84)
Scene & Query
Tool | Description |
| Health check (instant, no Fusion API) |
| Design name, bodies, sketches, features, camera |
| Detailed info about a named body or sketch |
| 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.) |
| 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 |
| Clear the design |
| Undo last operation (with design-type safety guard) |
Direct Primitives
Tool | Description |
| Box (via TemporaryBRepManager) |
| Cylinder |
| Sphere |
| Torus |
Surface Operations
Tool | Description |
| Create a patch surface from boundary edges |
| Stitch surface bodies into one |
| Thicken a surface into a solid |
| Ruled surface from an edge |
| Trim a surface with another body |
Sheet Metal
Tool | Description |
| Create a flange on an edge |
| Add a bend |
| Create flat pattern |
| Unfold specific bends |
Construction Geometry
Tool | Description |
| Offset, angle, midplane, 3-point, tangent |
| Two-point, intersection, edge, perpendicular |
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 |
Appearance
Tool | Description |
| Assign material appearance from library |
Parameters
Tool | Description |
| List all user parameters |
| Create a new parameter |
| Update a parameter value |
| Remove a parameter |
Export
Tool | Description |
| Export body as STL (supports bodies inside components) |
| Export body as STEP (supports bodies inside components) |
| Export design as Fusion archive |
CAM / Manufacturing
Tool | Description |
| Create a manufacturing setup (milling/turning/cutting) |
| Add a machining operation (face, contour, adaptive, drilling, etc.) |
| Generate toolpaths for operations |
| Post-process to G-code (fanuc, grbl, haas, etc.) |
| 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) |
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 — tool results include
isError=Truewhen the add-in reports failuresMock 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 (171 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.
Commands time out after 30 seconds.
Add-in logs to
~/fusion360mcp.log.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.
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 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.
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 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 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 InterferenceBRead-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 AllADestructive
Clear the design (delete all timeline items)
Inputs: no named parameters.
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)
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 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
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
Inputs: body_name (required), accuracy.
get_scene_infoGet Scene InfoBRead-onlyIdempotent
Get design name, bodies, sketches, features, camera info
Inputs: no named parameters.
list_componentsList ComponentsBRead-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 AngleBRead-onlyIdempotent
Measure angle between two entities
Inputs: entity_one (required), entity_two (required).
measure_distanceMeasure DistanceBRead-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.
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 PatternB
Pattern a body in rows and columns
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
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 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_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 ParameterBIdempotent
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
Scored across 85 tools
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.
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.
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.
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
Related MCP Connectors
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseBqualityCmaintenanceConnects 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.80483 PyPI147MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to inspect and automate Autodesk Fusion 360 through MCP, providing tools for CAD modeling, CAM manufacturing, and document management.-
- AlicenseNot gradedqualityDmaintenanceAn 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
- AlicenseCqualityCmaintenanceEnables MCP-compatible assistants to control Autodesk Fusion for mechanical modeling, assembly editing, CAM workflows, inspection, and model export through Fusion's native MCP endpoint.391MIT