Fire in da houseTop Tip:Paying $100+ per month for Perplexity, MidJourney, Runway, ChatGPT and other tools is crazy - get all your AI tools in one site starting at $15 per month with Galaxy AI Fire in da houseCheck it out free

fusion360-mcp-server

MCP.Pizza Chef: ArchimedesCrypto

Fusion360 MCP Server is an MCP server that bridges Cline with Autodesk Fusion 360, exposing Fusion 360 toolbar commands as callable tools. It parses natural language prompts into Fusion tool actions, executes them, and returns Python scripts for Fusion 360 automation. This enables seamless integration of LLM-driven workflows with Fusion 360's API for CAD automation and scripting.

Use This MCP server To

Convert natural language CAD commands into Fusion 360 tool actions Automate Fusion 360 modeling tasks via Python scripts Integrate LLM-driven workflows with Fusion 360 API Execute complex CAD operations through natural language prompts Enable remote control of Fusion 360 via MCP protocol Generate Fusion 360 Python scripts from user instructions

README

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

  1. Clone this repository:

    git clone https://github.com/yourusername/fusion360-mcp-server.git
    cd fusion360-mcp-server
  2. Install 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 running
  • GET /tools: List all available tools
  • POST /call_tool: Call a single tool and generate a script
  • POST /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

  1. Add a new tool definition to src/tool_registry.json
  2. Add a script template to SCRIPT_TEMPLATES in src/script_generator.py
  3. Add parameter processing logic to _process_parameters in src/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.

fusion360-mcp-server FAQ

How do I install the Fusion360 MCP Server?
Clone the repository, install Python 3.9+, then run 'pip install -r requirements.txt'.
What prerequisites are needed to run this MCP server?
You need Python 3.9 or higher and Autodesk Fusion 360 installed.
How does the server convert natural language to Fusion 360 actions?
It parses prompts into sequences of Fusion tool commands mapped to the Fusion API.
Can this server execute commands directly in Fusion 360?
It returns Python scripts that can be executed in Fusion 360 to perform the actions.
How do I start the Fusion360 MCP Server?
Navigate to the 'src' directory and run 'python main.py' to start the HTTP server.
Is this MCP server compatible with other LLM providers?
Yes, it works with models like OpenAI, Claude, and Gemini through the MCP client integration.
Can I extend the server to support custom Fusion 360 commands?
Yes, you can add new tool mappings to expose additional Fusion 360 API commands.
Does the server support real-time interaction with Fusion 360?
Yes, it enables real-time command execution via MCP protocol integration.