Fusion360 MCP Server
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Два компонента:
MCP Server (этот репозиторий) — Python-процесс, который общается с Claude по протоколу MCP и пересылает команды через TCP
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}, всё подключено.
Удаление
Удалите запись
fusion360из конфигурации MCP-клиентаОстановите адд-ин в Fusion (Shift+S → Add-Ins → Fusion360MCP → Stop)
Удалите папку адд-ина из каталога AddIns Fusion
Доступные инструменты (84)
Сцена и запросы
Tool | Description |
| Проверка состояния (мгновенно, без Fusion API) |
| Имя дизайна, тела, эскизы, элементы, камера |
| Подробная информация о теле или эскизе по имени |
| Список всех компонентов в дизайне |
Безопасность типа дизайна
Tool | Description |
| Проверка, находится ли дизайн в параметрическом или прямом режиме |
| Переключение типа дизайна (восстановление параметрического/прямого) |
Эскизы
Tool | Description |
| Новый эскиз на плоскости xy/yz/xz, опциональное смещение |
| Прямоугольник в последнем эскизе |
| Окружность в последнем эскизе |
| Линия в последнем эскизе |
| Дуга (центр + начало + угол) |
| Сплайн с точками фиксации или контрольными точками |
| Правильный многоугольник (от 3 до 64 сторон) |
| Геометрическая связь (совпадение, параллельность, касание и т.д.) |
| Управляющий размер (расстояние, угол, радиус, диаметр) |
| Смещение связанных кривых эскиза |
| Обрезка по точкам пересечения |
| Продление до ближайшего пересечения |
| Проецирование рёбер/тел на плоскость эскиза |
Конструктивные элементы
Tool | Description |
| Выдавливание профиля эскиза |
| Вращение профиля вокруг оси |
| Перемещение профиля вдоль траектории |
| Лофт между двумя и более профилями |
| Скругление рёбер (все/верхние/нижние/вертикальные) |
| Фаска на рёбрах |
| Создание оболочки внутри тела |
| Зеркальное отражение тела через плоскость |
| Операция отверстия на грани тела |
| Прямоугольный массив по строкам и столбцам |
| Круговой массив вокруг оси |
| Добавление резьбы (косметической или смоделированной) |
| Уклон/конусность граней для извлечения из формы |
| Разделение тела с помощью плоскости |
| Разделение граней тела |
| Сдвиг/тяга граней на заданное расстояние |
| Равномерное или неравномерное масштабирование |
| Подавление элемента временной шкалы |
| Возобновление ранее подавленного элемента |
Операции с телами
Tool | Description |
| Перемещение тела по (x, y, z) |
| Переименование тела (ищет в корне и во всех компонентах) |
| Объединение/вырезание/объединение двух тел |
| Очистка дизайна |
| Отмена последней операции (с защитой типа дизайна) |
Прямые примитивы
Tool | Description |
| Куб (через TemporaryBRepManager) |
| Цилиндр |
| Сфера |
| Тор |
Операции с поверхностями
Tool | Description |
| Создание поверхности-заплатки из граничных рёбер |
| Сшивка поверхностных тел в одно |
| Придание толщины поверхности для создания тела |
| Линейчатая поверхность на основе ребра |
| Обрезка поверхности другим телом |
Листовой металл
Tool | Description |
| Фланец на ребре |
| Добавление сгиба |
| Создание плоской развёртки |
| Разгибание отдельных сгибов |
Вспомогательная геометрия
Tool | Description |
| Смещение, угол, серединная плоскость, по 3 точкам, касание |
| По двум точкам, пересечение, ребро, перпендикуляр |
Сборка
Tool | Description |
| Создание компонента подсборки |
| Соединение между двумя компонентами |
| Соединение на основе текущих позиций |
| Фиксация компонентов вместе |
Проверка и анализ
Tool | Description |
| Минимальное расстояние между объектами |
| Угол между объектами |
| Масса, объём, площадь, центр масс |
| Секущая плоскость через модель |
| Обнаружение коллизий между компонентами |
Внешний вид
Tool | Description |
| Назначение материала из библиотеки |
Параметры
Tool | Description |
| Список всех пользовательских параметров |
| Создание нового параметра |
| Обновление значения параметра |
| Удаление параметра |
Экспорт
Tool | Description |
| Экспорт тела в STL (поддерживает тела в компонентах) |
| Экспорт тела в STEP (поддерживает тела в компонентах) |
| Экспорт дизайна в архив Fusion |
CAM / Производство
Tool | Description |
| Создание производственной настройки (фрезерование/точение/резка) |
| Добавление операции обработки (торцевание, контур, адаптивная, сверление и т.д.) |
| Генерация траекторий для операций |
| Постобработка в G-код (fanuc, grbl, haas и т.д.) |
| Список всех производственных настроек |
| Список операций в настройке |
| Сведения об операции (стратегия, инструмент, параметры) |
Выполнение кода
Tool | Description |
| Выполнение произвольного 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 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