Features
- Seven printer backends, selected with
PRINTER_TYPE: OctoPrint, Klipper (Moonraker), Duet, Repetier-Server, Bambu Lab, PrusaLink or Prusa Connect, and Creality - Per-call
type,host,port, andapi_keyarguments for working with more than one printer - Printer status, file listing, G-code upload from inline content or a local path, starting a stored file, pausing, resuming, cancelling a job, and setting bed or nozzle temperatures
- The
counterpart/1tools shared with bambu-printer-mcp: one progress shape for every firmware (state, job, progress, time left, layers, temperatures, problems), detected printer capabilities, camera snapshots, and the loaded filament (Spoolman on Moonraker) counterpart_printer_inforeportscapabilities.slicing(supports,copies,orient) for the slicer route this server uses for that printer (for a Bambu printer on OrcaSlicer, when the call passes itsbambu_model), so a client can offer those choices without knowing the slicer.counterpart_discover_printersfinds printers on the local network without contacting them: Bambu Lab printers from their own SSDP announcements (serial,bambu_modelvalue, name, firmware), and OctoPrint, Klipper (Moonraker) and PrusaLink hosts from their Bonjour adverts (dns-sdon macOS,avahi-browseon Linux)counterpart_setup_fieldslists everyPRINTER_TYPEthis server drives and the.envsettings it reads for each (field role, variable, label, hint, required, the Bambu model choices and the model each serial prefix names, andcameraSnapshot: whethercamera_snapshotreads the printer's camera with only those settings,falsefor every kind here), so a client can offer printer setup without printer tables of its own, and the slicer it would run (type, path, whether it is there, and the Bambu profiles folder) with theSLICER_TYPE,SLICER_PATHandBAMBU_PROFILES_ROOTfields, required only when what they default to is missingcounterpart_propose_filamentsproposes which loaded spool prints each of a model's colours before slicing: nearest OKLab colour with the asked-for material preferred, one feed per print (the AMS or the external spool), averdictand a person-readablenoteper part ("White isn't loaded. Closest loaded: A2 Sunflower Yellow PLA Basic."), each spool'slabel,nameand slicerprofile, and, with the person'schosenspools, a check against what is loaded now and the fullmappingincluding painted slotsget_printer_filamentsslots carrylabel("A2", "External", "Spool") and anamea person reads (Bambu: Bambu Studio's colour name and the product, "Sunflower Yellow PLA Basic")- Errors carry their details in
structuredContent(status,retryable,suggestion,message); a printer refusal onprint_3mfalso carries a stablecode:printer-command-rejected,printer-not-ready, orprinter-upload-failedwhen the file didn't reach the printer and no print command was sent, so a client can act on the code instead of the wording. A Bambuprint_3mfcall made with a progress token reports its LAN upload as MCP progress:progressis bytes sent,totalthe file's bytes, and_meta["counterpart/stage"]is"upload", at most once per whole percent. - STL tools: inspect dimensions, scale, rotate, translate, extend the base, merge vertices, center, lay flat, transform one section of a model, and render multi-angle SVG previews
- A print and heating safety gate on every backend: the exact G-code is inspected, every heater target is checked against hardware and material ceilings, and the printer's state is checked. There is no confirmation prompt and no bed check: your client's own print action is the approval. Heater-off, pause, and cancel are never gated; resume only continues a paused job this server inspected and started, and asks a person only when the printer cannot hand the file back for re-reading
- Slicing through PrusaSlicer, Slic3r, OrcaSlicer, CuraEngine, FULU OrcaSlicer-bambulab, or Bambu Studio command lines, with G-code peak-temperature checks and a one-call process-and-print pipeline
- Bambu-compatible CLI slicing with the exact model and nozzle machine preset resolved from your slicer installation, filament slots and colours, placement options, and a local template registry
- Bambu Lab project printing: upload a sliced
.3mfover FTPS and start it over MQTT with the plate's G-code path, MD5, AMS mapping (ams_slots, one tray per used filament), and calibration flags, after checking the plate against a fresh printer report; or print through FULU's authenticated BambuNetwork route. Auto-slice unsliced projects with FULU OrcaSlicer-bambulab or Bambu Studio - Bambu AMS inventory (
get_printer_filaments), pause, resume and stop over the connection that printed - Required Bambu printer model for print operations, asked for through MCP elicitation when missing
- FULU OrcaSlicer-bambulab setup inspection and diagnostic BambuNetwork bridge RPC, with raw print methods refused
- Optional Blender MCP bridge: discover a standard Blender MCP server's tools, forward calls, export named scene objects to a verified STL, and run verified STL edits
- Optional Autodesk Fusion bridge through the pinned faust-machines Fusion MCP server: check Fusion and its add-in, forward any of its CAD tools, start a parametric design, and export STL, F3D and parameters with verified output
- Slicer, bridge, and Blender executables come from server configuration unless you explicitly opt in to per-call selectors
- MCP resources for printer status, files, and file details
- Transports: stdio (default) and streamable HTTP, plus a Docker image