Skip to main content
Glama
ahelja

FreeCAD MCP

by ahelja

create_object

Create a FreeCAD object in a document by specifying its type and properties, including primitives, booleans, and transforms.

Instructions

Create an object in a document.

Frequently used TypeIds: Primitives Part::Box (Length,Width,Height) | Part::Cylinder (Radius,Height,Angle) Part::Sphere (Radius) | Part::Cone (Radius1,Radius2,Height) Part::Torus (Radius1,Radius2) | Part::Plane (Length,Width) Part::Wedge | Part::Ellipsoid | Part::Prism (Polygon,Circumradius,Height) Booleans Part::Cut / Part::Fuse / Part::Common (properties: Base, Tool) Part::MultiFuse / Part::MultiCommon (property: Shapes = [names]) Transforms Part::Mirroring (Source,Normal,Base) | Part::Extrusion | Part::Revolution Structure App::Part | App::DocumentObjectGroup | App::Link (LinkedObject) Modelling PartDesign::Body | Sketcher::SketchObject (build these with run_python)

Value formats accepted by properties: numbers/lengths 10 or 10.5 (millimetres) vectors [x, y, z] or {"x":.., "y":.., "z":..} placement {"Base":[x,y,z], "Rotation":{"Axis":[0,0,1], "Angle":45}} rotation 45 (degrees about Z) | {"Axis":[..],"Angle":..} | {"Yaw":..,"Pitch":..,"Roll":..} links "Box" (object Name or Label) link lists: ["Box","Cylinder"] colours "#ff8800" | [1.0, 0.53, 0.0] | [255, 133, 0] view_properties targets the ViewObject: ShapeColor, Transparency (0-100), DisplayMode ("Flat Lines","Shaded","Wireframe"), Visibility.

Example: a 20mm cube offset on X, coloured orange type_id="Part::Box" properties={"Length": 20, "Width": 20, "Height": 20, "Placement": {"Base": [30, 0, 0]}} view_properties={"ShapeColor": "#ff8800"}

Example: cut a cylinder out of a box (both must already exist) type_id="Part::Cut", properties={"Base": "Box", "Tool": "Cylinder"}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
labelNo
type_idYes
documentNo
propertiesNo
view_propertiesNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure. It does not mention side effects such as whether the document is modified in place, if recompute is required, whether operations are undoable, or what happens on failure. It only provides a prerequisite for boolean operations ('both must already exist'), which is minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with sections for TypeIds, value formats, and examples. Each section provides essential information without fluff. The use of code blocks and examples improves readability, though it could be slightly trimmed without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 6 parameters and an output schema, the description covers input semantics thoroughly. However, it lacks behavioral context (side effects, recompute needs, error behavior) and does not explain the purpose of name/label/document parameters, leaving minor gaps. Given the output schema, return values need no explanation, so the description is mostly complete but not fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully compensates. It details accepted value formats for properties (numbers, vectors, placements, rotations, links, colors), explains view_properties targets, and provides a comprehensive list of TypeIds with their required properties. This adds substantial meaning beyond the schema's bare property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create an object in a document' with a specific verb and resource. It distinguishes from sibling tools like edit_object, move_object, and delete_object by focusing on creation. The extensive TypeId list further clarifies the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool, including an explicit alternative: for Sketcher::SketchObject it advises 'build these with run_python'. It does not explicitly mention when not to use create_object versus edit/move/delete, but the examples and TypeIds imply the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

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/ahelja/FreeCAD-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server