Local-first MCP server for modifying 3D models and handing them to Bambu Studio.
Server has 10 well-named tools with consistent verb-noun patterns (inspect_, repair_, cut_, split_, scale_, punch_, mirror_, rotate_, open_). All tools have descriptions (avg ~120 chars, within baseline 34-392). Input schemas are present with typed parameters. However, parameter descriptions are sparse or missing for many inputs (e.g., punch_hole's at_width_mm, at_depth_mm, at_height_mm lack detail on when they're required). Output schemas are not documented, callers cannot predict return structure. Error handling is absent from visible code; no guidance on recovery paths. Security checks (path traversal, file validation) not evident in server.py. Composition is sound: each tool does one thing, but no batch variants offered.
Cut a model in two along width/depth/height at position_mm from the model's minimum, capping both cut faces; each part is written as its own STL, laid cut-face-down unless orient_flat is false.
Inspect an STL or 3MF model for dimensions, mesh health, and Bambu printer fit.
Mirror a model across the plane perpendicular to width/depth/height through its center; writes a new derived STL (the original is untouched).
Open one or more model files (STL or 3MF) in Bambu Studio on this Mac, ready to slice and print.
Punch a cylindrical hole along width/depth/height. Give the hole's center via the two position parameters perpendicular to the axis (mm from the model's minimum). Through hole by default; hole_depth_mm drills from the axis maximum.
Repair a model locally without overwriting the original; output is a new STL.
Output schemas not documented. Tools return .model_dump() but callers cannot predict field names, types, or structure. LLMs cannot plan downstream operations or extract required data.
punch_hole parameter dependencies undocumented. at_width_mm, at_depth_mm, at_height_mm are conditionally required based on axis value, but descriptions do not state which combinations are valid. LLMs will guess and fail.
No error handling or recovery guidance visible. Tools call core functions but do not catch exceptions, validate inputs, or return actionable error messages. LLMs cannot self-correct on invalid axis, negative scale factors, or missing files.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Rotate a model around the width/depth/height axis through its center by degrees, then rest it on the bed (min height at zero).
Scale a model uniformly by a factor; writes a new derived STL.
Scale a model so the given axis (width, depth, or height) hits target_mm.
Split a multi-part model into its connected components, one STL per part.
Parameter constraints not enforced or documented. axis accepts 'width|depth|height' but no enum constraint visible; factor and diameter_mm accept any float but no min/max bounds stated. LLMs may pass invalid values.
No input validation for file paths. Tools accept file_path as string but do not check for path traversal, symlink attacks, or unsupported file types. Security risk if agent is compromised.