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_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. |
| 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_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 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 uses the installed Bambu 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_dryingC | Start or stop the AMS filament drying cycle. X2D on macOS uses the native official plug-in route and supports AMS-HT id 128. |
| 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 45 tools
Several tools have overlapping purposes: start_print and start_print_job are aliases, slice_stl and slice_with_template are related, and print_3mf vs print_3mf_bambu_network target different paths. Descriptions clarify most distinctions, but an agent still faces non-trivial misselection risk.
The set is predominantly snake_case and action-oriented, with predictable names like get_printer_status, upload_file, and set_temperature. Minor deviations such as camera_snapshot (noun phrase) and skip_objects (verb-only) exist but do not break readability.
At 45 tools, the server is heavily over-provisioned for a printer-control MCP. Many specialized and overlapping operations could be consolidated, making the surface harder to navigate than necessary.
Core lifecycle coverage exists for file management, printing, slicing, and AMS inspection, but notable gaps remain. There is no explicit filament load/unload tool despite get_printer_filaments recommending load_filaments, and calibration start is absent from x2d_native_control.