freecad-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| server_infoA | Return diagnostic information about this freecad-mcp server: its name, version, the installed MCP SDK version, and the FreeCAD bridge status. Set include_environment=true to also report the host Python environment. This tool does not contact FreeCAD and is safe to call at any time. |
| freecad_statusA | Report whether a usable FreeCAD installation is reachable and, if so, its version, embedded Python version, and whether the Part workbench is available. Returns available=false with guidance when FreeCAD is missing or fails to start. Safe to call at any time. |
| create_documentA | Create a new empty FreeCAD document and save it atomically to the controlled workspace. The document_id is validated to be a safe filename (letters, digits, '.', '_', '-', max 64 chars). The document is stored under |
| create_boxA | Add a Part::Box to an existing document. The document is locked exclusively during the operation; other processes cannot modify it concurrently. Parameters length, width, height must be positive numbers (millimetres). |
| create_cylinderA | Add a Part::Cylinder to an existing document. The document is locked exclusively during the operation. Parameters radius and height must be positive numbers (millimetres). |
| set_parameterA | Change a whitelisted parameter on an existing object. Currently whitelisted properties are:
|
| recomputeA | Recompute the active document geometry. Useful after modifying parameters to update the model. The document is locked during the operation. |
| list_objectsB | List all objects in a document, returning their names, types, and basic geometry information (shape type, volume, dimensions). |
| inspect_objectC | Return detailed information about a single object by name, including its type, shape type, volume, and dimensional parameters (Length/Width/Height/Radius). |
| validate_documentA | Validate the geometry of all objects in a document. Returns per-object results indicating whether each object is a valid Solid with positive volume, plus an overall |
| save_documentA | Explicitly save the current document atomically. This is equivalent to the auto-save that happens after create_box/create_cylinder/set_parameter, but can be called independently. After a successful save the document's metadata revision is incremented. |
| export_stepA | Export selected objects from a document to STEP format. If "object_names" are provided, only those objects are exported; otherwise all Part objects in the document are exported. The default output path is |
| tankA | Add a rectangular Part::Box (tank) to an existing document. Parameters length, width, height must be positive numbers (millimetres). The document is locked exclusively during the operation. |
| tubular_coilA | Add a tubular helix coil to an existing document using a Part::Helix and pipe. Parameters coil_radius, tube_radius, num_turns, pitch must be positive numbers (millimetres). The document is locked exclusively during the operation. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools target distinct resources+actions (create_document, set_parameter, list_objects, inspect_object, export_step), but create_box and tank both 'add a rectangular Part::Box' with identical parameters, making them nearly indistinguishable. Additionally, freecad_status and server_info both report FreeCAD/bridge status, creating partial overlap.
There is a solid core of consistent verb_noun names (create_document, create_box, set_parameter, list_objects, validate_document, save_document, export_step), but several tools break the pattern with bare nouns (tank, tubular_coil, server_info, freecad_status) and a lone verb (recompute). Readable, but conventions are mixed.
14 tools sit comfortably in the appropriate range for a CAD workflow server. The count is reasonable, though the redundant tank tool arguably doesn't earn its separate place alongside create_box.
The surface covers creation, parameter editing, listing, inspection, validation, saving, and STEP export, which is a coherent core. However, notable gaps exist: no delete/remove object or document, no list_documents or open/load existing document, so agents cannot manage the full document lifecycle.