Fusion 360 MCP
# Fusion 360 MCP
Host-local MCP bridge for Autodesk Fusion, maintained for the [agentic product-development workspace](https://github.com/nvsdef/fusion-product-development).
**Experimental prerelease.** This is a derivative of [Faust Machines' MIT-licensed server](https://github.com/faust-machines/fusion360-mcp-server), not an Autodesk product. It adds raytraced rendering and experimental native drawing automation. The agent writes geometry through `execute_code`; this server contains no SLAB build script.
## Requirements
- Windows desktop with Autodesk Fusion installed, licensed, signed in, and usable interactively.
- Python 3.11+, Git, and [uv](https://docs.astral.sh/uv/getting-started/installation/).
- A local MCP client (Hermes or another client with stdio support).
- Network access for dependencies, Autodesk cloud saves, and optional API documentation lookup.
## Install
From PowerShell, after reviewing the scripts:
```powershell
git clone https://github.com/nvsdef/fusion360-mcp.git
cd fusion360-mcp
.\setup.ps1
```
Setup uses `uv sync --frozen`, negotiates MCP over stdio, and installs the add-in. **Close Fusion before installation.** An existing different add-in is preserved: setup refuses to replace it unless you pass `-Replace`, which retains a sibling backup. No administrator access, firewall change, or global Python package installation is needed. Do not move the checkout after registering its interpreter path.
Then open Fusion: **Utilities > Scripts and Add-Ins > Add-Ins > Fusion360MCP > Run**. Enable **Run on Startup**, then close the dialog. Autodesk login and this first activation are human steps, not silently automated.
For an isolated install test without touching Fusion's installed add-in:
```powershell
.\setup.ps1 -Target "$env:TEMP\fusion-mcp-test\Fusion360MCP"
```
## Connect your client
Setup prints an absolute-path configuration file (`mcp-client.json`, ignored by Git). The equivalent MCP entry is:
```json
{"mcpServers":{"fusion360":{"command":"C:/path/to/fusion360-mcp/.venv/Scripts/python.exe","args":["-m","fusion360_mcp","--mode","socket"],"env":{"FUSION_MCP_HOST":"127.0.0.1","FUSION_MCP_PORT":"9876"}}}}
```
For Hermes use its MCP setup/consent UI or `hermes mcp add fusion360 --command <python-path> --args -m fusion360_mcp --mode socket`. Select these tools for the product workflow: `ping`, `get_design_type`, `execute_code`, `render_view`, `start_render`, `get_render_status`, `set_scene_environment`, `create_drawing`. Keep GUI calls serialized and set the client tool timeout to **360 seconds**. The connection waits 330 seconds; the add-in bridge waits 300 seconds. Never retry an uncertain mutation automatically.
## Verify
```powershell
uv run python scripts/smoke.py # MCP protocol/schema test, explicitly mock
uv run python scripts/smoke.py --live # ping + read-only main-thread scene query
uv run pytest -q
```
The mock test produces no CAD/render artifacts and does not prove live Fusion readiness. The live probe may fail when a Drawing is active: select a Design document first.
## Render and drawing extensions
- `start_render`: defaults to `view='current', fit=False`; preserves deliberate camera framing. Specify an absolute output filename. Poll the returned job ID.
- `get_render_status`: state, path, bytes; elapsed time is submission age, not precise render duration. Jobs die with Fusion. Verify the image file after completion.
- `set_scene_environment`: reports applied and unsupported properties. Do not mistake a wrapper limitation for a missing Fusion capability.
- `create_drawing`: **experimental Autodesk preview API**, cloud-saved Design required. Defaults ISO/A3ISO/no center marks. Can time out while completing. Run it last; independently inspect the native sheets. API availability and Autodesk preview terms must be reviewed before production use.
- `fetch_api_doc`: official Autodesk documentation lookup.
- `export_drawing_pdf` is deliberately not exposed or included: the tested implementation opened a blocking modal.
## Safety and provenance
Read [SECURITY.md](SECURITY.md) and [PROVENANCE.md](PROVENANCE.md). Arbitrary Python runs as your logged-in user inside Fusion. Any local process can reach the unauthenticated add-in socket; never expose it beyond loopback. Save work and use a disposable demo document.
The extension's predecessor completed a SLAB rehearsal on Fusion 2705.1.11. This release combines that extension with newer upstream code. Automated tests do **not** establish that this exact combination works on every Fusion release or clean machine. No production-readiness or zero-error guarantee is made.
## Development
`uv sync --frozen`, `uv run ruff check src/ tests/`, `uv run pytest -q`, `uv build`. Dependencies are locked; upgrade intentionally and rerun tests. The add-in must be installed from the same checkout as the client. Changes do not hot-reload an already running Fusion process. The upstream history and MIT copyright notice are retained.
TDQS
Scored across 98 tools
Most tools target distinct operations, but several clusters overlap: export vs export_stl/step/f3d, set_appearance vs set_color, split_body vs split_face, render_view vs start_render vs export_view_sheet, and get_scene_info vs get_object_info vs list_components. The individual descriptions clarify boundaries, but with 98 tools an agent faces real misselection risk between these near-neighbors.
The surface is predominantly snake_case verb_noun (create_sketch, get_parameters, set_parameter) with a well-executed cam_ prefix group. Deviations include bare-verb modeling commands (extrude, fillet, sweep, loft), noun-style oddballs (boolean_operation, flat_pattern), and create_polygon breaking the draw_* sketch convention. Largely predictable, but not uniform.
At 98 tools, this nearly doubles the rubric's 50+ threshold for extreme mismatch. While Fusion 360 is a genuinely broad CAD/CAM domain, the surface could be consolidated substantially (e.g., one create_primitive with a type parameter, export as the sole export entry point, fewer measurement tools), making the count far more than an agent can effectively navigate.
Coverage is impressively broad across sketching, solid and surface modeling, sheet metal, CAM, rendering, parameters, measurement, and import/export. Minor gaps exist: no save/open/new document management, no individual body or feature deletion (only delete_all), no mesh-to-solid conversion, and drawing automation is experimental. Core design-to-manufacture workflows are fully covered.