bambu-p1s-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BAMBU_IP | Yes | IP address or hostname of the Bambu Lab P1S printer on the local network. | |
| BAMBU_SERIAL | Yes | Printer serial number from the printer screen (Settings → Device). | |
| BAMBU_SLICER | No | Path to the Bambu Studio CLI binary, used for slicing. Example: /home/whaleshark/.local/bin/bambu-studio | |
| BAMBU_MCP_HOST | No | Host/interface to bind the HTTP daemon to. Example: 0.0.0.0 | 127.0.0.1 |
| BAMBU_MCP_TOKEN | No | Bearer token required for non-localhost HTTP connections to the MCP server. Optional for localhost-only use. | |
| BAMBU_ACCESS_CODE | Yes | Access code from the printer screen (Settings → Network). Used as password for MQTT and FTPS. |
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| printer_doctorA | Check env, LAN ports, MQTT, FTPS, and slicer CLI. Does not print or change printer state. |
| printer_statusA | Current P1S state: idle/printing, job name, progress, temps, remaining time. Set fresh=true to request a full P1S pushall (avoid calling that in a tight loop). |
| printer_amsB | AMS / external spool trays: type, color, empty, active tray. |
| printer_filesB | List files on the printer SD card via FTPS. |
| printer_pauseB | Pause the current print. Requires confirm=true. |
| printer_resumeA | Resume a paused print. Requires confirm=true. |
| printer_stopA | Stop the current print. Requires confirm=true. |
| printer_speedA | Set speed profile: silent, standard, sport, ludicrous. Requires confirm=true. |
| printer_uploadB | Upload a sliced .gcode.3mf / .3mf / .gcode to the printer over FTPS. Requires confirm=true. |
| printer_printA | Start a print from a local sliced file (upload first) or a filename already on the printer. Requires confirm=true. Check printer_status first — do not start if a job is RUNNING. |
| slice_model_fileA | Slice an STL/3MF with the Bambu Studio CLI into a printable .gcode.3mf. Requires confirm=true. STL/STEP needs machine/process/filament JSON (auto-discovered from BambuStudio config when present). A project .3mf that already contains settings can be sliced without extra profiles. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a distinct function: diagnostics, status, AMS, file listing, print control, speed, upload, print, and slicing. No two tools appear to do the same thing, and the descriptions reinforce the boundaries.
Almost all tools follow a consistent printer_<action/noun> pattern with clear verbs like pause, resume, stop, upload, and print. The single exception is slice_model_file, which breaks the printer_ prefix and would fit better as printer_slice, but this is a minor deviation.
11 tools is well-scoped for a 3D printer server: it covers diagnostics, status, AMS, file management, print control, upload, and slicing without unnecessary bloat. Each tool earns its place in the workflow.
The core lifecycle is covered end-to-end: slice locally, upload to the printer, start, monitor, pause/resume/stop, and adjust speed. Minor gaps like deleting files, calibrating, or controlling aux devices do not hinder the primary print workflow.