FreeCAD MCP Connector
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FreeCAD-Host | No | Adresse des Rechners mit FreeCAD. Für FreeCAD auf einem anderen Rechner dort zusätzlich Remote Connections aktivieren und die eigene IP freigeben. | localhost |
| Nur Text-Feedback | No | Unterdrückt Screenshots der 3D-Ansicht. Spart deutlich Tokens, nimmt Claude aber die visuelle Kontrolle über das Ergebnis. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_documentA | 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.
|
| create_objectA | Create a new object in FreeCAD. Object type is starts with "Part::" or "Draft::" or "PartDesign::" or "Fem::". Args: doc_name: The name of the document to create the object in. obj_type: The type of the object to create (e.g. 'Part::Box', 'Part::Cylinder', 'Draft::Circle', 'PartDesign::Body', etc.). obj_name: The name of the object to create. obj_properties: The properties of the object to create. include_screenshot: Whether to return a screenshot of the model (default True). Set to False to save tokens when visual feedback is not needed, e.g. for intermediate steps in a longer sequence of changes. view_name: The view orientation of the returned screenshot (default "Isometric"). Pick the view that best shows the change being made. Returns: A message indicating the success or failure of the object creation and a screenshot of the object. Examples:
If you want to create a cylinder with a height of 30 and a radius of 10, you can use the following data.
|
| edit_objectB | Edit an object in FreeCAD.
This tool is used when the 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. include_screenshot: Whether to return a screenshot of the model (default True). Set to False to save tokens when visual feedback is not needed, e.g. for intermediate steps in a longer sequence of changes. view_name: The view orientation of the returned screenshot (default "Isometric"). Pick the view that best shows the change being made. Returns: A message indicating the success or failure of the object editing and a screenshot of the object. |
| delete_objectA | 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. include_screenshot: Whether to return a screenshot of the model (default True). Set to False to save tokens when visual feedback is not needed, e.g. for intermediate steps in a longer sequence of changes. view_name: The view orientation of the returned screenshot (default "Isometric"). Pick the view that best shows the change being made. Returns: A message indicating the success or failure of the object deletion and a screenshot of the object. |
| execute_code_asyncA | Execute Python code in FreeCAD without waiting for completion. Use this ONLY for long-running background computations that do NOT touch the FreeCAD GUI or mutate the FreeCAD document tree directly. This tool runs the submitted code in a background thread and returns immediately. Because it does not run on FreeCAD's main GUI thread, the code must NOT call FreeCADGui APIs, manipulate the active view or selection, create or edit document objects, change object properties, call doc.recompute(), or save documents. For code that touches FreeCAD documents, document objects, FreeCADGui, the active view, selection, recompute, or save operations, use execute_code instead. execute_code runs on the FreeCAD GUI thread and is the safe default for normal FreeCAD automation. Use execute_code_async only for background-safe work such as long-running pure OCCT geometry calculations (e.g. fuse/cut/loft on already-fetched shapes) or other CPU-bound computations that do not interact with the document or GUI. Typical usage pattern:
Args: code: Background-safe Python code to execute. Returns: A message confirming that background execution has started. |
| execute_codeA | Execute arbitrary Python code in FreeCAD. Args: code: The Python code to execute. include_screenshot: Whether to return a screenshot of the model (default True). Set to False to save tokens when the code does not change the model's appearance, e.g. analytical or computational scripts whose result is printed output, or intermediate steps in a longer sequence of changes. view_name: The view orientation of the returned screenshot (default "Isometric"). Pick the view that best shows the change being made. 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_viewA | 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" width: The width of the screenshot in pixels. If not specified, uses the viewport width. height: The height of the screenshot in pixels. If not specified, uses the viewport height. focus_object: The name of the object to focus on. If not specified, fits all objects in the view. Returns: A screenshot of the active view. |
| insert_part_from_libraryA | Insert a part from the parts library addon. Args: relative_path: The relative path of the part to insert. include_screenshot: Whether to return a screenshot of the model (default True). Set to False to save tokens when visual feedback is not needed, e.g. for intermediate steps in a longer sequence of changes. view_name: The view orientation of the returned screenshot (default "Isometric"). Pick the view that best shows the change being made. Returns: A message indicating the success or failure of the part insertion and a screenshot of the object. |
| get_objectsA | 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. include_screenshot: Whether to return a screenshot of the document (default True). Set to False to save tokens when only the object data is needed. view_name: The view orientation of the returned screenshot (default "Isometric"). Returns: A list of objects in the document and a screenshot of the document. |
| get_objectA | 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. include_screenshot: Whether to return a screenshot of the document (default True). Set to False to save tokens when only the object data is needed. view_name: The view orientation of the returned screenshot (default "Isometric"). Returns: The object and a screenshot of the object. |
| get_parts_listA | Get the list of parts in the parts library addon. |
| reload_documentA | Close and re-open a document to pick up external file changes. Use this AFTER the document's .FCStd file has been modified by
something outside of FreeCAD's GUI process — for example, a
headless Args:
doc_name: The name of the open document to reload. Must match
the name shown by Returns: A message confirming the document was reloaded, or describing the failure (document not loaded, no associated file, etc). Examples:
|
| list_documentsA | Get the list of open documents in FreeCAD. Returns: A list of document names. |
| run_fem_analysisA | Run the CalculiX solver on an existing Fem::FemAnalysis container and return summary results. Prerequisites in the document:
A SolverCcxTools is auto-created if the analysis has none. The solver runs synchronously on the FreeCAD GUI thread and blocks all other RPC calls for its duration; do not fan out parallel requests. Returns max von Mises stress (MPa), max/min displacement (mm), node count, and the working directory CalculiX wrote to. On failure, returns the prerequisite-check or solver error along with the working directory for triage. Args: doc_name: Name of the FreeCAD document. analysis_name: Name of the Fem::AnalysisPython object. timeout: Seconds to wait for the solver (default 600). include_screenshot: Whether to return a screenshot of the model (default True). Set to False to save tokens when only the numeric results are needed. view_name: The view orientation of the returned screenshot (default "Isometric"). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| asset_creation_strategy |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/mario-2015/freecad-mcp-connector-for-claude-desktop'
If you have feedback or need assistance with the MCP directory API, please join our Discord server