
Fusion 360
STDIORemote control and automation server for Autodesk Fusion 360 operations
Remote control and automation server for Autodesk Fusion 360 operations
Master Control Program (MCP) server for Autodesk Fusion 360 that enables remote control and automation of Fusion 360 operations.
This project implements a client-server architecture that allows external applications to interact with Fusion 360. The server acts as a bridge between clients and the Fusion 360 API, enabling remote execution of commands and retrieval of model information.
The project consists of three main components:
MCP Server (server.py
): A standalone Python server that listens for connections from clients and communicates with Fusion 360.
MCP Client (client.py
): A Python client library that connects to the MCP server and provides methods for sending commands and receiving responses.
Fusion 360 Add-in (fusion360_mcp_addin.py
): A Fusion 360 add-in that connects to the MCP server and provides the actual integration with the Fusion 360 API.
Clone this repository or copy the files to your desired location.
Make sure you have Python 3.6+ installed.
No additional Python packages are required for basic functionality as the implementation uses only standard library modules.
To enable LLM features, install the optional openai
package:
pip install openai
fusion360_mcp_addin.py
, client.py
, and the resources
directory to your Fusion 360 AddIns directory. Ensure the resources/MCPIcon
folder contains the required icon files (32x32-normal.png
and 16x16-normal.png
).Shift+S
or find it in the "Design" workspace under "Utilities").python server.py
By default, the server will listen on 127.0.0.1:8080
. You can modify the host
and port in the code if needed. Set the OPENAI_API_KEY
environment variable if
you plan to use the LLM integration.
You can use the provided client implementation to connect to the server and interact with Fusion 360:
from client import MCPClient # Create and connect the client client = MCPClient('127.0.0.1', 8080) if client.connect(): # Get model information client.get_model_info() # Execute a Fusion 360 command client.execute_fusion_command('create_circle', { 'center': [0, 0, 0], 'radius': 10 }) # Disconnect when done client.disconnect()
The server and clients communicate using a simple JSON-based protocol over TCP sockets. Each message is a JSON object with at least a type
field indicating the message type.
fusion_command
: Execute a command in Fusion 360get_model_info
: Request information about the current modelcommand_result
: Response containing the result of a command executionmodel_info
: Response containing model informationllm_request
: Request text generation from the configured LLMllm_result
: Response containing LLM outputYou can extend the server and add-in to support additional functionality:
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.