Skip to main content
Glama
Fusion360 MCP Server

Fusion360 MCP Server

by forgemorrow

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 Thread

Dos componentes:

  1. MCP Server (este repositorio): proceso de Python que habla el protocolo MCP con Claude y reenvía comandos a través de TCP.

  2. 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.sh

Instalació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 socket

Otros 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

  1. Elimina la entrada fusion360 de la configuración de tu cliente MCP.

  2. Detén el complemento en Fusion (Shift+S → Add-Ins → Fusion360MCP → Stop).

  3. Elimina la carpeta del complemento del directorio AddIns de Fusion.

Herramientas disponibles (8)

Escena y consulta

Tool

Description

ping

Comprobación de estado (instantánea, sin API de Fusion)

get_scene_info

Nombre del diseño, cuerpos, croquis, funciones y cámara

get_object_info

Información detallada de un cuerpo o croquis concreto

list_components

Lista todos los componentes del diseño

Seguridad del tipo de diseño

Tool

Description

get_design_type

Comprueba si el diseño está en modo paramétrico o directo

set_design_type

Cambia el tipo de diseño (paramétrico/directo con recuperación)

Croquis

Tool

Description

create_sketch

Nuevo croquis en el plano xy/yz/xz, con desplazamiento opcional

draw_rectangle

Rectángulo en el croquis más reciente

draw_circle

Círculo en el croquis más reciente

draw_line

Línea en el croquis más reciente

draw_arc

Arco (centro + inicio + ángulo de barrido)

draw_spline

Spline de puntos de ajuste o de puntos de control

create_polygon

Polígono regular (de 3 a 64 lados)

add_constraint

Restricción geométrica (coincidente, paralela, tangente, etc.)

add_dimension

Acotación controladora (distancia, ángulo, radial, diámetro)

offset_curve

Desplaza curvas de croquis conectadas

trim_curve

Recorta en las intersecciones

extend_curve

Extiende hasta la intersección más cercana

project_geometry

Proyecta aristas/cuerpos sobre el plano de croquis

Funciones

Tool

Description

extrude

Extruye un perfil de croquis

revolve

Gira un perfil alrededor de un eje

sweep

Barre un perfil a lo largo de una trayectoria

loft

Crea un loft entre dos o más perfiles

fillet

Redondea aristas (todas/superiores/inferiores/verticales)

chamfer

Achaflana aristas

shell

Vacía un cuerpo

mirror

Refleja un cuerpo respecto a un plano

create_hole

Crea una función de agujero en una cara de un cuerpo

rectangular_pattern

Patrón en filas y columnas

circular_pattern

Patrón alrededor de un eje

create_thread

Añade roscas (cosméticas o modeladas)

draft_faces

Crea ángulo de desmoldeo en las caras para eldesmoldeo

split_body

Divide un cuerpo usando un plano

split_face

Divide caras de un cuerpo

offset_faces

Empuja/tira de las caras una distancia

scale_body

Escala de forma uniforme o no uniforme

suppress_feature

Suprime una función de la línea de tiempo

unsuppress_feature

Reactiva una función suprimida

Operaciones con cuerpos

Tool

Description

move_body

Mueve un cuerpo según (x, y, z)

rename_body

Renombra un cuerpo (busca en la raíz y todos los componentes)

boolean_operation

Une, corta o interseciza dos cuerpos

delete_all

Borra todo el diseño

undo

Deshace la última operación (con protección para el tipo de diseño)

Primitivas directas

Tool

Description

create_box

Caja (mediante TemporaryBRepManager)

create_cylinder

Cilindro

create_sphere

Esfera

create_torus

Toroide

Operaciones de superficie

Tool

Description

patch_surface

Crea una superficie de parche a partir de aristas de contorno

stitch_surfaces

Cose cuerpos de superficie en uno

thicken_surface

Da espesor a una superficie para convertirla en sólido

ruled_surface

Superficie reglada a partir de una arista

trim_surface

Recorta una superficie con otro cuerpo

Chapa metálica

Tool

Description

create_flange

Crea una pestaña en una arista

create_bend

Añade un plegado

flat_pattern

Crea el patrón plano

unfold

Despliega plegados concretos

Geometría de construcción

Tool

Description

create_construction_plane

Desplazamiento, ángulo, plano medio, 3 puntos, tangente

create_construction_axis

Dos puntos, intersección, arista, perpendicular

Ensamblaje

Tool

Description

create_component

Crea un componente de subensamblaje

add_joint

Unión entre dos componentes

create_as_built_joint

Unión a partir de las posiciones actuales

create_rigid_group

Bloquea los componentes entre sí

Inspección y análisis

Tool

Description

measure_distance

Distancia mínima entre entidades

measure_angle

Ángulo entre entidades

get_physical_properties

Masa, volumen, área, centro de masa

create_section_analysis

Plano de sección a través del modelo

check_interference

Detecta colisiones entre componentes

Apariencia

Tool

Description

set_appearance

Asigna una apariencia de material desde la biblioteca

Parámetros

Tool

Description

get_parameters

Lista todos los parámetros de usuario

create_parameter

Crea un nuevo parámetro

set_parameter

Actualiza el valor de un parámetro

delete_parameter

Elimina un parámetro

Exportación

Tool

Description

export_stl

Exporta un cuerpo como STL (admite cuerpos dentro de componentes)

export_step

Exporta un cuerpo como STEP (admite cuerpos dentro de componentes)

export_f3d

Exporta el diseño como archivo de Fusion

CAM / Fabricación

Tool

Description

cam_create_setup

Crea una configuración de fabricación (fresado, torneado, corte)

cam_create_operation

Añade una operación de mecanizado (planeado, contorneado, adaptativo, taladrado, etc.)

cam_generate_toolpath

Genera trayectorias de herramienta para las operaciones

cam_post_process

Postprocesa a G-code (fanuc, grbl, haas, etc.)

cam_list_setups

Lista todas las configuraciones de fabricación

cam_list_operations

Lista las operaciones de una configuración

cam_get_operation_info

Obtiene detalles de la operación (estrategia, herramienta, parámetros)

Ejecución de código

Tool

Description

execute_code

Ejecuta código Python arbitrario en Fusion (estilo REPL)

Características del protocolo MCP

  • Anotaciones de herramientas — cada herramienta está etiquetada con readOnlyHint, destructiveHint e idempotentHint para que los clientes MCP puedan aprobar automáticamente las operaciones seguras.

  • Recursos — fusion360://status, fusion360://design, fusion360://parameters para 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=True cuando el complemento notifica errores.

  • Modo mock — --mode mock devuelve 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   # lint

Notas

  • 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 undo incluye 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 tools
add_constraintAdd Sketch ConstraintB

Add a geometric constraint in the active sketch. Entities are referenced by index within the sketch.

Inputs: constraint_type (required), entity_one, entity_two, sketch_name, +1 more.

add_dimensionAdd Sketch DimensionB

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

Inputs: value (required), dimension_type (required), entity_one, entity_two, +1 more.

add_jointAdd JointB

Add a joint between two components

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

boolean_operationBoolean OperationB

Combine two named bodies (join/cut/intersect)

Inputs: tool_body (required), target_body (required), operation.

cam_create_operationCreate CAM OperationB

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

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

cam_create_setupCreate CAM SetupB

Create a manufacturing setup for a body. Defines the stock, coordinate system, and operation type (milling/turning/cutting).

Inputs: body_name (required), name, stock_mode, operation_type, +3 more.

cam_generate_toolpathGenerate ToolpathB

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

Inputs: setup_name, generate_all, operation_name.

cam_get_operation_infoGet CAM Operation InfoB
Read-onlyIdempotent

Get details about a specific operation (strategy, tool, parameters, toolpath status)

Inputs: setup_name (required), operation_name (required).

cam_list_operationsList CAM OperationsA
Read-onlyIdempotent

List operations within a setup

Inputs: setup_name (required).

cam_list_setupsList CAM SetupsB
Read-onlyIdempotent

List all manufacturing setups in the document

Inputs: no named parameters.

cam_post_processPost ProcessB

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

Inputs: setup_name (required), output_units, output_folder, operation_name, +1 more.

chamferChamfer EdgesC

Chamfer edges of a body

Inputs: distance (required), body_name, body_index, edge_selection.

check_interferenceCheck InterferenceB
Read-onlyIdempotent

Detect collisions between components/bodies

Inputs: component_names (required), include_coincident_faces.

circular_patternCircular PatternC

Pattern a body around an axis

Inputs: count (required), body_name (required), axis, total_angle.

create_as_built_jointCreate As-Built JointC

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

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

create_bendCreate BendB

Add a bend to a sheet metal body

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

create_boxCreate BoxC

Create a box primitive (non-parametric via TemporaryBRepManager)

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

create_componentCreate ComponentB

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

Inputs: name (required), parent_name.

create_construction_axisCreate Construction AxisC

Create a construction axis

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

create_construction_planeCreate Construction PlaneB

Create a construction plane for sketching

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

create_cylinderCreate CylinderC

Create a cylinder primitive (non-parametric via TemporaryBRepManager)

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

create_flangeCreate FlangeA

Create a sheet metal flange on an edge

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

create_holeCreate HoleB

Create a hole feature on a body face

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

create_parameterCreate ParameterB

Create a new user parameter

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

create_polygonCreate PolygonB

Draw a regular polygon in the most recent sketch

Inputs: sides (required), radius (required), center_x, center_y, +1 more.

create_rigid_groupCreate Rigid GroupB

Lock multiple components together

Inputs: component_names (required), include_children.

create_section_analysisCreate Section AnalysisB

Cut a section plane through the model

Inputs: plane, offset.

create_sketchCreate SketchB

Create a new sketch on xy/yz/xz plane, optionally offset

Inputs: plane, z_offset.

create_sphereCreate SphereB

Create a sphere primitive (non-parametric via TemporaryBRepManager)

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

create_threadCreate ThreadA

Add threads to a cylindrical face (cosmetic or modeled)

Inputs: body_name (required), face_index (required), is_modeled, is_internal, +5 more.

create_torusCreate TorusB

Create a torus primitive (non-parametric via TemporaryBRepManager)

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

delete_allDelete AllA
Destructive

Clear the design (delete all timeline items)

Inputs: no named parameters.

delete_parameterDelete ParameterB
Destructive

Remove a user parameter

Inputs: name (required).

draft_facesDraft / Taper FacesB

Add a draft angle to faces of a body (for mold release / injection molding)

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

draw_arcDraw ArcB

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

Inputs: start_x (required), start_y (required), center_x (required), center_y (required), +3 more.

draw_circleDraw CircleB

Draw a circle in the most recent sketch

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

draw_lineDraw LineB

Draw a line in the most recent sketch

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

draw_rectangleDraw RectangleA

Draw a rectangle in the most recent sketch

Inputs: width (required), height (required), origin_x, origin_y, +1 more.

draw_splineDraw SplineA

Draw a spline in the most recent sketch. Use fit_points for a curve through points, or control_points for a control-polygon spline.

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

execute_codeExecute CodeA

Run arbitrary Python in Fusion 360. The last expression's value is returned (REPL-style). Pre-defined names: app, ui, design, component, adsk, math.

Inputs: code (required).

export_f3dExport F3DA

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

Inputs: file_path.

export_stepExport STEPB

Export a body or component as a STEP file

Inputs: body_name (required), file_path.

export_stlExport STLB

Export a named body as an STL file

Inputs: body_name (required), file_path.

export_view_sheetExport View SheetA

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

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

extend_curveExtend CurveA

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

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

extrudeExtrudeC

Extrude a sketch profile

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

filletFillet EdgesB

Round edges of a body

Inputs: radius (required), body_name, body_index, edge_selection.

flat_patternFlat PatternB

Create a flat pattern from a sheet metal body

Inputs: body_name (required).

get_design_typeGet Design TypeA
Read-onlyIdempotent

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

Inputs: no named parameters.

get_object_infoGet Object InfoB
Read-onlyIdempotent

Get detailed info about a named body or sketch

Inputs: name (required).

get_parametersGet ParametersB
Read-onlyIdempotent

List all user parameters in the design

Inputs: no named parameters.

get_physical_propertiesGet Physical PropertiesB
Read-onlyIdempotent

Get mass, volume, surface area, center of mass, and density of a body

Inputs: body_name (required), accuracy.

get_scene_infoGet Scene InfoB
Read-onlyIdempotent

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

Inputs: no named parameters.

list_componentsList ComponentsB
Read-onlyIdempotent

List all components in the design

Inputs: no named parameters.

loftLoftB

Loft between two or more sketch profiles

Inputs: profile_sketch_names (required), operation.

measure_angleMeasure AngleB
Read-onlyIdempotent

Measure angle between two entities

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

measure_distanceMeasure DistanceB
Read-onlyIdempotent

Measure minimum distance between two entities

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

mirrorMirror BodyB

Mirror a body across a construction plane

Inputs: mirror_plane (required), body_name, body_index.

move_bodyMove BodyB

Translate a named body by (x, y, z)

Inputs: body_name (required), x, y, z.

offset_curveOffset CurveB

Offset connected sketch curves by a distance. Direction is determined by the direction_point.

Inputs: curve_index (required), offset_distance (required), direction_x, direction_y, +1 more.

offset_facesOffset FacesB

Push/pull faces of a body by a distance

Inputs: distance (required), body_name (required), face_indices, face_selection.

patch_surfacePatch SurfaceB

Create a patch surface from boundary edges

Inputs: sketch_name (required), continuity, profile_index.

pingPingA
Read-onlyIdempotent

Health check — returns immediately without touching Fusion API

Inputs: no named parameters.

project_geometryProject GeometryB

Project edges or bodies onto the active sketch plane

Inputs: source_name (required), is_linked, sketch_name.

rectangular_patternRectangular PatternB

Pattern a body in rows and columns

Inputs: body_name (required), x_count, y_count, x_spacing, +1 more.

rename_bodyRename BodyA
Idempotent

Rename a body (searches root and all components)

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

render_viewRender ViewportA
Read-onlyIdempotent

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

Inputs: fit, view, width, height.

revolveRevolveB

Revolve a sketch profile around an axis

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

ruled_surfaceRuled SurfaceB

Create a ruled surface from an edge or sketch curve

Inputs: body_name (required), edge_index (required), distance, rule_type.

scale_bodyScale BodyB

Scale a body uniformly or non-uniformly

Inputs: scale (required), body_name (required), scale_x, scale_y, +4 more.

set_appearanceSet AppearanceB
Idempotent

Assign a material appearance to a body, face, or component from the Fusion appearance library

Inputs: target_name (required), appearance_name (required), face_index, target_type.

set_design_typeSet Design TypeA
Idempotent

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

Inputs: design_type (required).

set_parameterSet ParameterB
Idempotent

Update the value of an existing user parameter

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

shellShell BodyB

Hollow out a body by removing a face

Inputs: thickness (required), body_name, body_index, face_selection.

split_bodySplit BodyB

Split a body using a plane or face

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

split_faceSplit FaceB

Split faces of a body using a plane

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

stitch_surfacesStitch SurfacesB

Stitch surface bodies into a single body

Inputs: body_names (required), tolerance.

suppress_featureSuppress FeatureB

Suppress (disable) a feature in the timeline

Inputs: feature_name (required).

sweepSweepB

Sweep a sketch profile along a path (sketch curve)

Inputs: profile_index (required), path_sketch_name (required), operation, path_curve_index.

thicken_surfaceThicken SurfaceB

Thicken a surface body into a solid

Inputs: body_name (required), thickness (required), direction.

trim_curveTrim CurveA

Trim a sketch curve at its intersections. The segment nearest to the given point is removed.

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

trim_surfaceTrim SurfaceB

Trim a surface body with another body

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

undoUndoB

Undo the last operation

Inputs: no named parameters.

unfoldUnfoldB

Unfold specific bends in a sheet metal body

Inputs: body_name (required), bend_indices.

unsuppress_featureUnsuppress FeatureB

Unsuppress (re-enable) a feature in the timeline

Inputs: feature_name (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 85 tools

    Disambiguation4/5

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

    Naming Consistency4/5

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

    Tool Count1/5

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

    Completeness5/5

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

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

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