Skip to main content
Glama
Fusion360 MCP Server

Fusion360 MCP Server

by forgemorrow

Fusion360 MCP Server

Beta — Проект находится в активной разработке. API и поведение инструментов могут меняться между релизами. Используйте на своё усмотрение. Отзывы и сообщения об ошибках приветствуются через GitHub Issues.

MCP-сервер, который подключает AI-агентов кодирования к Autodesk Fusion 360 для автоматизации CAD.

Протестировано с Claude Code. Работает с любым MCP-совместимым клиентом — OpenCode, Codex, Cursor и всем, что поддерживает Model Context Protocol.

Как это работает

Any MCP Client ←(stdio MCP)→ This Server ←(TCP :9876)→ Fusion360MCP Add-in ←(CustomEvent)→ Fusion Main Thread

Два компонента:

  1. MCP Server (этот репозиторий) — Python-процесс, который общается с Claude по протоколу MCP и пересылает команды через TCP

  2. Fusion360MCP Add-in (устанавливается в папку AddIns Fusion) — запускается внутри Fusion 360, безопасно выполняет вызовы API в главном потоке

Related MCP server: Fusion MCP para Codex

Предварительные требования

  • uv (пакетный менеджер Python)

  • Autodesk Fusion 360

  • MCP-совместимый клиент (Claude Code, OpenCode, Codex, Cursor и т.п.)

Установка

1. Установите адд-ин Fusion 360

Быстрая установка (симлинк для разработки):

./scripts/install-addon.sh

Ручная установка:

# 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"

Затем запустите его в Fusion: Shift+S → Add-Ins → Fusion360MCP → Run

Вы должны увидеть [MCP] Server listening on localhost:9876 в окне TEXT COMMANDS.

2. Подключите MCP-клиент

MCP-сервер опубликован на PyPI — клонировать этот репозиторий не нужно.

Claude Code

claude mcp add fusion360 -- uvx fusion360-mcp-server --mode socket

Другие MCP-клиенты

Сервер работает через stdio, поэтому любой MCP-совместимый клиент может его запустить. Команда выглядит так:

uvx fusion360-mcp-server --mode socket
{
  "mcpServers": {
    "fusion360": {
      "command": "uvx",
      "args": [
        "fusion360-mcp-server",
        "--mode", "socket"
      ]
    }
  }
}

3. Проверка

Вызовите инструмент ping из вашего клиента. Если он вернёт {"pong": true}, всё подключено.

Удаление

  1. Удалите запись fusion360 из конфигурации MCP-клиента

  2. Остановите адд-ин в Fusion (Shift+S → Add-Ins → Fusion360MCP → Stop)

  3. Удалите папку адд-ина из каталога AddIns Fusion

Доступные инструменты (84)

Сцена и запросы

Tool

Description

ping

Проверка состояния (мгновенно, без Fusion API)

get_scene_info

Имя дизайна, тела, эскизы, элементы, камера

get_object_info

Подробная информация о теле или эскизе по имени

list_components

Список всех компонентов в дизайне

Безопасность типа дизайна

Tool

Description

get_design_type

Проверка, находится ли дизайн в параметрическом или прямом режиме

set_design_type

Переключение типа дизайна (восстановление параметрического/прямого)

Эскизы

Tool

Description

create_sketch

Новый эскиз на плоскости xy/yz/xz, опциональное смещение

draw_rectangle

Прямоугольник в последнем эскизе

draw_circle

Окружность в последнем эскизе

draw_line

Линия в последнем эскизе

draw_arc

Дуга (центр + начало + угол)

draw_spline

Сплайн с точками фиксации или контрольными точками

create_polygon

Правильный многоугольник (от 3 до 64 сторон)

add_constraint

Геометрическая связь (совпадение, параллельность, касание и т.д.)

add_dimension

Управляющий размер (расстояние, угол, радиус, диаметр)

offset_curve

Смещение связанных кривых эскиза

trim_curve

Обрезка по точкам пересечения

extend_curve

Продление до ближайшего пересечения

project_geometry

Проецирование рёбер/тел на плоскость эскиза

Конструктивные элементы

Tool

Description

extrude

Выдавливание профиля эскиза

revolve

Вращение профиля вокруг оси

sweep

Перемещение профиля вдоль траектории

loft

Лофт между двумя и более профилями

fillet

Скругление рёбер (все/верхние/нижние/вертикальные)

chamfer

Фаска на рёбрах

shell

Создание оболочки внутри тела

mirror

Зеркальное отражение тела через плоскость

create_hole

Операция отверстия на грани тела

rectangular_pattern

Прямоугольный массив по строкам и столбцам

circular_pattern

Круговой массив вокруг оси

create_thread

Добавление резьбы (косметической или смоделированной)

draft_faces

Уклон/конусность граней для извлечения из формы

split_body

Разделение тела с помощью плоскости

split_face

Разделение граней тела

offset_faces

Сдвиг/тяга граней на заданное расстояние

scale_body

Равномерное или неравномерное масштабирование

suppress_feature

Подавление элемента временной шкалы

unsuppress_feature

Возобновление ранее подавленного элемента

Операции с телами

Tool

Description

move_body

Перемещение тела по (x, y, z)

rename_body

Переименование тела (ищет в корне и во всех компонентах)

boolean_operation

Объединение/вырезание/объединение двух тел

delete_all

Очистка дизайна

undo

Отмена последней операции (с защитой типа дизайна)

Прямые примитивы

Tool

Description

create_box

Куб (через TemporaryBRepManager)

create_cylinder

Цилиндр

create_sphere

Сфера

create_torus

Тор

Операции с поверхностями

Tool

Description

patch_surface

Создание поверхности-заплатки из граничных рёбер

stitch_surfaces

Сшивка поверхностных тел в одно

thicken_surface

Придание толщины поверхности для создания тела

ruled_surface

Линейчатая поверхность на основе ребра

trim_surface

Обрезка поверхности другим телом

Листовой металл

Tool

Description

create_flange

Фланец на ребре

create_bend

Добавление сгиба

flat_pattern

Создание плоской развёртки

unfold

Разгибание отдельных сгибов

Вспомогательная геометрия

Tool

Description

create_construction_plane

Смещение, угол, серединная плоскость, по 3 точкам, касание

create_construction_axis

По двум точкам, пересечение, ребро, перпендикуляр

Сборка

Tool

Description

create_component

Создание компонента подсборки

add_joint

Соединение между двумя компонентами

create_as_built_joint

Соединение на основе текущих позиций

create_rigid_group

Фиксация компонентов вместе

Проверка и анализ

Tool

Description

measure_distance

Минимальное расстояние между объектами

measure_angle

Угол между объектами

get_physical_properties

Масса, объём, площадь, центр масс

create_section_analysis

Секущая плоскость через модель

check_interference

Обнаружение коллизий между компонентами

Внешний вид

Tool

Description

set_appearance

Назначение материала из библиотеки

Параметры

Tool

Description

get_parameters

Список всех пользовательских параметров

create_parameter

Создание нового параметра

set_parameter

Обновление значения параметра

delete_parameter

Удаление параметра

Экспорт

Tool

Description

export_stl

Экспорт тела в STL (поддерживает тела в компонентах)

export_step

Экспорт тела в STEP (поддерживает тела в компонентах)

export_f3d

Экспорт дизайна в архив Fusion

CAM / Производство

Tool

Description

cam_create_setup

Создание производственной настройки (фрезерование/точение/резка)

cam_create_operation

Добавление операции обработки (торцевание, контур, адаптивная, сверление и т.д.)

cam_generate_toolpath

Генерация траекторий для операций

cam_post_process

Постобработка в G-код (fanuc, grbl, haas и т.д.)

cam_list_setups

Список всех производственных настроек

cam_list_operations

Список операций в настройке

cam_get_operation_info

Сведения об операции (стратегия, инструмент, параметры)

Выполнение кода

Tool

Description

execute_code

Выполнение произвольного Python в Fusion (в стиле REPL)

Возможности MCP Protocol

  • Аннотации инструментов — каждый инструмент помечен readOnlyHint, destructiveHint и idempotentHint, чтобы MCP-клиенты могли автоматически одобрять безопасные операции

  • Ресурсы — fusion360://status, fusion360://design, fusion360://parameters для пассивного изучения состояния

  • Шаблоны ресурсов — fusion360://body/{name}, fusion360://component/{name} для динамического поиска объектов

  • Промпты — шаблоны рабочих процессов create-box, model-threaded-bolt, sheet-metal-enclosure

  • Структурированные ошибки — результаты инструментов содержат isError=True, если адд-ин сообщает о сбоях

  • Mock-режим — --mode mock возвращает правдоподобные тестовые данные без запущенного Fusion (все ответы содержат "mode": "mock")

Разработка

uv sync --dev       # install deps
uv run pytest -v    # run tests (171 tests)
uv run ruff check   # lint

Примечания

  • Все единицы измерения в Fusion API — сантиметры (внутренняя единица Fusion).

  • Одна операция на один вызов инструмента. Пакетное выполнение нескольких операций приводит к сбою адд-ина.

  • Команды имеют тайм-аут 30 секунд.

  • Адд-ин пишет логи в ~/fusion360mcp.log.

  • Инструмент undo включает защиту типа дизайна — он проверяет состояние до/после и автоматически выполняет повтор, если отмена может переключить режим с параметрического на прямой.

Благодарности

Вдохновлено BlenderMCP — оттуда происходит архитектура сокетного моста.

Также основано на идеях из существующей экосистемы Fusion 360 MCP:

Лицензия

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