← Back to directory
M

MCP 3D Printer Server

Community
Connect MCP clients to major 3D printers for STL/3MF editing, slicing, and printing.
GitHub source repository ↗
★ 233 Stars Category · Other Very popular
53FMRS · D

This server bridges MCP clients to multiple 3D printer management systems, covering status queries, file management, print control, and fairly complete STL editing, slicing, and visualization, with Bambu Lab 3MF printing, FULU OrcaSlicer-bambulab integration, and bridge diagnostics. It is community-maintained rather than vendor-official, licensed under GPL-2.0, and supports the local stdio and streamable-http transports. It suits users who want to drive print workflows in natural language, but it requires printer credentials and LAN access, STL handling of large files strains memory, and the Bambu FTP channel and model-preset configuration carry real risks, while some features (such as Bambu real-time status and FULU macOS slicing) still have known limitations.

Reliability
9/20
Security and permissions
8/20
Maintenance
11/20
Documentation
14/20
Setup experience
11/20
Read the FMRS scoring method →

This is a Model Context Protocol (MCP) server that connects MCP clients to several 3D printer management systems: OctoPrint, Klipper (via Moonraker), Duet, Repetier, Bambu Lab, Prusa Connect, and Creality Cloud. It can read printer status and temperatures, list files on the printer, upload G-code, start and cancel print jobs, and set temperatures. It also offers substantial STL manipulation: scaling, rotation, translation, base extension, vertex merging, centering, laying flat, section-specific edits, detailed analysis, and multi-angle SVG visualization. It can slice STL files into G-code with an external slicer, confirm temperature settings in G-code, and upload a sliced 3MF to a Bambu Lab printer via FTP to start a job over MQTT, auto-slicing unsliced 3MF files with FULU OrcaSlicer-bambulab or Bambu Studio when a project slicer is configured. The Bambu integration also provides FULU runtime setup inspection (check_fulu_orca_setup), guarded FULU BambuNetwork bridge RPC calls (fulu_bambu_network_rpc), and resources for reading Bambu Studio presets. The server supports stdio and streamable-http local transports, requires Node.js 18 or higher, and is licensed under GPL-2.0.

Tools

get_stl_info
Get detailed information about an STL file, including dimensions, vertex count, and bounding box.
extend_stl_base
Extend the base of an STL file by a specified amount.
scale_stl
Scale an STL model uniformly or along specific axes.
rotate_stl
Rotate an STL model around specific axes in degrees.
translate_stl
Move an STL model along specific axes in millimeters.
merge_vertices
Merge vertices closer than a specified tolerance, helping close small gaps.
center_model
Translate the model so its bounding box center sits at the world origin (0,0,0).
lay_flat
Attempt to identify the largest flat surface and rotate the model so it faces down on the XY plane (Z=0).
modify_stl_section
Apply a transformation to a selected section (top, bottom, center, or custom bounds) of an STL file.
generate_stl_visualization
Generate multi-angle SVG visualizations of an STL file (front, side, top, and isometric views).
slice_stl
Slice an STL file to generate G-code using an external slicer.
confirm_temperatures
Confirm temperature settings in a G-code file.
process_and_print_stl
End-to-end workflow: process an STL (extend base), slice it, confirm temperatures, and start printing.
get_printer_status
Get the current status of the 3D printer (temperatures, print progress, etc.).
list_printer_files
List files available on the printer.
upload_gcode
Upload G-code content or a local G-code file path to the printer.
start_print
Start printing a file that is already on the printer.
cancel_print
Cancel the current print job.
set_printer_temperature
Set the temperature of a printer component.
check_fulu_orca_setup
Inspect the FULU OrcaSlicer-bambulab executable, platform runtime payload, setup commands, and optionally probe the BambuNetwork bridge.
fulu_bambu_network_rpc
Call one FULU BambuNetwork bridge JSON RPC method; read-only methods are allowed by default, mutating methods require explicit opt-in, and print methods also require bambu_model.
print_3mf
Upload a sliced .3mf file via FTP and start the print job on a Bambu printer via MQTT, optionally auto-slicing first.
blender_mcp_edit_model
Blender bridge tool with an optional execution mode for model-edit collaboration workflows.

Setup

  1. Ensure Node.js 18 or higher is installed.
  2. Install globally with npm install -g mcp-3d-printer-server, or from source via git clone, npm install, and npm link.
  3. Create a .env file in the directory where you run the server or set environment variables (API_KEY, PRINTER_HOST, PRINTER_PORT, PRINTER_TYPE, and for Bambu also BAMBU_SERIAL, BAMBU_TOKEN, BAMBU_MODEL).
  4. Add an mcpServers entry to your MCP client config with command npx and args ["-y", "mcp-3d-printer-server"], putting printer connection values in env.
  5. Restart your client (for Codex, run /mcp or codex mcp list to confirm the server loaded).
  6. Alternatively run with Docker and Docker Compose: copy .env.example to .env, then run docker-compose up --build -d; install slicers inside the container rather than mounting host executables.
claude_desktop_config.json
{
  "mcpServers": {
    "3dprint": {
      "command": "npx",
      "args": ["-y", "mcp-3d-printer-server"],
      "env": {
        "PRINTER_HOST": "your_printer_ip",
        "PRINTER_TYPE": "bambu",
        "BAMBU_SERIAL": "your_printer_serial",
        "BAMBU_TOKEN": "your_access_token",
        "BAMBU_MODEL": "p1s",
        "SLICER_TYPE": "orcaslicer-bambulab",
        "SLICER_PATH": "/path/to/FULU/OrcaSlicer",
        "FULU_ORCA_PLUGIN_DIR": "/Applications/OrcaSlicer.app/Contents/MacOS"
      }
    }
  }
}

Fit and risk

Best for

  • Users with OctoPrint, Klipper, Duet, Repetier, Bambu Lab, Prusa, or Creality printers
  • Users who want to drive printing and model workflows from an MCP client in natural language
  • Technical users needing an end-to-end modify-STL, slice, and print workflow
  • Bambu users using FULU OrcaSlicer-bambulab or Bambu Studio as the project slicer

Not for

  • Users without any supported printer or printer management system
  • Users unwilling to provide printer credentials (API keys, access tokens, serial numbers)
  • Users expecting to override slicer settings such as layer height or temperature directly from MCP (must be done before generating the 3MF)
  • Users expecting complete real-time streaming Bambu status semantics (status reading remains limited)
  • Bambu users without Developer Mode and LAN Only Mode enabled or whose printer is not on the same network

Required permissions

  • API key or Bearer token for the printer management system
  • Bambu Lab serial number (BAMBU_SERIAL) and access token (BAMBU_TOKEN)
  • Network access to the printer's local network (including Bambu MQTT port 8883 and FTPS port 990)
  • Read/write access to the local filesystem for STL, G-code, and 3MF files and the temp directory
  • Ability to launch external slicer executables (SLICER_PATH) and optionally the FULU bridge command
  • Optional MCP_ALLOW_EXECUTABLE_ARG=1 to accept per-call local executable selectors

Risks and side effects

  • STL operations load entire models into memory; large files (e.g., over 10MB) can cause out-of-memory issues
  • Bambu file operations may use unsecured plain FTP, exposing transfers to network eavesdropping
  • A wrong Bambu model preset (bambu_model) can generate dangerous G-code and cause the bed to crash into the nozzle and damage the printer
  • Allowing per-call executable paths (MCP_ALLOW_EXECUTABLE_ARG) lets untrusted input choose which local program runs; enable only for trusted diagnostics
  • Tool output should be treated as untrusted input, so prompt injection is a risk and destructive operations should have human confirmation gates
  • Credentials are stored as environment variables in client config, so a leak grants printer control

Troubleshooting

  1. Verify Node.js is version 18 or higher
  2. Check that PRINTER_HOST, PRINTER_PORT, PRINTER_TYPE, and API_KEY/token are correct
  3. For Bambu, confirm BAMBU_SERIAL, BAMBU_TOKEN, and BAMBU_MODEL are set and that Developer Mode and LAN Only Mode are enabled
  4. Make sure the printer and the machine running the server are on the same local network
  5. If slicing fails, check SLICER_TYPE, SLICER_PATH, and the slicer command's stderr output
  6. When using FULU OrcaSlicer-bambulab, call check_fulu_orca_setup first to inspect the runtime payload and install commands
  7. On macOS, FULU CLI slicing may crash or leave uninterruptible processes; SLICER_TYPE=bambustudio is the known-good fallback
  8. If a probe or slicing tool reports an executable-argument error, check whether MCP_ALLOW_EXECUTABLE_ARG is set
  9. Confirm the client config file location is correct and restart the client after edits

Use cases

Query printer status, temperatures, and print progress in natural language
List, upload, and manage G-code files on the printer
Modify STL models with scaling, rotation, translation, and base extension
Slice STL files and confirm G-code temperatures
Print sliced 3MF files on Bambu Lab printers
Generate multi-angle SVG visualizations of STL models
Read Bambu Studio machine, filament, and process presets

Supported clients

Claude DesktopFull support
Claude CodeFull support
CursorFull support
CodexFull support