fusion360-mcp
Lets Claude Code drive Fusion 360: runs Python inside the live session with the full API available — build geometry, read dimensions, walk the timeline.
result = snapshot()
# doc: bearing.f3d [mm] sketches:7 timeline:16
# bodies: 11
# outer_ring_flanged 173.978 mm3 17x17x4.6 faces:10
# ball x7 2.572 mm3 1.7x1.7x1.7 faces:1
Install
uvx fusion360-mcp install
Installs all three pieces: the add-in inside Fusion, the fusion360-api
skill in ~/.claude/skills/, and the MCP entry in Claude Code.
Then in Fusion: Utilities → ADD-INS → Add-Ins, select "Claude MCP" and press Run. Tick Run on Startup to skip this next time. The add-in has to be running for the bridge to answer.
uvx fusion360-mcp status # what is installed where
uvx fusion360-mcp uninstall # take it back out
Close Fusion before installing — it holds the add-in files open. The installer detects this and tells you rather than corrupting the copy.
Requirements
- Fusion 360 (Windows or macOS), version 2704.1.36 or newer — that is the
oldest build this was verified on. Older ones are untested, not known to be
broken. The API changes between versions:
TimelineObject.deleteObject, for instance, is missing before ~2705, so the bridge falls back toentity.deleteMe()for undo and rollback. Check yours withresult = app.version. - Claude Code
- Python 3.9+
No runtime dependencies: the MCP server speaks JSON-RPC using only the standard library.
How it works
Fusion only accepts API calls on its main thread. The add-in runs an HTTP
server on a background thread and hands each request to the main thread via
a CustomEvent; the HTTP thread blocks until the result comes back.
Claude Code --stdio--> server.py --HTTP:8766--> add-in --> Fusion
Requests carry a bearer token from ~/.claude-fusion-secret, created on
first run. Without it any local process could execute Python in your Fusion
session.
The tool
fusion_eval takes Python source and returns whatever you assign to
result. adsk, app, ui, design and root are pre-bound, plus three
helpers:
snapshot() |
Model state as compact text. Identical bodies collapse into one line, so a 50-instance pattern costs the same as one body. |
screenshot(w, h, view) |
Renders the viewport and returns the image inline. Expensive (~10k tokens) — prefer snapshot() when numbers are what matter. |
undo() |
Reverts the last call that changed the model. One level. A call that raises is rolled back automatically. |
The skill
The package also installs the fusion360-api skill, which documents the
API's traps — internal units in cm and radians, signatures that vary per
feature, material names that follow the UI language. Every section came from
a real mistake.
The skill is the part that compounds. Code gets written once; the traps keep being discovered, and each one someone writes down is a trap nobody after them loses an hour to.
Found a trap? Send it back
If the API surprised you, that's worth a PR. A method whose real name differs from the obvious one, a signature that changes per feature, an operation that fails silently, a value that only works in one unit — that is exactly what belongs in the skill, and it's the kind of thing no documentation lists because it only shows up in practice.
The bar is low on purpose. You don't need to fix anything or write well:
- Two calls are enough — the one that failed and the one that worked.
Paste the real
fusion_evaloutput, including the error message; that's what someone will search for when they hit the same wall. - Say what you were building. Context separates a general trap from a one-off accident, and it's usually the difference between a note that helps and one that confuses.
- One PR per finding. Unrelated findings on separate branches review faster and don't block each other.
- Corrections beat additions. If something in the skill is wrong or went stale, saying so is more valuable than a new section — a skill that describes the tool wrongly is worse than an incomplete one. Put it in the title and it gets reviewed first.
The file is src/fusion360_mcp/skill/SKILL.md; the full rules are at the
top of it. It's written in English so contributors anywhere can maintain it.
Not sure it's worth reporting? Open the PR anyway. Deciding is the maintainer's job, and an unreported trap costs the next person the same hour it cost you.
Contributing code
git clone https://github.com/artapo/fusion360-mcp
cd fusion360-mcp
python test_mcp_server.py # passes whether Fusion is open or closed
The test runs without Fusion installed — it accepts either a live answer or "Cannot reach Fusion". CI runs it on Linux, macOS and Windows.
License
Apache 2.0 — as permissive as MIT, plus an explicit patent grant that protects both users and contributors.
Fusion 360 is a trademark of Autodesk, Inc. This project is not affiliated with or endorsed by Autodesk.
Metadata
Release files for fusion360-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fusion360_mcp-0.1.1.tar.gz | 100.8 kB | With provenance | Details for fusion360_mcp-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fusion360_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for fusion360_mcp-0.1.1-py3-none-any.whl |
Total release size: 198.7 kB
Release files / fusion360_mcp-0.1.1.tar.gz
| Download URL | fusion360_mcp-0.1.1.tar.gz |
|---|---|
| Size | 100.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d118de882a9e4873b094dd29cc5ec46473d991f56614ab8a8ea63ca8e3211d82
|
|
BLAKE2b-256 checksum How to use checksums |
86f7088b783d165b0d1c663d7d73f3eb407b996a818dc6d4efccc3bf14895b85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logRelease files / fusion360_mcp-0.1.1-py3-none-any.whl
| Download URL | fusion360_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 97.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a509fccf3cb1e70fbb2a41f36fb1d7c060dd885052d05228b80007ed886cd05
|
|
BLAKE2b-256 checksum How to use checksums |
30b1a5fa795ab84bbb22892dce0e448d903c123ace30eef0acfd8f71b1be78e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logSecurity for fusion360-mcp 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for fusion360_mcp-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.