- Home
- MCP servers
- FreeCAD
FreeCAD
- python
576
GitHub Stars
python
Language
6 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
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.