mcpfreecad
Provides tools for managing FreeCAD documents, modeling, inspection, snapshots, and optional workbench operations, allowing MCP clients to drive a running FreeCAD session.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcpfreecadCreate a new document and add a cube with side length 5 mm"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FreeCAD MCP Server mcpfreecad
mcpfreecad is an MCP server for driving a running FreeCAD session. It exposes document management, modeling, inspection, snapshot, and optional workbench operations to MCP clients over stdio or authenticated remote HTTP.
The server is designed around a small Python bridge that is loaded into FreeCAD's embedded interpreter. The MCP process then talks to that bridge over localhost.
Features
stdioand API-key authenticatedremotehttptransportsdocument lifecycle tools for opening, saving, closing, and enumerating FreeCAD documents
explicit model inspection via document tree, topology, sketch status, and sketch details tools
modeling support for Part primitives, PartDesign bodies/pads/pockets, spreadsheets, Draft arrays, and snapshots
reusable object library backed by BREP plus JSON metadata
optional workbench integration for helpers such as
freecad.gears, Fasteners, Curves sketch-on-surface workflows, and A2plus assembly operations when availableremote snapshot retrieval through authenticated URLs or tokenized snapshot download URLs
For LLM-facing operating guidance, see LLM_USAGE.md.
Related MCP server: FreeCAD Robust MCP Server
Further Information
There is an accompanying blog article that describes some of the usage and motivation behind this project.

Installation
Install from PyPI:
pip install mcpfreecadTo enable remote HTTP mode:
pip install "mcpfreecad[remote]"For local development:
git clone <repository-url>
cd mcpFreeCAD
pip install -e .
pip install -e ".[remote]"Quick Start
Start FreeCAD.
Load the bridge module inside the FreeCAD Python console.
Start
mcpfreecadinstdiomode orremotehttpmode.Connect your MCP client and call
bridge_status.
Example bridge loading from a checkout:
exec(open("/path/to/mcpFreeCAD/examples/freecad_bridge_loader.py").read(), globals(), globals())The loader starts the bridge on 127.0.0.1:48111 with token change-me. Adjust the example or call start_bridge_server(...) directly if you need different values.
Configuration
The default configuration path is ~/.config/mcpfreecad.conf.
Example configuration:
{
"mode": "remotehttp",
"logging": {
"level": "INFO"
},
"bridge": {
"host": "127.0.0.1",
"port": 48111,
"token": "change-me",
"timeout_seconds": 30.0
},
"remote_server": {
"transport": {
"uds": "/var/run/mcpfreecad.sock"
},
"url_prefix": "https://mcp.example.com/freecad/"
},
"stdio": {
"library_root": "/srv/mcpfreecad/stdio-library",
"allow_code_execution": true,
"allow_library_write": true,
"allow_snapshots": true
},
"api_keys": [
{
"id": "cad-agent",
"kdf": {
"algorithm": "argon2id",
"salt": "BASE64",
"time_cost": 3,
"memory_cost": 65536,
"parallelism": 1,
"hash_len": 32,
"hash": "BASE64"
},
"library_root": "/srv/mcpfreecad/cad-agent-library",
"allow_code_execution": true,
"allow_library_write": true,
"allow_snapshots": true
}
]
}Generate or rotate a remote API key:
mcpfreecad --config ~/.config/mcpfreecad.conf --genkey cad-agentRunning
StdIO mode:
mcpfreecad --config ~/.config/mcpfreecad.confRemote HTTP mode:
mcpfreecad --config ~/.config/mcpfreecad.conf --transport remotehttpThe remote HTTP wrapper accepts:
Authorization: Bearer <token>X-API-Key: <token>?mcp=<token>legacy
?api_key=<token>
/status is intentionally public so it can be used for health checks.
Reverse Proxy Notes
The FastMCP instance is created with:
TransportSecuritySettings(enable_dns_rebinding_protection=False)That is intentional for reverse-proxy deployments.
Example Apache layout:
ProxyPass /freecad/status http://127.0.0.1:18080/status
ProxyPassReverse /freecad/status http://127.0.0.1:18080/status
ProxyPass /freecad/mcp/ http://127.0.0.1:18080/mcp/
ProxyPassReverse /freecad/mcp/ http://127.0.0.1:18080/mcp/
ProxyPass /freecad/snapshots/ http://127.0.0.1:18080/snapshots/
ProxyPassReverse /freecad/snapshots/ http://127.0.0.1:18080/snapshots/When remote_server.url_prefix is configured, snapshot download URLs are returned as absolute URLs rooted there. Otherwise they fall back to relative ../snapshots/... paths.
Snapshot Retrieval
capture_snapshot(...) returns:
snapshot_iddownload_urldownload_url_with_token
download_url requires normal MCP auth again.
download_url_with_token is an easier direct-fetch URL for clients that cannot conveniently resend MCP auth. It contains a random in-memory token and returns image/png.
You can also retrieve a registered snapshot inline through:
get_snapshot_base64(snapshot_id="...")Snapshots are exposed only if they were created through capture_snapshot(...). Arbitrary server files are not downloadable through the snapshot route.
FreeBSD rc.d Service
A sample rc.d script is included at freebsd/rc.d/mcpfreecad.
Install it as:
install -m 0555 freebsd/rc.d/mcpfreecad /usr/local/etc/rc.d/mcpfreecadDefault rc.conf settings:
mcpfreecad_enable="YES"
mcpfreecad_config="/usr/local/etc/mcpfreecad.conf"Optional overrides:
mcpfreecad_daemon_user="mcpfreecad"
mcpfreecad_command="/usr/local/bin/mcpfreecad"
mcpfreecad_transport="remotehttp"
mcpfreecad_flags=""
mcpfreecad_pidfile="/var/run/mcpfreecad.pid"Optional Workbenches
mcpfreecad only surfaces optional workbench tools when the corresponding workbench is available on the host. This currently includes support for areas such as:
freecad.gearsFasteners
Curves
A2plus
Repository Layout
mcpfreecad/: package sourceexamples/: bridge loader and smoke examplesfreebsd/: FreeBSD service helpertests/: automated test suiteskill/: Codex skill material
Testing
Run the Python test suite with:
pytest -qFor bridge-side smoke testing from a checkout:
python3 examples/freecad_bridge_smoke.py
python3 examples/freecad_bridge_smoke.py --with-fastenersThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityFmaintenanceThis project provides a robust integration between AI assistants and FreeCAD CAD software using the Model Context Protocol (MCP). It allows external applications to interact with FreeCAD through a standardized interface, offering multiple connection methods and specialized tools.24MIT
- Alicense-qualityDmaintenanceAn MCP server that enables AI assistants to interact with FreeCAD for 3D modeling, macro development, and debugging through 150+ tools supporting multiple connection modes.175MIT
- Alicense-qualityCmaintenanceAn MCP server that enables automation of FreeCAD model creation, macro execution, and view management through a server-client architecture, supporting integration with external AI tools like Claude and Cursor.96MIT
- Alicense-qualityCmaintenanceEnables AI agents to programmatically build, analyze, and export 3D CAD geometry using FreeCAD through REST or MCP tools.1MIT
Related MCP Connectors
MCP server for the FFmpeg Micro video transcoding API — create, monitor, download transcodes.
MCP server for generating rough-draft project plans from natural-language prompts.
Remote MCP server for full read/write access to a Zotero library
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tspspi/mcpFreeCAD'
If you have feedback or need assistance with the MCP directory API, please join our Discord server