fusion360-mcp-server
The fusion360-mcp-server is a Python-based server designed to automate the functionalities of Fusion 360 and streamline workflows. This tool assists in managing CAD data and automating projects, enabling users to work more efficiently. It is particularly enhanced with features that allow integration with other applications through APIs.
GitHub Stars
37
User Rating
Not Rated
Favorites
0
Views
20
Forks
13
Issues
0
Fusion 360 MCP Server
A Model Context Protocol (MCP) server that interfaces between Cline and Autodesk Fusion 360. This server exposes Fusion 360 toolbar-level commands as callable tools that map directly to Fusion's API.
๐ง Overview
This project allows Cline to:
- Parse natural language prompts (e.g., "Make a box with rounded corners")
- Resolve them into Fusion tool actions (e.g., CreateSketch โ DrawRectangle โ Extrude โ Fillet)
- Call those tools through this MCP server
- Return Python scripts that can be executed in Fusion 360
๐ ๏ธ Installation
Prerequisites
- Python 3.9 or higher
- Autodesk Fusion 360
Setup
Clone this repository:
git clone https://github.com/yourusername/fusion360-mcp-server.git cd fusion360-mcp-serverInstall dependencies:
pip install -r requirements.txt
๐ Usage
Running the HTTP Server
cd src
python main.py
This will start the FastAPI server at http://127.0.0.1:8000.
Running as an MCP Server
cd src
python main.py --mcp
This will start the server in MCP mode, reading from stdin and writing to stdout.
API Endpoints
GET /: Check if the server is runningGET /tools: List all available toolsPOST /call_tool: Call a single tool and generate a scriptPOST /call_tools: Call multiple tools in sequence and generate a script
Example API Calls
List Tools
curl -X GET http://127.0.0.1:8000/tools
Call a Single Tool
curl -X POST http://127.0.0.1:8000/call_tool \
-H "Content-Type: application/json" \
-d '{
"tool_name": "CreateSketch",
"parameters": {
"plane": "xy"
}
}'
Call Multiple Tools
curl -X POST http://127.0.0.1:8000/call_tools \
-H "Content-Type: application/json" \
-d '{
"tool_calls": [
{
"tool_name": "CreateSketch",
"parameters": {
"plane": "xy"
}
},
{
"tool_name": "DrawRectangle",
"parameters": {
"width": 10,
"depth": 10
}
},
{
"tool_name": "Extrude",
"parameters": {
"height": 5
}
}
]
}'
๐ฆ Available Tools
The server currently supports the following Fusion 360 tools:
Create
- CreateSketch: Creates a new sketch on a specified plane
- DrawRectangle: Draws a rectangle in the active sketch
- DrawCircle: Draws a circle in the active sketch
- Extrude: Extrudes a profile into a 3D body
- Revolve: Revolves a profile around an axis
Modify
- Fillet: Adds a fillet to selected edges
- Chamfer: Adds a chamfer to selected edges
- Shell: Hollows out a solid body with a specified wall thickness
- Combine: Combines two bodies using boolean operations
Export
- ExportBody: Exports a body to a file
๐ MCP Integration
To use this server with Cline, add it to your MCP settings configuration file:
{
"mcpServers": {
"fusion360": {
"command": "python",
"args": ["/path/to/fusion360-mcp-server/src/main.py", "--mcp"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
๐งฉ Tool Registry
Tools are defined in src/tool_registry.json. Each tool has:
- name: The name of the tool
- description: What the tool does
- parameters: The parameters the tool accepts
- docs: Link to relevant Fusion API documentation
Example tool definition:
{
"name": "Extrude",
"description": "Extrudes a profile into a 3D body.",
"parameters": {
"profile_index": {
"type": "integer",
"description": "Index of the profile to extrude.",
"default": 0
},
"height": {
"type": "number",
"description": "Height of the extrusion in mm."
},
"operation": {
"type": "string",
"description": "The operation type (e.g., 'new', 'join', 'cut', 'intersect').",
"default": "new"
}
},
"docs": "https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-6D381FCD-22AB-4F08-B4BB-5D3A130189AC"
}
๐ Script Generation
The server generates Fusion 360 Python scripts based on the tool calls. These scripts can be executed in Fusion 360's Script Editor.
Example generated script:
import adsk.core, adsk.fusion, traceback
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
design = app.activeProduct
# Get the active component in the design
component = design.rootComponent
# Create a new sketch on the xy plane
sketches = component.sketches
xyPlane = component.xYConstructionPlane
sketch = sketches.add(xyPlane)
# Draw a rectangle
rectangle = sketch.sketchCurves.sketchLines.addTwoPointRectangle(
adsk.core.Point3D.create(0, 0, 0),
adsk.core.Point3D.create(10, 10, 0)
)
# Extrude the profile
prof = sketch.profiles.item(0)
extrudes = component.features.extrudeFeatures
extInput = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
distance = adsk.core.ValueInput.createByReal(5)
extInput.setDistanceExtent(False, distance)
extrude = extrudes.add(extInput)
ui.messageBox('Operation completed successfully')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
๐งช Extending the Server
Adding New Tools
- Add a new tool definition to
src/tool_registry.json - Add a script template to
SCRIPT_TEMPLATESinsrc/script_generator.py - Add parameter processing logic to
_process_parametersinsrc/script_generator.py
๐ Documentation Links
๐ Future Enhancements
- Session state tracking for context-aware operations
- Dynamic tool registration
- Automation via socket or file polling
- More Fusion commands
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
10
Followers
18
Repositories
0
Gists
0
Total Contributions
The serverless-rag-mcp-server is a Python-based tool designed for resource management and automation utilizing serverless architecture. It excels in dynamic resource management and workflow automation, providing developers with features that enhance efficiency in their tasks.