Limitations
Printer Limitations
- Status depth varies by backend. Bambu status includes progress, layers, and time remaining. OctoPrint status comes from
/api/printer(state and temperatures, not job progress). Klipper status comes from Moonraker's/printer/info, which reports the host state but not job progress or temperatures. Duet, Repetier, and Creality responses have not been verified on hardware. - Cancel, but no pause. There is no pause or resume tool.
cancel_printstops the job. - Plain HTTP for most backends. OctoPrint, Klipper, Duet, Repetier, and Creality adapters connect over
http://. The Prusa adapter uses HTTPS for Prusa Connect, anhttps://host, or port 443. - Klipper and Duet send no credentials. Moonraker must trust the MCP host, and a password-protected Duet cannot be reached yet.
- Command sent is not print finished. A success response means the printer or its host accepted the request. Check status, and the printer itself, before you walk away.
- Bambu prints need a sliced project and the right model.
print_3mfneeds a.3mfwithMetadata/plate_<n>.gcode, uploads it tocache/, and starts plate 1. Print settings such as layer height and temperatures cannot be changed at print time.start_printhandles plain.gcodefiles only. - Bambu AMS mapping is simple.
ams_mappingvalues are sorted and padded to five entries; real behavior still depends on firmware, loaded filament, and the project's metadata. For AMS inventory and color matching, see bambu-printer-mcp. - Bambu temperatures go through G-code. Temperature targets are sent as
M104orM140over MQTT, so the printer's firmware and current state decide whether they apply. - Bambu networking assumes a trusted LAN. MQTT and FTPS use the printer's self-signed certificate. Uploads use TLS 1.2 with session reuse; confirmation on the X1C firmware reported in #22 is still outstanding.
- Safety checks read files and reports, not the physical printer. A declared material cannot prove what spool is loaded, and a finished-job report cannot prove the bed is clear, which is why a human confirms. Klipper macro parameters that name a heater are checked, but macro bodies stored on the printer cannot be inspected. On Duet/RepRapFirmware, selecting a tool (
T0) heats it to the temperature already stored on the printer; activation-onlyM568andM144are refused, but a plain tool change is allowed because every firmware uses it. The safety gate is tested with mocked printer transports and loopback HTTP APIs, plus one real Bambu P1S run that reached the firmware's command check; other printer systems have not been exercised on real hardware in this release. - Remote starts need a download route.
start_printof a file already on the printer works on Bambu Lab, OctoPrint, Klipper, and Duet. Repetier, Prusa, and Creality refuse it; upload the local G-code withprint: trueinstead.
General Limitations and Considerations
Memory usage
- STL tools load the whole mesh into memory as Three.js geometry. Files over about 10 MB can use several hundred MB of RAM.
- Running several operations in a row on large files can build up memory between garbage collection cycles.
- There is no built-in memory cap. On constrained systems, avoid processing several large files at once.
STL manipulation limitations
lay_flatlooks for the largest flat face; results on organic or rounded models can be unpredictable.extend_stl_baseadds new geometry beneath the model. Complex or non-planar undersides can produce gaps or intersections at the join, so inspect the result.merge_verticeswith a large tolerance can change the model's shape. The 0.01 mm default is safe for most models.modify_stl_sectionworks best on simple geometry. Non-manifold meshes (holes, overlapping faces, internal geometry) can produce unexpected results for any transformation; repair them first in your slicer or a mesh tool.
Visualization limitations
generate_stl_visualizationproduces a simplified schematic, not a true 3D render, and very detailed models may lose detail.
Performance considerations
- Slicing can take from seconds to several minutes, depending on the model and your CPU. Slicer runs time out after
SLICER_TIMEOUT_MS(10 minutes by default). - Large uploads depend on your network and the printer's storage speed.
- Bambu MQTT connections are reused. If a printer restarts or the network drops, the next call reconnects.