bambu-printer-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BED_TYPE | No | Bed plate type: textured_plate, cool_plate, engineering_plate, hot_plate | textured_plate |
| TEMP_DIR | No | Directory for intermediate files. Created automatically if absent. | ./temp |
| BAMBU_MODEL | Yes | Your printer model: p1s, p1p, x1c, x1e, a1, a1mini, h2d. Required for safe operation to determine correct G-code generation. | |
| BAMBU_TOKEN | Yes | LAN access token from printer touchscreen (Access Code) | |
| SLICER_PATH | No | Full path to the slicer executable (defaults to macOS path for BambuStudio if not set) | |
| SLICER_TYPE | No | Slicer to use for slicing operations (bambustudio, prusaslicer, orcaslicer, cura, or slic3r) | bambustudio |
| BAMBU_SERIAL | Yes | Printer serial number (e.g., 01P00A123456789) | |
| PRINTER_HOST | Yes | IP address of your Bambu printer on the local network | localhost |
| MCP_HTTP_HOST | No | HTTP bind address (only used when MCP_TRANSPORT=streamable-http) | 127.0.0.1 |
| MCP_HTTP_PATH | No | HTTP endpoint path (only used when MCP_TRANSPORT=streamable-http) | /mcp |
| MCP_HTTP_PORT | No | HTTP port (only used when MCP_TRANSPORT=streamable-http) | 3000 |
| MCP_TRANSPORT | No | Transport mode: stdio or streamable-http | stdio |
| SLICER_PROFILE | No | Optional: path to a slicer profile/config file | |
| NOZZLE_DIAMETER | No | Nozzle diameter in mm (used to select the correct machine preset) | 0.4 |
| MCP_HTTP_STATEFUL | No | Enable stateful HTTP sessions (only used when MCP_TRANSPORT=streamable-http) | true |
| MCP_HTTP_JSON_RESPONSE | No | Return structured JSON alongside text responses (only used when MCP_TRANSPORT=streamable-http) | true |
| MCP_HTTP_ALLOWED_ORIGINS | No | Comma-separated list of allowed CORS origins (only used when MCP_TRANSPORT=streamable-http) | |
| BLENDER_MCP_BRIDGE_COMMAND | No | Shell 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.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_printer_statusC | Get the current status of the Bambu Lab printer |
| get_printer_filamentsA | 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_plate_objectsA | List object IDs from a sliced 3MF plate. Use these IDs with skip_objects during a running print. |
| extend_stl_baseC | Extend the base of an STL file by a specified amount |
| scale_stlB | 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_settingsA | Inspect slicer settings from a saved 3MF template or a JSON/config slicer profile without slicing anything. |
| slice_with_templateB | 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_stlB | 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. |
| 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_networkB | Print a 3MF through FULU OrcaSlicer-bambulab's restored BambuNetwork path instead of the MCP LAN MQTT/FTPS path. |
| 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_gcodeB | 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_printB | 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_printB | 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_printB | Resume a paused print job on the Bambu Lab printer |
| 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_errorsB | 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_modeA | 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_dryingB | 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_charmA | 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_verticesB | 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 its largest flat face lies on the XY plane (Z=0) |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Bambu Printer Status | Current status of the Bambu Lab printer |
| Bambu Printer Files | List of files on the Bambu Lab printer |
| Bambu Printer HMS Diagnostics | HMS and error-related fields from the latest printer status |
TDQS
Scored across 46 tools
Many tools are clearly distinct (camera_snapshot vs set_fan_speed vs merge_vertices), but several clusters overlap badly: start_print is documented as an alias of start_print_job, print_3mf vs print_3mf_bambu_network vs start_print_job vs bambu_connect_import_file all describe 'start printing'-adjacent flows, and upload_gcode vs upload_file vs inspect_print_file blur together. The one-off print_collar_charm and catch-all x2d_native_control add further ambiguity about when to prefer them.
The bulk of names follow a verb_noun snake_case pattern (slice_stl, set_light, list_printer_files, cancel_print), but there are noun-first outliers like x2d_native_control, bambu_network_bridge_status, and print_collar_charm, plus vendor-prefixed families (bambu_*, blender_mcp_*). Readable, but the convention is not predictable across the set.
46 tools is far beyond a well-scoped surface for this server; the set spans STL geometry ops, slicing, MQTT control, FTPS file management, Blender bridging, and BambuNetwork plumbing. Multiple tools exist only as compatibility aliases or single-use scripts (start_print, print_collar_charm), which inflates the count without adding capability.
Coverage of the printing domain is genuinely broad: geometry prep, slicing/templating, inspection, upload, lifecycle control (pause/resume/cancel/skip), AMS/filament, environment settings, and camera. Minor gaps remain — templates can be listed and saved but not deleted, and file deletion is restricted to cache/timelapse/logs with no general cleanup path — but agents have workarounds.