Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BED_TYPENoBed plate type: textured_plate, cool_plate, engineering_plate, hot_platetextured_plate
TEMP_DIRNoDirectory for intermediate files. Created automatically if absent../temp
BAMBU_MODELYesYour printer model: p1s, p1p, x1c, x1e, a1, a1mini, h2d. Required for safe operation to determine correct G-code generation.
BAMBU_TOKENYesLAN access token from printer touchscreen (Access Code)
SLICER_PATHNoFull path to the slicer executable (defaults to macOS path for BambuStudio if not set)
SLICER_TYPENoSlicer to use for slicing operations (bambustudio, prusaslicer, orcaslicer, cura, or slic3r)bambustudio
BAMBU_SERIALYesPrinter serial number (e.g., 01P00A123456789)
PRINTER_HOSTYesIP address of your Bambu printer on the local networklocalhost
MCP_HTTP_HOSTNoHTTP bind address (only used when MCP_TRANSPORT=streamable-http)127.0.0.1
MCP_HTTP_PATHNoHTTP endpoint path (only used when MCP_TRANSPORT=streamable-http)/mcp
MCP_HTTP_PORTNoHTTP port (only used when MCP_TRANSPORT=streamable-http)3000
MCP_TRANSPORTNoTransport mode: stdio or streamable-httpstdio
SLICER_PROFILENoOptional: path to a slicer profile/config file
NOZZLE_DIAMETERNoNozzle diameter in mm (used to select the correct machine preset)0.4
MCP_HTTP_STATEFULNoEnable stateful HTTP sessions (only used when MCP_TRANSPORT=streamable-http)true
MCP_HTTP_JSON_RESPONSENoReturn structured JSON alongside text responses (only used when MCP_TRANSPORT=streamable-http)true
MCP_HTTP_ALLOWED_ORIGINSNoComma-separated list of allowed CORS origins (only used when MCP_TRANSPORT=streamable-http)
BLENDER_MCP_BRIDGE_COMMANDNoShell command to invoke your Blender MCP bridge executable

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

When designing or editing a model to print, apply the fdm_design prompt and the fdm_slicing prompt. Add fdm_fit whenever a part meets a real object or another part, to choose each fit by what that interface has to do. Add fdm_flexures whenever a part must flex, grip, snap, clip, spring, or hold something by bending. Add fdm_multicolor when several colours or support materials share a print, fdm_assembly when a split, joint or printed fastener could help, and fdm_after_slice as a separate review turn after a candidate has been sliced, before presenting the manufacturing recommendation. Read guidance://fdm/capability-guidance when a bridge or overhang is consequential and there is no sufficiently specific measured capability available. Read guidance://fdm/fit-by-function for the same fit guidance as the fdm_fit prompt, in resource form. A worker that has tools but not prompts reads the same guidance with the design_guidance tool (fdm_fit, fdm_flexures, fdm_assembly, fdm_multicolor, fdm_after_slice, fdm_capability). When monitoring a print, firmware layer counters do not verify deposition. Follow physical.assessment requests at the first layer and later checkpoints: fetch counterpart_print_record with frame_format images, inspect the expected footprint with the client vision worker, then submit counterpart_print_assess. A clear empty footprint after attempted printing is suspect_no_extrusion; no baseline is required for that direct observation. Dark/occluded/unlocatable views are unknown. Never announce a first layer is down from counters alone. Do not stop or pause automatically. For headless dimensioned designs and parameter edits, read the cad_design prompt before using cad_run.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}
prompts
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_printer_statusC

Get the current status of the Bambu Lab printer

get_printer_filamentsB

Get the live AMS/external filament inventory from the printer over MQTT, including loaded/empty slot summary, resolved slicer profile paths, match confidence, and recommended load_filaments when the printer model is known.

resolve_3mf_ams_slotsA

Inspect a sliced 3MF and match its tray_info_idx filament requirements against the live AMS inventory. Does not upload or start a print.

list_3mf_platesA

List a Bambu Studio or OrcaSlicer 3MF's plates as its designer laid them out, before slicing: plate_count, and for each plate its index (from 0; slice_stl's slice_plate is index + 1, inspect_print_file's plate_index is index), name, the objects on it, each object copy's identify_id (instances: the ids slice_stl's skip_objects takes) whether the file already holds its G-code (sliced), and filaments: the project filaments that plate prints with and only those (index from 1 = slice_stl's load_filaments/filament_colours position and print_3mf's ams_mapping position + 1; colour, material, filament_id, and the first part using it), from the slice when there is one, otherwise worked out as Bambu Studio does from the plate's parts, painting, support, layer ranges and tool changes. filaments_complete is false when a part's mesh was too large to read its painting: that plate then lists every declared filament, so offer them all rather than miss one that prints. project_filaments lists every filament the project declares, used or not (slice_stl takes one load_filaments profile per declared filament). build_items: the root 3D/3dmodel.model build items on the plate (0-based, build order); parts: each model part of the plate's objects once, with object_id (the mesh object), path when that mesh is in another model part (p:path), build_object_id (the root object a build item places), name, filament (1-based) and painted: true when slicer painting recolours some facets; draw a plate from these with the 3MF's own meshes. A plain 3MF without plate metadata is one plate. include_thumbnails adds each plate's own preview from the file (thumbnail_png_base64). Read-only.

list_3mf_plate_objectsA

List the objects of a sliced 3MF plate that the printer can skip, one per copy, as Bambu Studio's skip dialog lists them: identify_id (id), name, whether it is already skipped, and labelObjectEnabled (the plate was sliced with object labels, which skipping needs). Use these ids with skip_objects during a running print.

extend_stl_baseB

Extend the base of an STL file by a specified amount

scale_stlC

Scale an STL file by specified factors

rotate_stlB

Rotate an STL file by specified angles (degrees)

get_stl_infoA

Get detailed information about an STL file (bounding box, face count, dimensions)

list_templatesB

List saved slicing templates from the local template registry directory.

save_templateB

Copy a 3MF, JSON, or config file into the local template registry and register it under a template name.

get_slice_settingsB

Inspect slicer settings from a saved 3MF template or a JSON/config slicer profile without slicing anything. For a 3MF given as source_path, own_process is true when slice_stl, given this call's other arguments as it would take them (slicer_profile, template_name, template_3mf_path, layer_height, wall_loops, sparse_infill_density, quality, strength), prints the process the file carries (a designer's Bambu Studio or Orca project) unchanged. A 3MF with no slicer settings reports raw_key_count 0; a file that can't be read is an error.

slice_with_templateA

Slice an STL or 3MF using a named template from the local registry. This is a higher-level wrapper around slice_stl for template-based workflows.

slice_stlA

Slice an STL or 3MF file using a slicer to generate printable G-code or sliced 3MF. IMPORTANT: bambu_model must be specified to ensure the slicer generates safe G-code for the correct printer. The text result is the sliced file's path. When Bambu Studio or OrcaSlicer writes a result.json, structuredContent.slicer_result carries it verbatim, success or error: error_string, return_code and each sliced_plates[].warning_message, such as a floating cantilever. structuredContent.slicer_report says whether it failed; for a failure, its message is a plain sentence for a person and slicer_message keeps the slicer's words, which a failed slice's text gives after that sentence. A 3MF that carries its own process settings (a designer's Bambu Studio or Orca project) slices with them unless slicer_profile, template_name or template_3mf_path is given; the machine still comes from bambu_model. quality and strength adjust that process, and strength never lowers its walls or infill.

list_printer_filesC

List files stored on the Bambu Lab printer

bambu_connect_import_fileA

Open an existing G-code or sliced 3MF file in the signed-in Bambu Connect app through its official URL scheme. This is a cloud-mode handoff and does not start printing by itself.

bambu_network_bridge_statusC

Inspect or probe the FULU OrcaSlicer-bambulab BambuNetwork bridge runtime used for cloud and restored BambuNetwork printing.

bambu_network_callC

Call a raw FULU OrcaSlicer-bambulab BambuNetwork bridge method, optionally with an initialized network agent injected into the payload.

print_3mf_bambu_networkA

Print a 3MF through FULU OrcaSlicer-bambulab's restored BambuNetwork path instead of the MCP LAN MQTT/FTPS path.

camera_stream_startA

Start or renew one persistent camera connection for this printer. Call only while watched; it closes automatically after idle_timeout_ms without a viewer request. camera_snapshot then reuses its latest frame. No printer motion or print commands.

camera_frameA

Read the shared camera stream, optionally waiting up to 10 seconds. Returns JPEG only when newer than since_seq and visibly changed (32×18 grayscale difference). Retain the last delivered frame's seq on unchanged. max_width resizes JPEG to the viewer. Does not start a stopped stream.

camera_stream_stopA

Close this printer's camera connection and free its cached frames. Other printers keep their own streams. Active viewers may restart it; normally let the idle timeout close a shared stream.

camera_snapshotA

Capture a single JPEG frame from the printer's chamber camera. A1/P1 use TCP-on-6000; X1/P2S/H2/X2D use RTSP via ffmpeg. Returns JPEG as base64; pass save_path to also write the bytes to disk.

delete_printer_fileA

Delete a file from the Bambu Lab printer's SD card via FTPS. Destructive: requires confirm:true. Restricted to cache/, timelapse/, and logs/ directories. Path traversal segments (..) are rejected.

upload_gcodeA

Inspect a G-code file and upload a uniquely named copy without overwriting existing printer files.

upload_fileC

Upload a local file to the Bambu Lab printer

start_printA

Start printing a G-code file already on the Bambu Lab printer. Alias of start_print_job for upstream MCP compatibility.

start_print_jobB

Start printing a G-code file already on the Bambu Lab printer

cancel_printA

Cancel the current print job on the Bambu Lab printer

pause_printA

Pause the current print job on the Bambu Lab printer (resumable via resume_print)

resume_printA

Resume a paused job that this server inspected and started. It re-downloads the job's file over FTPS and compares its SHA-256, asks a person to confirm only when the file could not be re-read, and reads the printer again before sending. A job that was cancelled, ended or replaced is never resumed. Returns jobName and bytesVerified.

x2d_native_controlB

Read calibration results or update X2D AMS metadata/calibration selection through the installed plug-in. Raw motion, heating, task control, and safety-setting changes are rejected.

clear_hms_errorsA

Clear HMS or print error state on the Bambu Lab printer using the clean_print_error MQTT command.

set_print_speedB

Set the active print speed mode: silent, standard, sport, or ludicrous.

set_airduct_modeB

Set H2/P2 airduct mode to cooling or heating.

reread_ams_rfidA

Trigger a Bambu AMS RFID re-read for one AMS slot. X2D on macOS, or Linux with the native helper installed, uses the native official plug-in route. This can move AMS filament; use only when the printer is idle and unloaded.

set_temperatureA

Set a checked bed or nozzle temperature. Positive heating requires matching fresh printer telemetry; nozzle heating also requires declared material. Zero turns the heater off.

set_fan_speedB

Set a Bambu printer fan speed percentage. X2D on macOS, or Linux with the native helper installed, uses Bambu's networking plug-in without UI automation; other models use MQTT.

set_lightA

Set a Bambu printer light node mode using the printer's MQTT LED command

skip_objectsA

Skip specific object IDs during a running multi-object print using the printer's MQTT skip_objects command

set_ams_dryingA

Start or stop the AMS filament drying cycle. X2D on macOS, or Linux with the native helper installed, uses the native official plug-in route and supports AMS-HT id 128.

inspect_print_fileA

Inspect an exact private snapshot of a prepared sliced 3MF or textual G-code file and selected plate without contacting a printer. Returns versioned file-only evidence; no printer readiness or permission to dispatch is established. Does not auto-slice.

print_3mfB

Print a 3MF file on a Bambu Lab printer. Auto-slices if the 3MF has no gcode. IMPORTANT: bambu_model must be specified to ensure safe printer operation.

print_collar_charmB

Print a prepared two-part dog collar charm project using the fixed tray policy: inner/smaller object -> black on AMS 1 slot 1, outer/larger object -> white on AMS 2 slot 1.

merge_verticesC

Merge vertices in an STL file closer than the specified tolerance

center_modelB

Translate the model so its geometric center is at the origin (0,0,0)

lay_flatA

Rotate the model so a face rests on the bed (Z=0), choosing the orientation with the least part and support volume per mm² of bed contact. A face counts only if nothing hangs below it. Returns the new STL path; structuredContent.laid_flat is false, with the input path, when no orientation qualifies.

design_guidanceA

Read one piece of this MCP's design guidance by name: fdm_fit (when a part meets a real object or another part); fdm_flexures (when a part must flex, grip, snap, clip, spring, or hold something by bending); fdm_assembly (when a split, joint, insert or printed thread could improve the result); fdm_multicolor (when several colours or support materials share a print); fdm_after_slice (when a candidate has been sliced, before recommending it); fdm_capability (when a bridge or overhang decides the plan and no measured capability is at hand). The same texts as the prompts of those names, for a worker that has tools but not prompts. Read-only.

cad_statusA

Read the optional code-CAD runtime's readiness and pinned version. Never installs or downloads anything. When only this MCP's own engine files changed since the runtime was last verified (an update) and the installed runtime still matches the pinned lock exactly, it re-runs setup's confined build, STL and STEP round trip (about 15 to 20 seconds) and reports ready; a changed runtime still needs cad_setup with install: true.

cad_setupA

Check the optional confined build123d runtime. With install: true, use uv to install pinned Python/packages in this MCP's data directory and prove a confined build plus STL/STEP round trip. On macOS, the data directory must be on an internal disk with file ownership enabled; external/network volumes are refused before installation. Native signatures are never modified. Never starts Blender, Fusion or a printer.

cad_runA

Build parametric CAD headlessly in OS confinement. Read cad_design first: declare literal P = {...} and build() returning a build123d Shape. Supply script OR script_path; parameters overrides saved named values in one call before derived dimensions. Calls wait for the environment’s exclusive execution slot up to their own deadline and report queue_wait_ms. Each call creates a private immutable subfolder under allowed output_dir, never overwriting previous artifacts. The saved .py and .parameters.json are the recovery checkpoint even after cancellation. Returns independently measured geometry, STL/STEP, six orthographic renders, a perspective view and a contact sheet (with next: read the perspective view before the next change), the closest approach between every pair of solids (bodies), problems, what was checked and not checked, and printed: whatever the script wrote with print(), capped at 4000 characters, so a design can report a number it computed; valid means only that the exported geometry is sound, never that the part fits, holds, moves or prints.

cad_examplesA

The code engine's cookbook: worked build123d designs from simple to complex, each modelled on the best bought version of the thing, with its concept, published sizes and script. Without arguments, lists them by purpose (name, title, use_for: the requests it suits, the pattern it shows, the product it is modelled on): choose by use_for before choosing a mechanism. With name, returns that example's record and full script to adapt. Read-only; starts no process.

cad_check_fitA

Check two allowed watertight manifold STL meshes in millimetres. Applies only the explicit rigid transform to reference: XYZ rotation in degrees about the origin, then translation. Never silently scales a scan. Reports Boolean interference volume and minimum surface gap (zero on contact/intersection), plus a clearance verdict; intentional support contact also has zero gap. Like cad_run, a call waits for the environment's exclusive execution slot up to its timeout_ms and reports queue_wait_ms, so several checks may be sent at once. Fails rather than guessing for open meshes or excessive triangle workload.

blender_mcp_statusA

Inspect Blender MCP configuration or connect and discover the remote server's tools and schemas. Connecting does not edit the scene; use get_scene_info through blender_mcp_call to check the Blender addon.

blender_mcp_callA

Call a discovered tool on the configured Blender MCP server, preserving its full MCP content and errors. Discover tool schemas with blender_mcp_status first; execute_blender_code accepts Python code and user_prompt. Calls can modify the active Blender scene and are never automatically retried.

blender_mcp_edit_modelA

Import, edit, and export a local STL through standard Blender MCP with verified output and existing scene objects preserved. Requires a shared local filesystem and Blender Object Mode. Also supports a separately configured legacy executable bridge.

counterpart_printer_infoA

Counterpart contract (counterpart/1): this server's name and version, the configured Bambu printer, and which progress, layer, camera, filament, pause/resume/cancel and print features it has. Sends nothing to the printer.

counterpart_self_checkA

Counterpart contract (counterpart/1): whether this install's own runtime dependencies and its bundled bambu-node patch loaded, each with its installed version. Run it after an update; ok is false when a check failed, with a message saying which. Sends nothing to the printer.

counterpart_discover_printersA

Counterpart contract (counterpart/1): Bambu printers on the local network, from their own SSDP announcements (UDP 2021), with serial, model (as bambu_model names it), name and firmware. Listens for duration_ms (default 4000). network is "unavailable" when another app holds the port. Never connects to or authenticates with a printer.

counterpart_setup_fieldsB

Counterpart contract (counterpart/1): the printers this server drives and the settings it reads for each, by .env variable name (first canonical, then aliases): label, hint, whether required, the model choices and the model each serial-number prefix names, and whether camera_snapshot reads the printer's camera with only those settings (cameraSnapshot). Pass serial to get the model it names. Sends nothing to a printer and returns no configured values.

counterpart_propose_filamentsA

Counterpart contract (counterpart/1): which loaded AMS spool prints each of a model's colours, before slicing. Reads the live AMS once. trays lists the spools a person may choose (label like "A2", a person-readable name, colour, material, feed). proposal gives each filament its nearest spool in OKLab colour with the asked-for material preferred, and a verdict: same-colour, closest (that colour isn't loaded; note says so), no-colour or none. One print feeds from one source. Pass chosen to check the person's spools against what is loaded now; mapping then lists every filament slot's spool (painted slots included), and problems says why a choice can't print.

counterpart_print_routeA

Counterpart contract (counterpart/1): how this server reaches the printer for prints and for Stop/Pause/Resume. route is "lan" (the local network through FULU's BambuNetwork bridge, or the configured X2D native or Bambu Connect mode), "cloud" (Bambu Cloud through FULU's bridge) or "developer" (the local network straight to a printer in LAN Only + Developer Mode, whose Pause, Resume and Stop need no Bambu app). options lists each with its label, whether it can be chosen here (and why not) and what controls do on it; choices lists the ids that can be chosen. mode and type are BAMBU_DEFAULT_CONNECTION_MODE and BAMBU_DEFAULT_CONNECTION_TYPE as resolved. Pass route to change it: the change applies to the next print and control at once, and is saved to the .env file in this server's working directory when that file exists (savedTo; null otherwise). Sends nothing to the printer.

counterpart_print_recordA

Counterpart contract (counterpart/1): read a bounded persistent per-job flight record from disk, including dispatched SHA-256, selected mapping, timestamped allowlisted printer-report changes, expected sliced layer geometry and sampled camera evidence. Survives restart. No printer connection, polling or controls. Firmware FINISH is separate from physical unknown/consistent/suspect_no_growth/suspect_no_extrusion. Inspect pending visual assessment requests with the client worker; clear empty-footprint observations can flag no extrusion without an empty-bed reference. Missing history is unavailable, never fetched from the printer.

counterpart_print_assessA

Counterpart contract (counterpart/1): save a client vision worker observation against an exact saved job/artifact/frame hash. Local evidence only; no camera request, model call or printer controls. Clear visible empty expected footprint after attempted deposition reports suspect_no_extrusion, even without a usable baseline. Dark/occluded/unknown stays unknown; visible material does not verify success. Persists across restart; repeat observations are idempotent.

counterpart_print_progressA

Counterpart contract (counterpart/1): the printer's state, current job (name, task id, percent, time left, layers, stage words), temperatures, active filament and problems with Bambu's HMS messages and links. Read from the MQTT report this server keeps, so a held session asks the printer nothing; observedAt is when the printer sent it. An unreachable printer reports state offline. Read-only; not a safety check.

counterpart_make_3mfA

Counterpart contract (counterpart/1): combine STL parts exported separately (for example each body of a design) into one new 3MF for multi-colour printing. The parts keep their relative positions as one assembly, and each part prints with its filament number (default: part 1 uses filament 1, part 2 filament 2, and so on). Slice it with slice_stl, passing one load_filaments profile per filament number, then print it with print_3mf and ams_mapping or ams_slots. Never overwrites a file.

blender_mcp_setupA

Check or update the MCP for Blender add-on that the configured Blender bridge (BLENDER_MCP_COMMAND uvx, BLENDER_MCP_ARGS naming mcp-for-blender or blender-mcp) needs. Without update: which add-on file Blender loads, its protocol and the protocol the package expects, whether Blender is listening and the running add-on's own handshake. Changes nothing. With update: true, stages the add-on with the package's own installer (mcp-for-blender install-addon) at the inspected version, checks it, keeps the old file as a backup next to it and renames the new one into place. Never starts, stops or edits Blender; a running Blender uses the new add-on once it is re-enabled or restarted. A custom bridge returns supported false.

fusion_mcp_setupA

Check or install what the Fusion bridge needs on macOS: Autodesk Fusion itself (found, never installed), the Fusion360MCP add-in from DMontgomery40/fusion360-mcp-server at 86a3016a5a5b (every file checked against its pinned SHA-256) set to run on startup, a login item that sets FUSION_MCP_PORT for Fusion however it is opened, and this server's FUSION_MCP_* settings. Without install: reports them and changes nothing. With install: true, installs what is missing and adds the missing settings to this server's own .env (after a copy of it), keeping a configured FUSION_MCP_COMMAND and its arguments. Never starts or quits Fusion; check the connection with fusion_mcp_status.

fusion_mcp_statusA

Check Autodesk Fusion through the configured Fusion MCP server (fusion360-mcp-server, faust-machines or the pinned fork with document binding): whether it is configured, Fusion is running, the Fusion360MCP add-in answers on its port, and the server's tools and schemas. connected is true only when the add-in answers. With launch: true, starts Fusion on macOS when it is not running and waits up to 90 s for the add-in. Configure FUSION_MCP_COMMAND (uvx) and FUSION_MCP_ARGS (["--from","git+https://github.com/DMontgomery40/fusion360-mcp-server@86a3016a5a5b","fusion360-mcp-server","--mode","socket"]), or run fusion_mcp_setup.

fusion_mcp_callA

Call a discovered tool on the configured Fusion MCP server, such as create_sketch, extrude, fillet, create_parameter, set_parameter, check_interference or execute_code, preserving its full MCP content and errors. Discover tool schemas with fusion_mcp_status first. Calls change the open Fusion design and are never automatically retried. Most tools need an open design: call fusion_mcp_new_design first.

fusion_mcp_new_designA

Open a new parametric design document in Fusion (execute_code with app.documents.add(FusionDesignDocumentType)). The Fusion MCP tools work on the open design, so a design pass calls this first.

fusion_mcp_exportA

Export the open Fusion design into an existing directory as .stl (export_stl of one body), .f3d (export_f3d) and .parameters.json (its user parameters), and return their absolute paths. The STL is checked as a finite triangle mesh; slice it like any other model. Fusion must run on this computer, and existing files are never overwritten.

Prompts

Interactive templates invoked by user choice

NameDescription
cad_designMCP-owned rules for headless build123d designs and one-call parameter revisions.
fdm_designPersistent instructions for every design or model-editing task: plan how the object prints as part of the design, using the actual printer, filaments and slice.
fdm_fitAdd whenever a part meets a real object or another part: choose each fit by what that interface has to do, with why filament prints fit the way they do, mechanisms that absorb size uncertainty, and cited starting points. The same text is the fit-by-function resource.
fdm_flexuresAdd whenever a part must flex, grip, snap, clip, spring, or hold something by bending: compliant architectures, strain chosen by duty, material and layer direction, bite, heat and creep.
fdm_multicolorAdd when several colours or support materials share a print: filament transitions, colour placement, plate scheduling and flushing.
fdm_assemblyAdd when a split, accent insert, joint or printed fastener could materially improve the result.
fdm_after_sliceA separate review turn after a candidate has been sliced, before presenting the manufacturing recommendation: keep, revise, or validate one specific uncertainty.
fdm_slicingAdd to every design or model-editing task: how this server's slicer orients a model and generates supports, and how to check a choice with a checkpoint slice.

Resources

Contextual data attached and managed by the client

NameDescription
Bambu Printer StatusCurrent status of the Bambu Lab printer
Bambu Printer FilesList of files on the Bambu Lab printer
Bambu Printer HMS DiagnosticsHMS and error-related fields from the latest printer status
FDM bridge and overhang guidancePlanning bands and evidence for bridges and overhangs, for when one is consequential and there is no sufficiently specific measured capability available
FDM fit by functionHow to choose each fit where a printed part meets a real object or another part: by what the interface has to do, with why filament prints fit the way they do, mechanisms that absorb size uncertainty, and cited starting points

TDQS

B3.1/5.0

Scored across 72 tools

Disambiguation2/5

Several clusters overlap heavily: start_print is explicitly an alias of start_print_job, and print_3mf / print_3mf_bambu_network / print_collar_charm / upload_gcode all dispatch prints; slice_stl vs slice_with_template, upload_file vs upload_gcode, and blender_mcp_call vs blender_mcp_edit_model require careful reading to separate. Descriptions are rich and often disambiguate in prose, but the surface presents many near-duplicate entries (multiple cad_*, counterpart_*, and status tools) that an agent can easily misselect.

Naming Consistency3/5

Most names are snake_case, but the conventions are mixed: verb_noun (slice_stl, start_print, delete_printer_file), noun-first status/info reads (cad_status, get_stl_info, counterpart_printer_info, get_printer_status), and subsystem-prefixed calls (bambu_connect_import_file, blender_mcp_*, fusion_mcp_*). Prefixes like get_ are applied inconsistently, so the pattern is readable but not predictable.

Tool Count1/5

72 tools is a severe mismatch for a printer MCP; the server has absorbed slicing, STL editing, code-CAD, Blender, Fusion, camera streaming, AMS inventory and a counterpart contract layer into one surface. Individual capabilities could each be their own server, and the sheer volume makes discovery and correct selection costly.

Completeness4/5

Coverage is broad across the printer lifecycle — discovery, status, AMS/filament, slicing, upload, print start/pause/resume/cancel, camera, HMS clearing, file management — plus CAD and external-bridge workflows. Minor gaps remain (no explicit job queue/history listing beyond per-job records, no generic settings read/write for printer config), but agents can work around them.

Maintenance

ActivityActive
ResponsivenessUsually handled