FreeCAD logo

FreeCAD

Community
neka-nat

FreeCAD MCP(Model Context Protocol) server

Publisherneka-nat
Repositoryfreecad-mcp
LanguagePython
Forks
158
Stars
940
Available tools
10
Transport typestdio
Categories
LicenseMIT
Links
  • Connect tools to AI workflows

    FreeCAD exposes MCP capabilities that can be used by compatible AI clients and agents.

  • 10 available tools

    Browse the callable actions below, including names and descriptions when provided by the server.

  • Ready-to-copy setup

    Use the installation snippets to configure this server in your preferred MCP client.

  • Open source signals

    940 stars and 158 forks from the linked repository.

MseeP.ai Security Assessment Badge

FreeCAD MCP

This repository is a FreeCAD MCP that allows you to control FreeCAD from Claude Desktop.

Demo

Design a flange

demo

Design a toy car

demo

Design a part from 2D drawing

Input 2D drawing

input

Demo

demo

This is the conversation history. https://claude.ai/share/7b48fd60-68ba-46fb-bb21-2fbb17399b48

Install addon

FreeCAD Addon directory is

  • Windows: %APPDATA%\FreeCAD\Mod\
  • Mac:
    • FreeCAD 1.1: ~/Library/Application\ Support/FreeCAD/v1-1/Mod/
    • FreeCAD 1.0: ~/Library/Application\ Support/FreeCAD/v1-0/Mod/
  • Linux:
    • Ubuntu: ~/.FreeCAD/Mod/ or ~/snap/freecad/common/Mod/ (if you install FreeCAD from snap)
    • Debian: ~/.local/share/FreeCAD/Mod
    • Arch / CachyOS (FreeCAD 1.1 from extra/freecad): ~/.local/share/FreeCAD/v1-1/Mod/

Please put addon/FreeCADMCP directory to the addon directory.

bash
git clone https://github.com/neka-nat/freecad-mcp.git
cd freecad-mcp

# For Linux (Ubuntu/Debian)
cp -r addon/FreeCADMCP ~/.FreeCAD/Mod/

# For Linux (Arch/CachyOS, FreeCAD 1.1 from extra/freecad)
mkdir -p ~/.local/share/FreeCAD/v1-1/Mod/
cp -r addon/FreeCADMCP ~/.local/share/FreeCAD/v1-1/Mod/

# For macOS (FreeCAD 1.1)
cp -r addon/FreeCADMCP ~/Library/Application\ Support/FreeCAD/v1-1/Mod/

When you install addon, you need to restart FreeCAD. You can select "MCP Addon" from Workbench list and use it.

workbench_list

And you can start RPC server by "Start RPC Server" command in "FreeCAD MCP" toolbar.

start_rpc_server

Auto-Start RPC Server

By default, the RPC server must be started manually each time FreeCAD opens. To start it automatically:

  1. Open the FreeCAD MCP menu (switch to the MCP Addon workbench first)
  2. Check Auto-Start Server

The setting is saved to freecad_mcp_settings.json and persists across sessions. On the next FreeCAD launch, the RPC server will start automatically once the application finishes loading.

You can disable it at any time by unchecking Auto-Start Server in the same menu.

Setting up Claude Desktop

Pre-installation of the uvx is required.

And you need to edit Claude Desktop config file, claude_desktop_config.json.

For user.

json
{
  "mcpServers": {
    "freecad": {
      "command": "uvx",
      "args": [
        "freecad-mcp"
      ]
    }
  }
}

If you want to save token, you can set only_text_feedback to true and use only text feedback.

json
{
  "mcpServers": {
    "freecad": {
      "command": "uvx",
      "args": [
        "freecad-mcp",
        "--only-text-feedback"
      ]
    }
  }
}

For developer. First, you need clone this repository.

bash
git clone https://github.com/neka-nat/freecad-mcp.git
json
{
  "mcpServers": {
    "freecad": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/freecad-mcp/",
        "run",
        "freecad-mcp"
      ]
    }
  }
}

Remote Connections

By default the RPC server does not accept remote connections and listens on localhost. To control FreeCAD from another machine on your network:

1. Enable remote connections in FreeCAD

In the FreeCAD MCP toolbar:

  1. Check Remote Connections — the RPC server will bind to 0.0.0.0 (all interfaces) on the next restart. For security reasons, it only accepts connections from the IP addresses or CIDR subnets specified in the Allowed IPs field. By default this is 127.0.0.1.

  2. Click Configure Allowed IPs and enter a comma-separated list of IP addresses or CIDR subnets that are allowed to connect, e.g.:

    192.168.1.100, 10.0.0.0/24

    127.0.0.1 is always the default. Invalid entries are rejected with an error dialog. Restart the RPC server after changing these settings.

2. Point the MCP server at the remote host

Pass the --host flag with the IP address or hostname of the machine running FreeCAD:

json
{
  "mcpServers": {
    "freecad": {
      "command": "uvx",
      "args": [
        "freecad-mcp",
        "--host", "192.168.1.100"
      ]
    }
  }
}

The --host value is validated on startup — it must be a valid IPv4/IPv6 address or hostname.

Tools

  • create_document: Create a new document in FreeCAD.
  • create_object: Create a new object in FreeCAD.
  • edit_object: Edit an object in FreeCAD.
  • delete_object: Delete an object in FreeCAD.
  • execute_code: Execute arbitrary Python code in FreeCAD.
  • insert_part_from_library: Insert a part from the parts library.
  • get_view: Get a screenshot of the active view.
  • get_objects: Get all objects in a document.
  • get_object: Get an object in a document.
  • get_parts_list: Get the list of parts in the parts library.
  • run_fem_analysis: Run the CalculiX solver on an existing Fem::FemAnalysis and return summary results (max von Mises stress, max displacement, node count, working directory). Auto-creates a SolverCcxTools if the analysis has none. See examples/cantilever_fem.py for an end-to-end usage example.

Contributors

Made with contrib.rocks.

Installation

TypingMind
Prerequisites:

Node.js 18+

{
  "mcpServers": {
    "freecad": {
      "command": "uvx",
      "args": [
        "freecad-mcp"
      ]
    }
  }
}

Available Tools

  • create_document

    Create a new document in FreeCAD.

    Args:
        name: The name of the document to create.
    
    Returns:
        A message indicating the success or failure of the document creation.
    
    Examples:
        If you want to create a document named "MyDocument", you can use the following data.
        ```json
        {
            "name": "MyDocument"
        }
        ```
    
  • create_object

    $2e

  • edit_object

    Edit an object in FreeCAD. This tool is used when the create_object tool cannot handle the object creation.

    Args:
        doc_name: The name of the document to edit the object in.
        obj_name: The name of the object to edit.
        obj_properties: The properties of the object to edit.
    
    Returns:
        A message indicating the success or failure of the object editing and a screenshot of the object.
    
  • delete_object

    Delete an object in FreeCAD.

    Args:
        doc_name: The name of the document to delete the object from.
        obj_name: The name of the object to delete.
    
    Returns:
        A message indicating the success or failure of the object deletion and a screenshot of the object.
    
  • execute_code

    Execute arbitrary Python code in FreeCAD.

    Args:
        code: The Python code to execute.
    
    Returns:
        A message indicating the success or failure of the code execution, the output of the code execution, and a screenshot of the object.
    
  • get_view

    Get a screenshot of the active view.

    Args:
        view_name: The name of the view to get the screenshot of.
        The following views are available:
        - "Isometric"
        - "Front"
        - "Top"
        - "Right"
        - "Back"
        - "Left"
        - "Bottom"
        - "Dimetric"
        - "Trimetric"
    
    Returns:
        A screenshot of the active view.
    
  • insert_part_from_library

    Insert a part from the parts library addon.

    Args:
        relative_path: The relative path of the part to insert.
    
    Returns:
        A message indicating the success or failure of the part insertion and a screenshot of the object.
    
  • get_objects

    Get all objects in a document. You can use this tool to get the objects in a document to see what you can check or edit.

    Args:
        doc_name: The name of the document to get the objects from.
    
    Returns:
        A list of objects in the document and a screenshot of the document.
    
  • get_object

    Get an object from a document. You can use this tool to get the properties of an object to see what you can check or edit.

    Args:
        doc_name: The name of the document to get the object from.
        obj_name: The name of the object to get.
    
    Returns:
        The object and a screenshot of the object.
    
  • get_parts_list

    Get the list of parts in the parts library addon.

Use FreeCAD MCP with multiple AI models

TypingMind connects MCP tools at the workspace level, so once FreeCAD is connected, you can use it with different AI models in TypingMind instead of setting it up separately for each model. This MCP runs locally through the TypingMind MCP connector on your device.

Setup guide to use the local connector

Use this when the MCP server needs access to local files, apps, or private resources on your computer.

1

Open the MCP settings

In TypingMind, go to Settings, Advanced Settings, then Model Context Protocol and choose Setup Connector.

  1. Open TypingMind in your browser.
  2. Click the Settings icon.
  3. Go to Advanced Settings.
  4. Open the Model Context Protocol section.
  5. Click Setup Connector and choose This Device.
TypingMind MCP connector setup screen with This Device selected
2

Run the connector command

Choose This Device, copy the command from TypingMind, and run it in Terminal. Keep the process running while you use MCP.

  1. Copy the setup command shown by TypingMind.
  2. Open Terminal on macOS or Windows Terminal on Windows.
  3. Paste and run the command.
  4. Approve the package install if Terminal asks you to proceed.
  5. Keep the Terminal window running while using MCP tools.
3

Add FreeCAD as a server

When the connector status is Ready, click Edit Servers and paste the MCP server configuration.

  1. Wait until the connector status shows Ready.
  2. Click Edit Servers.
  3. Paste the FreeCAD MCP server configuration.
  4. Save the server list.
  5. Refresh if you want to confirm the connector is still ready.
TypingMind MCP settings showing active server and Edit Servers button
{
  "mcpServers": {
    "freecad": {
      "command": "npx",
      "args": [
        "-y",
        "freecad-mcp"
      ]
    }
  }
}
4

Use it across models

Save the server list, open Plugins, enable the FreeCAD MCP tools, then select any supported AI model in TypingMind and use the tools in chat or assign them to an AI agent.

  1. Open the Plugins page in TypingMind.
  2. Enable the FreeCAD MCP tools.
  3. Start a chat and choose the AI model you want to use.
  4. Use the MCP tools in chat or assign them to an AI agent.
  5. Switch to another AI model whenever needed without reconnecting MCP.
TypingMind chat using enabled MCP tools with a selected AI model
Can you use FreeCAD to help me with this task?
FreeCAD
Sure. I read it.
Here is what I found using FreeCAD.

Frequently asked questions

What is the FreeCAD MCP server used for?

FreeCAD is an MCP server that lets compatible AI clients connect to external tools and context. In TypingMind, you can add this MCP server once and make its tools available in your AI workspace.

Can I use FreeCAD MCP with multiple AI models in TypingMind?

Yes. TypingMind connects MCP tools at the workspace level, so you can use FreeCAD with different AI models such as Claude, ChatGPT, Gemini, or other models you have configured in TypingMind without setting up the MCP server separately for each model.

Why use FreeCAD MCP with TypingMind?

TypingMind is one of the best frontends for LLM chat because it brings multiple AI models, prompts, plugins, AI agents, API keys, and MCP tools into one workspace. With FreeCAD connected, you can use its MCP tools across your preferred models while keeping your chat workflow organized in TypingMind.

How do I connect FreeCAD MCP to TypingMind?

FreeCAD runs through the TypingMind local MCP connector. This is best when the MCP server needs access to local files, desktop apps, command-line tools, or private resources on your computer.

What tools does FreeCAD MCP provide in TypingMind?

FreeCAD exposes 10 MCP tools that can be enabled from the TypingMind Plugins page and used in chat or assigned to AI agents.

Do I need to share my API keys with TypingMind to use FreeCAD MCP?

No. TypingMind is local-first and lets you keep your model providers, API keys, prompts, and MCP configuration under your control. If FreeCAD requires authentication, add the required headers, OAuth settings, or local configuration for that MCP server when you create the connection.

Related MCP Servers

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇