Bambu-Specific Tools
These tools work with PRINTER_TYPE=bambu (or type: "bambu"). Set up LAN Only Mode, the serial number, the access code, and the model as described in Bambu Lab setup.
list_3mf_plates
List a designer's 3MF plates as Bambu Studio shows them when the file is opened, before slicing. A downloaded kit's six plates are six plates here too. For each plate it gives index (from 0, so slice_stl's slice_plate is index + 1), name, the objects on it, and sliced (whether the file already holds its G-code). It also gives plate_count and the file's title, designer and licence when they're set. A plain 3MF with no plate metadata is one plate. include_thumbnails adds each plate's own preview from the file. Read-only.
{ "three_mf_path": "/Users/yourname/Downloads/kit.3mf", "include_thumbnails": true }inspect_print_file
Inspect a local prepared .3mf or textual .gcode file without connecting to a printer or slicing. Pass file_path and an explicit bambu_model; optional plate_index is zero-based (default 0), nozzle_diameters contains one or two supported sizes, and bed_type checks the file's declared plate type.
The version-1 receipt identifies the exact private snapshot by SHA-256, byte length and format, records the selected plate/model, and includes the existing file inspector's material, nozzle and peak-temperature evidence. evidence: "file-only" and dispatch_authorized: false are deliberate: this does not establish current hardware readiness or authorize a print. Unsliced projects, missing plates, unsafe temperatures and mismatched metadata reject. Actual printing still performs its existing checks and human confirmation.
print_3mf
plate_index selects the same zero-based plate for file checks and dispatch (default 0). If that plate needs slicing, the slicer receives its one-based plate number.
Upload a sliced .3mf project to a Bambu printer over FTPS and start it with an MQTT project_file command that carries the plate's G-code path, its MD5, the AMS mapping, and the calibration flags, or print it through FULU's BambuNetwork bridge (connection_mode: "bambu_network"). bambu_model is required (or BAMBU_MODEL); without it the server asks through MCP elicitation when the client supports it, or returns an error. The wrong model can crash the bed into the nozzle.
Before anything is uploaded, the server inspects a private copy of the selected plate (model, nozzle, bed type, materials, and every heater target). It checks them against per-model hardware limits, material ceilings, and a fresh MQTT report of the printer's model, serial, nozzle, state, errors, and loaded filament. The report is read again before upload and again before dispatch.
{
"three_mf_path": "/path/to/bracket.gcode.3mf",
"bambu_model": "p1s",
"bed_type": "textured_plate",
"use_ams": true,
"ams_slots": [2],
"bed_leveling": true,
"flow_calibration": true,
"vibration_calibration": true,
"layer_inspect": true,
"timelapse": false
}- If the project has no plate G-code, the server tries to auto-slice it with FULU OrcaSlicer-bambulab or Bambu Studio. If slicing fails, or the selected plate still has no G-code, it stops with an error and never uploads the original project.
ams_slotsnames one absolute tray per used filament, in plate order:[2]prints a one-filament plate from AMS 0 slot 2,254is the external spool (on dual-nozzle printers254left,255right). It is expanded to the project-levelams_mappingfrom the plate'sfilament_idsand the G-code header, and must name exactly one tray per used filament.ams_mappingis the raw project-level array (position = project filament, value = tray,-1unused), or an object of trays keyed by project filament index. When neither is given, the mapping embedded in the 3MF is used; with no mapping at all, the print runs from the external spool.use_ams: falsemaps every used filament to the external spool. Each mapped tray's material is checked against the file in the fresh printer report.connection_modeandconnection_typechoose the route (defaultBAMBU_DEFAULT_CONNECTION_MODEandBAMBU_DEFAULT_CONNECTION_TYPE; see FULU's BambuNetwork route). The bridge route sends Bambu Studio'sams_mapping,ams_mapping2andams_mapping_infoand the Send dialog's calibration options as Bambu Studio resolves them.- After sending the command, the server watches fresh reports for up to 15 seconds (
BAMBU_DISPATCH_CHECK_MS) and returnsdispatch: "started"or"unconfirmed". If the firmware refuses the command (HMS 0500-0500-0001-0007 on firmware 01.08.05 and later without Developer Mode), the call fails and says so; the checked file stays on the printer's storage. nozzle_type(stainless_steel,hardened_steel,tungsten_carbide,brass) sets the installed nozzle when the project must be auto-sliced. The job's nozzle type must match the printer's report.bed_typeis one oftextured_plate,cool_plate,engineering_plate,hot_plate, orsupertack_plate(defaultBED_TYPE, elsetextured_plate). It must match the plate's bed metadata, so a file sliced for another plate, or without bed metadata, is refused untilbed_typematches.nozzle_diameteraccepts 0.2, 0.4, 0.6, or 0.8 (defaultNOZZLE_DIAMETERor 0.4).- Calibration flags default to on (timelapse to off) when omitted.
layer_height,nozzle_temperature,bed_temperature, andsupport_enabledare accepted but not applied: those settings are baked into the sliced file. Change them in the slicer.- A success response means the command was sent, not that the print started cleanly. Check the printer's status afterward.
check_fulu_orca_setup
Inspect a FULU OrcaSlicer-bambulab install: the executable, the platform runtime payload, the install and verify commands, and optionally a BambuNetwork bridge handshake. Paths default to the server environment; see checking the setup.
{
"platform": "darwin",
"run_bridge_probe": true
}bridge_command, and slicer_path, plugin_dir, or runtime_dir with run_bridge_probe: true, require MCP_ALLOW_EXECUTABLE_ARG=1.
fulu_bambu_network_rpc
Call one FULU BambuNetwork bridge method for diagnostics. Read-only methods such as bridge.handshake, bridge.runtime_info, and net.get_user_print_info are allowed by default. Agent and session setup methods require allow_mutating_method: true. Raw print methods (such as net.start_print), printer messages (net.send_message), file transfers, and unknown methods are refused, because they would bypass the print safety gate; print with print_3mf. bambu_model is informational only. See bridge RPC.
{
"method": "bridge.handshake"
}The bridge command comes from FULU_BAMBU_BRIDGE_COMMAND; a per-call bridge_command requires MCP_ALLOW_EXECUTABLE_ARG=1.
counterpart_print_route
Read or change how this server reaches a Bambu printer for prints and for Stop, Pause and Resume, with the same contract as bambu-printer-mcp's. route is lan (the local network: direct LAN MQTT/FTPS, or FULU's authenticated LAN session when the mode is bambu_network) or cloud (Bambu Cloud through FULU's bridge). Pass route to change it: the next print and control use it at once, and it is saved to the .env file in the server's working directory when that file exists. Sends nothing to the printer.
{ "route": "lan", "mode": "bambu_network", "type": "lan", "choices": ["lan", "cloud"], "savedTo": "/path/to/.env" }