MCP 3D Printer Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| API_KEY | Yes | API key for authentication with your printer management system | |
| TEMP_DIR | No | Directory for temporary files (optional) | |
| BAMBU_TOKEN | No | Access token for Bambu Lab printers (required when PRINTER_TYPE is 'bambu') | |
| SLICER_PATH | No | Path to the slicer executable | |
| SLICER_TYPE | No | The type of slicer to use | prusaslicer |
| BAMBU_SERIAL | No | Serial number for Bambu Lab printers (required when PRINTER_TYPE is 'bambu') | |
| PRINTER_HOST | No | The hostname or IP address of your 3D printer | localhost |
| PRINTER_PORT | No | The port used to connect to your 3D printer | 80 |
| PRINTER_TYPE | No | The type of 3D printer management system | octoprint |
| SLICER_PROFILE | No | Path to the slicer profile |
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 3D printer |
| list_printer_filesC | List files available on the 3D printer |
| upload_gcodeA | Upload G-code content or a local G-code file path to the printer. With print=true the exact uploaded bytes are inspected first (every S/R heater target, tool changes, hardware and material ceilings), printer state is checked, and a human confirmation is requested before the print starts. |
| start_printA | Start printing a G-code file already stored on the printer. The server downloads and inspects the exact file, then starts a uniquely named checked copy after printer-state checks and human confirmation. Printers whose API cannot download files (Repetier, Prusa, Creality) refuse; use upload_gcode with print=true instead. |
| cancel_printC | Cancel the current print job |
| set_printer_temperatureA | Set the temperature of a printer component. Temperature 0 switches a heater off and is never gated. Positive targets are validated before connecting, limited by independent hardware and material ceilings, require a ready printer and a human confirmation. |
| extend_stl_baseC | Extend the base of an STL file by a specified amount |
| slice_stlB | Slice an STL or 3MF file to generate G-code or a sliced 3MF. For Bambu-compatible CLI slicing (bambustudio, orcaslicer-bambulab, or orcaslicer with bambu_model), the exact bambu_model/nozzle machine preset from the selected slicer installation is required, profile inheritance is resolved before the CLI runs, and the result must contain plate G-code. Failures stop with the slicer's exit status and output. |
| slice_with_templateA | Slice an STL or 3MF with a named template from the local template registry (BAMBU_TEMPLATE_DIR). The template supplies process settings; the machine preset still comes from bambu_model and nozzle_diameter. |
| list_templatesA | List saved slicing templates (.3mf, .json, .config) in the local template registry directory. |
| save_templateB | Copy a .3mf, .json, or .config file into the local template registry under a template name. |
| get_slice_settingsA | Inspect slicer settings in a 3MF template or JSON/config profile without slicing (layer height, infill, walls, supports, brim, bed, printer, filaments). |
| confirm_temperaturesA | Report every heater target in a G-code file (S and R forms, tool-addressed, RepRapFirmware G10/M568 and Klipper SET_HEATER_TEMPERATURE). An expected temperature matches only when it equals the file's highest target. Read-only; printing tools enforce their own safety gate. |
| process_and_print_stlA | Process an STL file (extend base), slice it, and start printing through the same checked print gate as upload_gcode/print_3mf. Expected temperatures are enforced: a mismatch refuses before upload. |
| get_stl_infoC | Get detailed information about an STL file |
| scale_stlB | Scale an STL model uniformly or along specific axes |
| rotate_stlC | Rotate an STL model around specific axes |
| translate_stlC | Move an STL model along specific axes |
| modify_stl_sectionC | Apply a specific transformation to a selected section of an STL file |
| generate_stl_visualizationB | Generate an SVG visualization of an STL file from multiple angles |
| print_3mfA | Print a 3MF file on a Bambu Lab printer. The exact selected plate is inspected (model, nozzle, bed type, materials, every heater target) and checked against a fresh MQTT report of the printer's identity, nozzle, state, errors and loaded filament, then a human confirmation is requested before upload and start. |
| check_fulu_orca_setupC | Inspect a FULU OrcaSlicer-bambulab install, platform runtime payload, setup commands, and optionally probe the BambuNetwork bridge. |
| fulu_bambu_network_rpcA | Advanced FULU bridge RPC for BambuNetwork diagnostics and development. Read-only methods are allowed by default. Agent/session setup methods require allow_mutating_method=true. Raw print methods, printer messages, file transfers and unknown methods are refused because they would bypass the print safety gate; use print_3mf for checked printing. |
| merge_verticesB | Merge vertices in an STL file that are closer than the specified tolerance. |
| center_modelB | Translate the model so its geometric center is at the origin (0,0,0). |
| lay_flatB | Attempt to 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. Lists tool names and summaries; pass tool_names for the full input schemas of the tools you will call. 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_export_stlA | Export named objects from the live Blender scene to a new, verified STL for slicing. Writes world-space geometry with modifiers applied, without changing the scene, selection, or mode, and reports triangle count and bounding-box dimensions from the written file. Use this after editing or modelling through blender_mcp_call; Blender MCP's own export_scene writes GLB/FBX only. Requires standard Blender MCP and a shared local filesystem. |
| 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 |
|---|---|
| 3D Printer Status | Current status of the 3D printer including temperatures, print progress, and more |
| 3D Printer Files | List of files available on the 3D printer |
TDQS
Scored across 30 tools
Several tools overlap on the 'start a print' action (upload_gcode with print=true, start_print, process_and_print_stl, print_3mf), and Blender editing/export tools (blender_mcp_call, blender_mcp_edit_model, blender_mcp_export_stl) have adjacent responsibilities. Descriptions do explain the safety gates and distinctions, but the boundary between print entry points requires careful reading.
Nearly all tools use snake_case verb_noun form (get_printer_status, slice_stl, scale_stl, save_template), and the blender_mcp_ and fulu_ families are consistently prefixed. Minor deviations like the noun-only 'fulu_bambu_network_rpc' are the only inconsistency.
At 30 tools this is on the heavy side, spanning STL manipulation, slicing, template management, printer control, and Blender integration. The breadth is real but the surface feels larger than necessary, with multiple print paths that could likely be consolidated.
Coverage is strong: STL inspection/transformation, slicing with templates, printer status/control, safety-gated printing, temperature verification, and Blender round-tripping are all present. Minor gaps exist (e.g., no explicit job-queue or print-history operations), but core lifecycle operations are covered.