home / mcp / freecad mcp server

FreeCAD MCP Server

FreeCAD MCP(Model Context Protocol) server

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "neka-nat-freecad-mcp": {
      "command": "uvx",
      "args": [
        "freecad-mcp"
      ]
    }
  }
}

You can control FreeCAD from Claude Desktop by using the FreeCAD MCP server. This MCP acts as a bridge between Claude’s conversational interface and FreeCAD, enabling you to create documents, add objects, run Python code, and view results remotely through a supported client workflow.

How to use

To use the FreeCAD MCP, connect your MCP client (such as Claude Desktop) to the local or remote MCP server, then issue commands that manipulate FreeCAD documents and objects. You will typically start the RPC server from within FreeCAD, configure Claude Desktop to reach the MCP runner, and then send actions like creating documents, inserting parts, or executing Python snippets.

How to install

Prerequisites you should have before starting: a running FreeCAD installation, Claude Desktop installed, and a compatible MCP client setup ready to connect.

Step 1 — Install the FreeCAD MCP addon in FreeCAD.

# Clone the MCP addon repository and install it into FreeCAD’s Mod directory
git clone https://github.com/neka-nat/freecad-mcp.git
cd freecad-mcp
cp -r addon/FreeCADMCP ~/.FreeCAD/Mod/

Step 2 — Restart FreeCAD and start the MCP addon.

In FreeCAD, open the FreeCAD MCP toolbar and select the MCP Addon, then choose Start RPC Server to begin listening for commands.

Step 3 — Set up Claude Desktop to connect to the MCP server.

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

Step 4 — If you want to use text-only feedback, you can enable the text feedback option in Claude Desktop.

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

Configuration and remote access

Remote connections can be enabled so you can control FreeCAD from other machines on your network. By default, the RPC server binds to localhost, but you can allow remote connections by enabling Remote Connections in the FreeCAD MCP toolbar and configuring allowed IPs.

To allow connections from other machines, update the allowed IPs list and restart the RPC server. The server will then accept connections from the specified IP addresses or CIDR subnets.

Additional deployment options

Developer setup demonstrates running the MCP server from a directory containing the FreeCAD MCP project. You can point Claude Desktop to the local MCP runner with a directory path.

# Developer configuration using uv with a local directory
{
  "mcpServers": {
    "freecad": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/freecad-mcp/",
        "run",
        "freecad-mcp"
      ]
    }
  }
}

Tools and capabilities

The FreeCAD MCP exposes a set of tools that let you create and manipulate FreeCAD content through commands and Python execution. Core actions include creating documents, creating or editing objects, deleting objects, executing Python code, inserting parts from a library, and retrieving views or object lists.

Notes and best practices

• Ensure the FreeCAD RPC server is started before issuing commands from the MCP client. • If you enable remote connections, restrict access to trusted IPs for security. • When configuring Claude Desktop, provide the correct host and directory settings so the MCP client can reach the FreeCAD MCP server.

Available tools

create_document

Create a new FreeCAD document.

create_object

Create a new object within a FreeCAD document.

edit_object

Modify properties of an existing FreeCAD object.

delete_object

Remove an object from a FreeCAD document.

execute_code

Run arbitrary Python code inside FreeCAD.

insert_part_from_library

Insert a part from the parts library into the current document.

get_view

Capture and return a screenshot of the active FreeCAD view.

get_objects

Retrieve all objects in the current document.

get_object

Fetch a specific object by identifier from the document.

get_parts_list

List available parts in the parts library.