Navigation
FreeCAD: Open-Source 3D Design, Cross-Platform Power - MCP Implementation

FreeCAD: Open-Source 3D Design, Cross-Platform Power

FreeCAD: Revolutionize 3D design with free, open-source CAD—cross-platform power for engineers, makers, and innovators. Turn ideas into reality, limitlessly.

Developer Tools
4.4(70 reviews)
105 saves
49 comments

Users create an average of 27 projects per month with this tool

About FreeCAD

What is FreeCAD: Open-Source 3D Design, Cross-Platform Power?

FreeCAD is a powerful open-source 3D design software engineered for precision engineering and parametric modeling. Its Model Control Protocol (MCP) enables seamless server-client communication, letting users automate workflows and access document data programmatically. Built for cross-platform compatibility—Windows, Linux, macOS—it offers a unified development experience with Python-based scripting support.

How to Use FreeCAD: Open-Source 3D Design, Cross-Platform Power?

Configure the MCP server via JSON to point Python executables and script paths matching your OS:

  • Windows: Adjust paths like "C:\\ProgramData\\anaconda3\\python.exe"
  • Linux/macOS: Use system Python paths such as /usr/bin/python3

Connect via socket API to execute commands. Example Python client code demonstrates sending "get_scene_info" or "run_script" requests to manipulate models programmatically.

FreeCAD Features

Key Features of FreeCAD: Open-Source 3D Design, Cross-Platform Power?

  • Scene Intelligence: Retrieve detailed model metadata including object hierarchies, geometric properties, and sketch constraints
  • Full Automation: Execute arbitrary Python scripts to create/modify objects, automate design tasks, and leverage FreeCAD's full API capabilities
  • Real-Time Control: Server-client architecture enables remote workflow integration with other applications

Use Cases of FreeCAD: Open-Source 3D Design, Cross-Platform Power?

  • Automated parametric design validation
  • Custom workflow automation for engineering teams
  • Data extraction for manufacturing simulations
  • Education: Programmatic model generation for tutorials

FreeCAD FAQ

FAQ from FreeCAD: Open-Source 3D Design, Cross-Platform Power?

  • Q: How do I start the MCP server?
    A: Ensure FreeCAD is restarted after placing the mod files in the appropriate OS-specific directory.
  • Q: Can I customize server port settings?
    A: Currently fixed to 9876 - future versions may add configuration options.
  • Q: What error handling exists?
    A: Scripts return JSON responses indicating success/failure with detailed error messages.

Content

FreeCAD MCP (Model Control Protocol)

Overview

The FreeCAD MCP (Model Control Protocol) provides a simplified interface for interacting with FreeCAD through a server-client architecture. This allows users to execute commands and retrieve information about the current FreeCAD document and scene.

https://github.com/user-attachments/assets/5acafa17-4b5b-4fef-9f6c-617e85357d44

Configuration

To configure the MCP server, you can use a JSON format to specify the server settings. Below is an example configuration:

{
    "mcpServers": {
        "freecad": {
            "command": "C:\\ProgramData\\anaconda3\\python.exe",
            "args": [
                "C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
            ]
        }
    }
}

Configuration Details

  • command : The path to the Python executable that will run the FreeCAD MCP server. This can vary based on your operating system:

    • Windows : Typically, it might look like C:\\ProgramData\\anaconda3\\python.exe or C:\\Python39\\python.exe.
    • Linux : It could be /usr/bin/python3 or the path to your Python installation.
    • macOS : Usually, it would be /usr/local/bin/python3 or the path to your Python installation.
  • args : An array of arguments to pass to the Python command. The first argument should be the path to the freecad_bridge.py script, which is responsible for handling the MCP server logic. Make sure to adjust the path according to your installation.

Example for Different Operating Systems

Windows

{
    "mcpServers": {
        "freecad": {
            "command": "C:\\ProgramData\\anaconda3\\python.exe",
            "args": [
                "C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
            ]
        }
    }
}

Linux

{
    "mcpServers": {
        "freecad": {
            "command": "/usr/bin/python3",
            "args": [
                "/home/USER/.FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
            ]
        }
    }
}

macOS

{
    "mcpServers": {
        "freecad": {
            "command": "/usr/local/bin/python3",
            "args": [
                "/Users/USER/Library/Preferences/FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
            ]
        }
    }
}

Features

The FreeCAD MCP currently supports the following functionalities:

1. get_scene_info

  • Description : Retrieves comprehensive information about the current FreeCAD document, including:
    • Document properties (name, label, filename, object count)
    • Detailed object information (type, position, rotation, shape properties)
    • Sketch data (geometry, constraints)
    • View information (camera position, direction, etc.)

2. run_script

  • Description : Executes arbitrary Python code within the FreeCAD context. This allows users to perform complex operations, create new objects, modify existing ones, and automate tasks using FreeCAD's Python API.

Example Usage

To use the FreeCAD MCP, you can connect to the server and send commands as follows:

import socket
import json

# Connect to the FreeCAD MCP server
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 9876))

# Example: Get scene information
command = {
    "type": "get_scene_info"
}
client.sendall(json.dumps(command).encode('utf-8'))

# Receive the response
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))

# Example: Run a script
script = """
import FreeCAD
doc = FreeCAD.ActiveDocument
box = doc.addObject("Part::Box", "MyBox")
box.Length = 20
box.Width = 20
box.Height = 20
doc.recompute()
"""
command = {
    "type": "run_script",
    "params": {
        "script": script
    }
}
client.sendall(json.dumps(command).encode('utf-8'))

# Receive the response
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))

# Close the connection
client.close()

Installation

  1. Clone the repository or download the files.
  2. Place the freecad_mcp directory in your FreeCAD modules directory:
    * Windows: %APPDATA%/FreeCAD/Mod/
    * Linux: ~/.FreeCAD/Mod/
    * macOS: ~/Library/Preferences/FreeCAD/Mod/
  3. Restart FreeCAD and select the "FreeCAD MCP" workbench from the workbench selector.

Contributing

Feel free to contribute by submitting issues or pull requests. Your feedback and contributions are welcome!

License

This project is licensed under the MIT License. See the LICENSE file for details.

Related MCP Servers & Clients