Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PYTHONPATHNoOptional 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_FONTNoPath 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_OUTNoThe 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 part values; an unknown key in params is reported explicitly rather than silently ignored. The model is stored in the session and referenced by name from the other tools.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

Seven tools is well-scoped for a model-build-inspect-export workflow; each tool covers a distinct stage and none feels redundant or padded.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues