fusion360-mcp-server

fusion360-mcp-server

3.4

If you are the rightful owner of fusion360-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A Model Context Protocol (MCP) server that interfaces between Cline and Autodesk Fusion 360, exposing Fusion 360 toolbar-level commands as callable tools.

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.