Skip to main content
Glama
DMontgomery40

MCP 3D Printer Server

slice_stl

Slice STL or 3MF files into G-code or sliced 3MF for 3D printing. Supports Bambu-compatible slicers with precise machine presets and profile inheritance.

Instructions

Slice an STL or 3MF file to generate G-code or a sliced 3MF. For Bambu-compatible CLI slicing (bambustudio, orcaslicer-bambulab, or orcaslicer with bambu_model), the exact bambu_model/nozzle machine preset from the selected slicer installation is required, profile inheritance is resolved before the CLI runs, and the result must contain plate G-code. Failures stop with the slicer's exit status and output.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scaleNoBambu-compatible slicing: uniform scale factor applied before slicing (1.0 = original size).
orientNoBambu-compatible slicing: auto-orient for printability (--orient).
rotateNoBambu-compatible slicing: Z-axis rotation in degrees before slicing.
arrangeNoBambu-compatible slicing: auto-arrange objects on the plate (--arrange). Set false to keep an existing layout.
bed_typeNoBambu-compatible slicing: build plate type (default: BED_TYPE or textured_plate).
min_saveNoBambu-compatible slicing: write a smaller output 3MF (--min-save).
rotate_xNoBambu-compatible slicing: X-axis rotation in degrees before slicing.
rotate_yNoBambu-compatible slicing: Y-axis rotation in degrees before slicing.
stl_pathYesPath to the STL or 3MF file to slice
uptodateNoBambu-compatible slicing: refresh 3MF preset configs to the installed slicer version (--uptodate).
bambu_modelNoBambu Lab printer model. Required for bambustudio and orcaslicer-bambulab (elicited or read from BAMBU_MODEL when omitted); passing it with orcaslicer selects the Bambu-compatible path. The installed slicer must contain the exact model/nozzle preset.
nozzle_typeNoBambu-compatible slicing: the hotend nozzle material installed on the printer (default: BAMBU_NOZZLE_TYPE, else the model preset's stock nozzle, usually stainless_steel; X1C/X1E presets use hardened_steel). Printing compares it with the printer's reported nozzle.
repetitionsNoBambu-compatible slicing: print N identical copies (--repetitions).
slice_plateNoBambu-compatible slicing: plate number to slice; 0 slices all plates (default).
slicer_pathNoPath to the slicer executable (default: value from env). Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1.
slicer_typeNoType of slicer to use (prusaslicer, cura, slic3r, orcaslicer, orcaslicer-bambulab, bambustudio). Use orcaslicer-bambulab for the FULU fork. bambustudio and orcaslicer-bambulab (and orcaslicer with bambu_model) export a sliced 3MF.
skip_objectsNoBambu-compatible slicing: comma-separated object indices to skip, e.g. '3,5,10'.
template_dirNoTemplate directory override when resolving template_name (default: BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates).
clone_objectsNoBambu-compatible slicing: comma-separated clone counts per object index, e.g. '1,3,1,10'.
ensure_on_bedNoBambu-compatible slicing: lower floating models onto the bed (--ensure-on-bed).
template_nameNoNamed template from the local registry (see list_templates); resolves to its file.
allow_mix_tempNoBambu-compatible slicing: allow filaments with different temperature requirements on one plate.
load_filamentsNoBambu-compatible slicing: filament profile JSON paths in slot order, ';'-separated. One profile applies to every project slot; otherwise supply one per slot.
slicer_profileNoProfile to use for slicing (default: SLICER_PROFILE env). Bambu-compatible slicing: one process profile JSON (the machine preset comes from bambu_model). Generic OrcaSlicer: machine/process profiles separated with ';', optionally followed by '|filament.json'.
nozzle_diameterNoNozzle diameter in mm (default: NOZZLE_DIAMETER or 0.4). Selects the '<model> <diameter> nozzle' machine preset.
enable_timelapseNoBambu-compatible slicing: insert timelapse parking moves (--enable-timelapse).
filament_coloursNoBambu-compatible slicing: one #RRGGBB per filament slot, ';'-separated. Defaults to the input 3MF's colours, then each profile's colour.
filament_profileNoFilament profile path(s), ';'-separated in slot order, loaded with --load-filaments (default: FILAMENT_PROFILE/SLICER_FILAMENT_PROFILE env). Alias of load_filaments.
load_filament_idsNoBambu-compatible slicing: comma-separated filament IDs mapping load_filaments to objects, e.g. '1,2,3,1'.
template_3mf_pathNoBambu-compatible slicing: 3MF or profile whose embedded slicer settings are reused as the process profile (default: BAMBU_TEMPLATE_3MF_PATH). An explicit slicer_profile takes precedence.
skip_modified_gcodesNoBambu-compatible slicing: ignore custom G-code embedded in an input 3MF (--skip-modified-gcodes).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.2.9

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose meaningful traits: the exact bambu_model/nozzle preset requirement, profile inheritance ordering, the plate-G-code requirement, and that failures surface the slicer's exit status. It omits, however, where output is written, what is returned, and the behavior of the non-Bambu slicing path.

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 purpose sentence is front-loaded and the remaining text is dense but meaningful, covering the Bambu-specific preconditions in two efficient sentences. No filler or repetition of the schema is present.

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 31-parameter tool with no annotations and no output schema, the description covers the Bambu path well but is thin on the generic path and on return/output destinations. It also never routes the agent between this and the closely related slice_with_template sibling.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 31 parameters and the baseline is 3. The description adds the machine-preset semantics behind bambu_model/nozzle, but no per-parameter syntax beyond what the schema provides.

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

Purpose4/5

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

The first sentence states a specific verb and resource ('Slice an STL or 3MF file') and names the outputs (G-code or sliced 3MF). It does not, however, differentiate itself from the sibling slice_with_template, which an agent would need to distinguish this tool from.

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

Usage Guidelines3/5

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

The description implicitly conditions behavior on slicer type (Bambu-compatible path via bambustudio/orcaslicer-bambulab/orcaslicer+bambu_model), which is useful routing context. But it never states when to choose this tool over slice_with_template or process_and_print_stl, so alternatives are left to inference.

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