MCP ExplorerExplorer

Fusion360 Mcp Server

@ArchimedesCryptoon 9 months ago
23 MIT
FreeCommunity
AI Systems
A server that connects Cline with Autodesk Fusion 360 for executing design commands.

Overview

What is Fusion360 Mcp Server

The fusion360-mcp-server is a Model Context Protocol (MCP) server that acts as an interface between Cline and Autodesk Fusion 360, enabling the execution of design commands through natural language processing.

Use cases

Use cases include automating design tasks by converting natural language prompts into Fusion 360 commands, enhancing productivity in design workflows, and integrating with other applications that require CAD functionalities.

How to use

To use the fusion360-mcp-server, clone the repository, install the required dependencies, and run the server using Python. You can interact with the server via HTTP requests to call various tools and generate scripts.

Key features

Key features include natural language parsing, mapping commands to Fusion 360 API actions, generating executable Python scripts, and providing a RESTful API for tool interaction.

Where to use

The fusion360-mcp-server is used in design and engineering fields, particularly where Autodesk Fusion 360 is employed for CAD modeling and design automation.

Content

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.

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers