cad-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PYTHONPATH | No | Optional path to the source tree, used to run the server straight out of a checkout without an editable install (e.g. /absolute/path/to/cad-mcp/src). | |
| CADMCP_FONT | No | Path to a font file to use for rendered labels, useful when CJK glyphs are needed (e.g. C:\Windows\Fonts\msyh.ttc). Optional; the server otherwise resolves a system CJK font automatically. | |
| CAD_MCP_OUT | No | The output directory where everything the server writes (STL, OBJ, PNG, GIF) lands. This is the only knob; it is optional and defaults to ./out. | ./out |
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_partsA | List the built-in parametric parts and their tunable parameters (with defaults and types). Call this before modelling to get the exact parameter names -- guessing one raises unknown_parameter. |
| make_partB | Build a part from the built-in parametric library (gear / vase / torus knot / lattice coupon). Returns a topology verdict. See list_parts for valid |
| make_latticeA | Model free-form geometry with signed distance fields: lattices, porous structures, implicit surfaces. primitive: sphere / box / rounded_box / gyroid / schwarz_p. size_mm: the part's bounding box in mm. A single number means a cube with that edge length, [x, y, z] an arbitrary box; omit it to use cell_mm as a cube. res: samples per axis -- a precision knob, not a dimension. Start at 64; 128 is fine but 8x slower. The resulting voxel edge (size/res) is reported back. wall_mm: wall thickness for shells and lattices; period_mm: lattice period (defaults to cell_mm). lattice: shell (hollow it out) / gyroid_grading (fill the interior with lattice). subtract: corner_notch / corner_notch2 (cut a corner away to expose the interior). |
| check_meshA | Geometrically inspect a model you already built; returns numeric evidence you can use to decide whether it came out right. Includes watertightness, orientation consistency, Euler characteristic, genus, volume, surface area and bounding box. genus tells you whether the hole count is right (a part with one through-hole has genus=1, a solid has genus=0, a lattice coupon is high). It is a topological invariant, which makes it far more reliable than "looks about right". slices: z heights in mm to also measure cross-section areas; wall_samples>0 samples the minimum wall thickness. |
| look_at_meshB | Render the model and return the image directly to you -- this is the core of self-verification. The render comes back as image content, so you can actually see what you built and decide what to change. views: 'four' (a 2x2 montage; start here) / 'single' (one viewpoint) / 'grid' (six). turntable_frames>0 also writes a turntable GIF for the human, and returns its path. Returns [image, ...] followed by a JSON summary -- the image always comes first. |
| export_meshA | Export the model as files for downstream tools: STL (printing / slicing), OBJ+MTL (DCC). Defaults to both STL and OBJ. There is a hard gate before anything is written: structural damage -- non-manifold edges, non-positive volume, NaN vertices, a fragmented shell -- is refused, because such a mesh punches holes in a slicer or errors out. Watertightness only warns (some shapes are meant to be open). Pass force=True to override. |
| describe_modelB | Full information about a model you built: parameters, topology, bounding box, files. Use it mid-session to recall which parameters this model was actually built from. |
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 7 tools
The three build/inspect verbs are well-separated: make_part (library parts) vs make_lattice (free-form SDF) vs list_parts (discovery). check_mesh, look_at_mesh, and describe_model overlap somewhat (all report topology/bbox), but their descriptions clearly split numeric evidence, visual rendering, and parameter recall.
Nearly all names follow a verb_object snake_case pattern (list_parts, make_part, check_mesh, export_mesh, describe_model). The sole deviation is look_at_mesh, which inserts a preposition but remains easily readable.
Seven tools is well-scoped for a model-build-inspect-export workflow; each tool covers a distinct stage and none feels redundant or padded.
Covers discovery, two build paths, numeric and visual verification, export, and parameter recall. Minor gaps: no delete_model, no list_models to enumerate session models, and no pure edit/parameter-update tool, though rebuilding via make_part/make_lattice can work around these.