Fusion360 MCP Server
Fusion360 MCP Server
Beta — Este proyecto está en desarrollo activo. Las APIs y el comportamiento de las herramientas pueden cambiar entre versiones. Úsalo bajo tu propio criterio. Se agradecen comentarios e informes de errores a través de GitHub Issues.
Servidor MCP que conecta agentes de codificación de IA a Autodesk Fusion 360 para la automatización de CAD.
Probado, con frecuencia con Claude Code. Funciona con cualquier cliente compatible con MCP: OpenCode, Codex, Cursor o cualquier otro que hable el Model Context Protocol.
Cómo funciona
Any MCP Client ←(stdio MCP)→ This Server ←(TCP :9876)→ Fusion360MCP Add-in ←(CustomEvent)→ Fusion Main ThreadDos componentes:
MCP Server (este repositorio): proceso de Python que habla el protocolo MCP con Claude y reenvía comandos a través de TCP.
Fusion360MCP Add-in (instalado en la carpeta AddIns de Fusion): se ejecuta dentro de Fusion 360, ejecuta llamadas a la API de forma segura en el hilo principal.
Related MCP server: Fusion MCP para Codex
Requisitos previos
uv (gestor de paquetes de Python)
Autodesk Fusion 360
Un cliente compatible con MCP (Claude Code, OpenCode, Codex, Cursor, etc.)
Instalación
1. Instala el complemento de Fusion 360
Instalación rápida (enlace simbólico para desarrollo):
./scripts/install-addon.shInstalación manual:
# 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"Después, inicia Fuchsias: Shift+S → Add-Ins → Fusion360MCP → Run.
Deberías ver [MCP] Server listening on localhost:9876 en la ventana TEXT COMMANDS.
2. Conecta tu cliente MCP
El servidor MCP está publicado en PyPI: no necesitas clonar este repositorio.
Claude Code
claude mcp add fusion360 -- uvx fusion360-mcp-server --mode socketOtros clientes MCP
El servidor se ejecuta a través de stdio, por lo que cualquier cliente compatible con MCP puede lanzarlo. El comando es:
uvx fusion360-mcp-server --mode socket{
"mcpServers": {
"fusion360": {
"command": "uvx",
"args": [
"fusion360-mcp-server",
"--mode", "socket"
]
}
}
}3. Verificación
Llama a la herramienta ping desde tu cliente. Si devuelve {"pong": true}, todo está conectado.
Desinstalación
Elimina la entrada
fusion360de la configuración de tu cliente MCP.Detén el complemento en Fusion (Shift+S → Add-Ins → Fusion360MCP → Stop).
Elimina la carpeta del complemento del directorio AddIns de Fusion.
Herramientas disponibles (8)
Escena y consulta
Tool | Description |
| Comprobación de estado (instantánea, sin API de Fusion) |
| Nombre del diseño, cuerpos, croquis, funciones y cámara |
| Información detallada de un cuerpo o croquis concreto |
| Lista todos los componentes del diseño |
Seguridad del tipo de diseño
Tool | Description |
| Comprueba si el diseño está en modo paramétrico o directo |
| Cambia el tipo de diseño (paramétrico/directo con recuperación) |
Croquis
Tool | Description |
| Nuevo croquis en el plano xy/yz/xz, con desplazamiento opcional |
| Rectángulo en el croquis más reciente |
| Círculo en el croquis más reciente |
| Línea en el croquis más reciente |
| Arco (centro + inicio + ángulo de barrido) |
| Spline de puntos de ajuste o de puntos de control |
| Polígono regular (de 3 a 64 lados) |
| Restricción geométrica (coincidente, paralela, tangente, etc.) |
| Acotación controladora (distancia, ángulo, radial, diámetro) |
| Desplaza curvas de croquis conectadas |
| Recorta en las intersecciones |
| Extiende hasta la intersección más cercana |
| Proyecta aristas/cuerpos sobre el plano de croquis |
Funciones
Tool | Description |
| Extruye un perfil de croquis |
| Gira un perfil alrededor de un eje |
| Barre un perfil a lo largo de una trayectoria |
| Crea un loft entre dos o más perfiles |
| Redondea aristas (todas/superiores/inferiores/verticales) |
| Achaflana aristas |
| Vacía un cuerpo |
| Refleja un cuerpo respecto a un plano |
| Crea una función de agujero en una cara de un cuerpo |
| Patrón en filas y columnas |
| Patrón alrededor de un eje |
| Añade roscas (cosméticas o modeladas) |
| Crea ángulo de desmoldeo en las caras para eldesmoldeo |
| Divide un cuerpo usando un plano |
| Divide caras de un cuerpo |
| Empuja/tira de las caras una distancia |
| Escala de forma uniforme o no uniforme |
| Suprime una función de la línea de tiempo |
| Reactiva una función suprimida |
Operaciones con cuerpos
Tool | Description |
| Mueve un cuerpo según (x, y, z) |
| Renombra un cuerpo (busca en la raíz y todos los componentes) |
| Une, corta o interseciza dos cuerpos |
| Borra todo el diseño |
| Deshace la última operación (con protección para el tipo de diseño) |
Primitivas directas
Tool | Description |
| Caja (mediante TemporaryBRepManager) |
| Cilindro |
| Esfera |
| Toroide |
Operaciones de superficie
Tool | Description |
| Crea una superficie de parche a partir de aristas de contorno |
| Cose cuerpos de superficie en uno |
| Da espesor a una superficie para convertirla en sólido |
| Superficie reglada a partir de una arista |
| Recorta una superficie con otro cuerpo |
Chapa metálica
Tool | Description |
| Crea una pestaña en una arista |
| Añade un plegado |
| Crea el patrón plano |
| Despliega plegados concretos |
Geometría de construcción
Tool | Description |
| Desplazamiento, ángulo, plano medio, 3 puntos, tangente |
| Dos puntos, intersección, arista, perpendicular |
Ensamblaje
Tool | Description |
| Crea un componente de subensamblaje |
| Unión entre dos componentes |
| Unión a partir de las posiciones actuales |
| Bloquea los componentes entre sí |
Inspección y análisis
Tool | Description |
| Distancia mínima entre entidades |
| Ángulo entre entidades |
| Masa, volumen, área, centro de masa |
| Plano de sección a través del modelo |
| Detecta colisiones entre componentes |
Apariencia
Tool | Description |
| Asigna una apariencia de material desde la biblioteca |
Parámetros
Tool | Description |
| Lista todos los parámetros de usuario |
| Crea un nuevo parámetro |
| Actualiza el valor de un parámetro |
| Elimina un parámetro |
Exportación
Tool | Description |
| Exporta un cuerpo como STL (admite cuerpos dentro de componentes) |
| Exporta un cuerpo como STEP (admite cuerpos dentro de componentes) |
| Exporta el diseño como archivo de Fusion |
CAM / Fabricación
Tool | Description |
| Crea una configuración de fabricación (fresado, torneado, corte) |
| Añade una operación de mecanizado (planeado, contorneado, adaptativo, taladrado, etc.) |
| Genera trayectorias de herramienta para las operaciones |
| Postprocesa a G-code (fanuc, grbl, haas, etc.) |
| Lista todas las configuraciones de fabricación |
| Lista las operaciones de una configuración |
| Obtiene detalles de la operación (estrategia, herramienta, parámetros) |
Ejecución de código
Tool | Description |
| Ejecuta código Python arbitrario en Fusion (estilo REPL) |
Características del protocolo MCP
Anotaciones de herramientas — cada herramienta está etiquetada con
readOnlyHint,destructiveHinteidempotentHintpara que los clientes MCP puedan aprobar automáticamente las operaciones seguras.Recursos —
fusion360://status,fusion360://design,fusion360://parameterspara inspección pasiva del estado.Plantillas de recursos —
fusion360://body/{name},fusion360://component/{name}para búsqueda dinámica de entidades.Prompts — plantillas de flujos de trabajo
create-box,model-threaded-bolt,sheet-metal-enclosure.Errores estructurados — los resultados de las herramientas incluyen
isError=Truecuando el complemento notifica errores.Modo mock —
--mode mockdevuelve datos de prueba plausibles sin que Fusion esté en ejecución (todas las respuestas incluyen"mode": "mock").
Desarrollo
uv sync --dev # install deps
uv run pytest -v # run tests (171 tests)
uv run ruff check # lintNotas
Todas las unidades de la API de Fusion son centímetros (unidad interna de Fusion).
Una operación por llamada. Procesar varias operaciones juntas tumba el complemento.
Los comandos expiran a los 30 segundos.
El complemento registra en
~/fusion360mcp.log.La herramienta
undoincluye una protección para el tipo de diseño: comprueba antes y después, y reprimeratiza automáticamente si el deshacer pasara del modo paramétrico al directo.
Agradecimientos
Inspirado en BlenderMCP; la arquitectura de puente de socket se originó allí.
También se basa en ideas del ecosistema MCP de Fusion 360 existente:
Licencia
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