mcp-printable
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| blender_get_scene_infoA | Get a summary of all objects in the Blender scene: names, types, dimensions, vertex counts. |
| blender_get_object_infoA | Get detailed info about a specific object: dimensions, mesh stats, modifiers, materials, manifold check. object_name: the object to inspect. ( |
| blender_clear_sceneA | Remove all objects from the scene. Refuses to wipe a non-empty scene unless force=True. Default behavior protects in-progress user work — if the scene already has
objects, this tool returns an error listing them and asks the agent to
confirm intent. Pass |
| blender_restore_checkpointA | Restore the scene from the auto-saved checkpoint — the undo button for a destroyed mesh. A checkpoint is saved automatically before every blender_boolean and blender_execute_code call, so this rolls back to the state just before the most recent mutating operation. Replaces ALL current scene objects. Use immediately after a DEGENERATE RESULT warning or a botched edit — a subsequent mutating call overwrites the checkpoint with the broken state. |
| blender_rename_objectA | Rename an object (e.g., 'Cylinder.001' -> 'hinge_barrel'). |
| blender_booleanA | Boolean op on two meshes with built-in connectivity + manifold checks. Always prefer this over raw modifiers in execute_code. operation: DIFFERENCE | UNION | INTERSECT. solver: EXACT (reliable) | FAST. use_self (EXACT only): classify self-intersecting operands via winding numbers. Set True when an operand contains multiple overlapping shells (multi-shell meshes) — without it the EXACT solver can silently annihilate the target (an ANNIHILATION warning in the result flags this). Slower; default False. use_hole_tolerant (EXACT only): better results when operands have holes (non-watertight geometry). Slower; default False. Returns face counts, connected components, warnings. A WARNING means the boolean may have silently failed — inspect the numbers and re-run. |
| blender_execute_codeA | Run Python in Blender (bpy, bmesh, mathutils, math available). Set For boolean ops use |
| blender_get_screenshotA | Single screenshot from a custom camera angle. Use when render_tiled's 4 fixed views miss what you need. elevation: deg above horizontal (0=side, 90=top, negative=below). azimuth: deg rotation (0=front, 90=right, 180=back). focus_object + isolate: frame and isolate one part for a clean detail view. |
| blender_render_tiledA | 4-angle labeled grid render — your primary feedback tool after every modeling step. Default views: iso/front/right/top. Available: iso, front, back, right, left, top. Use focus_object (+isolate) to zoom into a specific part. Follow up with cross_section_gallery if internal geometry needs verification. |
| blender_render_turntableA | N-angle turntable around one object. Use for cylindrical geometry (barrels, pins) where 4 fixed angles miss details. steps=8 → every 45°, steps=12 → every 30°. elevation in degrees (negative=below). |
| blender_cross_sectionA | Cut and render the exposed internal face. Use to verify internal geometry that renders can't show: pin holes, wall thickness, knuckle interleave, clearance gaps. percent: 0-100, position along the chosen axis (50 = middle). object_names: cut multiple objects with the same plane and render them together. Essential for verifying chain joints, ball-in-socket captivity, or any pair where parts wrap around each other. Provide exactly one of object_name OR object_names — sending both raises ValueError to avoid silent precedence bugs. |
| blender_cross_section_galleryA | Grid of cross-sections at multiple positions along one or more axes. The only way to verify complex internal geometry (knuckle interleave, pin holes, socket bores). Default: all 3 axes × [10, 30, 50, 70, 90]%. X-axis slices are usually most informative for hinges. object_names: cut multiple objects with the same planes and render each tile with all of them. Use for chain joints / mating-part captivity verification. Provide exactly one of object_name OR object_names — sending both raises ValueError to avoid silent precedence bugs. |
| blender_render_printability_heatmapA | Render the object with faces colored by printability issues. Red = overhang, Yellow = thin wall, Green = OK. Returns a multi-angle tiled image plus issue counts. |
| blender_render_with_dimensionsA | Render the scene with bounding box dimension data for each object. Returns an isometric render plus dimension measurements for each object. |
| blender_render_before_afterA | Capture before/after screenshots around a modeling operation. Provide the bpy code to execute between captures. Returns a side-by-side comparison. |
| blender_check_intersectionA | Check if two meshes physically overlap. Use after assembly — separate parts should NEVER volumetrically overlap (would mean a boolean went wrong, or parts were placed too close). Distinct from clearance (which measures distance between non-touching objects). Returns contact_type: NONE | SURFACE_CONTACT (coincident faces, expected for flush-fit assemblies) | VOLUMETRIC_OVERLAP (parts share volume and will fuse), plus overlap_volume_mm3, contact_area_mm2 (half the intersection mesh's surface area — the contact patch), mean_penetration_um (overlap volume spread over the contact area — micron-scale means flush contact / float dust, tens of microns or more means real penetration; use it to judge borderline cases yourself), and the raw face-pair count. |
| blender_check_retentionA | Verify a moving part is captive by translating it direction: '+X'/'-X'/'+Y'/'-Y'/'+Z'/'-Z'. Use for: car body on axles, ball in socket, hinge pin in barrel. |
| blender_check_clearanceB | Minimum gap between two objects. Default 0.3mm is typical FDM print-in-place clearance — below this, parts fuse. |
| blender_check_clearance_sweepA | Rotate inner_object through 360° and check clearance at each step. MANDATORY for any joint, hinge, or articulating mechanism. A hinge that looks fine at 0° may collide at 90°. Returns worst-case clearance and the angle where it occurs. passes=False → the joint WILL fuse during printing. |
| blender_validateA | Run specified printability checks on a mesh. Valid checks: 'ALL', 'HEALTH', 'OVERHANGS', 'THIN_WALLS', 'CLEARANCE'. Replaces individual mesh_health, overhang, and thin_wall checks. Use checks=['ALL'] to run the full printability suite before STL export. Set clearance_partners to check clearance against named neighbors. Per-face issue lists are capped at 10 exemplars; pass verbose=True for the full lists (can be very large on dense meshes). |
| blender_export_stlA | Export mesh(es) to a single STL for 3D printing. Warns about non-manifold edges. With no object args: exports ALL mesh objects bundled into one STL (most common for printing). Use object_name for one part, object_names=[...] for a specific bundle. Relative paths resolve against the MCP server's cwd, not Blender's (which is its install dir, read-only on Windows). |
| blender_import_stlB | Import an STL file into the scene. Relative paths are resolved against the MCP server's working directory. |
| blender_save_blendA | Save the current scene as a .blend file. If path is omitted, saves to the current file or a temp location. Relative paths are resolved against the MCP server's working directory. |
| blender_version_infoA | Report the MCP server version vs. the installed Blender addon version. The server auto-updates from PyPI, but the addon is a copy inside Blender's addons dir that only updates via 'python install.py' + Blender restart — use this to diagnose stale-addon behavior. Addons older than 0.2.3 don't report a version and show as unknown. |
| scad_compileA | Compile OpenSCAD code to STL via CGAL. Always follow with output_path: relative paths resolve against MCP server cwd (so |
| scad_render_viewsA | Render multiple labeled views of an OpenSCAD model into a grid image. Default views: iso, front, right, top. Set |
| scad_cross_sectionA | Slice the model with a thin slab and render the cut. The only reliable way to verify internal geometry (clearances, hollows, joints). percent: 0-100 along the chosen axis (mapped onto the model's actual bounds). slab_thickness in model units. Compiles the code to STL first, so expect CGAL render time on heavy models. |
| scad_validate_printabilityA | Watertight / manifold / volume / overhang checks on an STL via trimesh. Run after every PASS/WARN/FAIL verdict + structured report. |
| scad_import_stlA | Return an OpenSCAD snippet that imports the given STL — for Blender→SCAD handoff or further parametric modification. Returned snippet includes a NOTE about the --render-mode path caveat. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Print-in-Place Design (FDM, backend-agnostic) | Cardinal print-path rule, clearance values, ball-socket/hinge/snap-fit patterns, validation checklist. READ FIRST for any moving-parts mechanism. |
| Blender Design Loop | Plan→build→verify→validate→export workflow, boolean rules, unit safety, visual feedback hierarchy, common failure modes. |
| Blender: Image Displacement to Printable Relief | Turn a 2D image into raised printable 3D relief on a Blender primitive. PIL preprocessing, displace modifier setup, calibration table. |
| Blender App Control | How to launch, restart, kill, and run multiple Blender instances for the Printable MCP. |
| OpenSCAD Backend Reference | Setup, tool reference, validator details, cross-backend handoff, and always-on rules for the OpenSCAD backend (scad_* tools). |
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/AaronGoldsmith/mcp-printable'
If you have feedback or need assistance with the MCP directory API, please join our Discord server