mcp-3d-printer-server connects Claude, Codex, and other MCP clients to the printers you already run: OctoPrint, Klipper, Duet, Repetier, Bambu Lab, Prusa, and Creality. Send your agent a link, a photo, or a message, and it can adapt the model, slice it, and start the print.
npx -y mcp-3d-printer-serverThank you, FULU Foundation, Louis Rossmann, and the OrcaSlicer-bambulab contributors. Thank you for standing up for consumer ownership, open-source developers, repair rights, and owners whose working hardware should not be made worse by locked-down software.
This server treats the FULU OrcaSlicer-bambulab fork as a first-class slicer for Bambu Lab projects. See the FULU guide for setup and current status.
Tell your agent which printer system you use (OctoPrint, Klipper, Bambu Lab, Prusa, and so on) and its address, if you know them, then copy and paste this:
Prefer to do it yourself? Follow the installation guide, find your printer's credentials, or run it in Docker.
Install mcp-3d-printer-server in the agent/harness I'm using now.
Read https://github.com/DMontgomery40/mcp-3D-printer-server/blob/main/docs/SETUP.md
for the current setup instructions and supported printer backends.
Detect my OS and harness, then use its native MCP configuration or installer.
Preserve my existing servers and settings. Prefer the published npm package
(npx -y mcp-3d-printer-server, stdio); use Node.js 24 if a runtime is needed.
Ask which printer system I use and set PRINTER_TYPE to match. Never guess it.
Then ask only for the values that backend needs:
- octoprint: PRINTER_HOST, PRINTER_PORT if not 80, API_KEY
- klipper (Moonraker): PRINTER_HOST, PRINTER_PORT (usually 7125)
- duet: PRINTER_HOST, PRINTER_PORT if not 80
- repetier: PRINTER_HOST, PRINTER_PORT (usually 3344), API_KEY
- bambu: PRINTER_HOST, BAMBU_SERIAL, BAMBU_TOKEN (the LAN access code),
and BAMBU_MODEL
- prusa: PRINTER_HOST (PrusaLink address or connect.prusa3d.com), API_KEY
- creality: PRINTER_HOST, PRINTER_PORT if not 80, API_KEY (bearer token)
For Bambu Lab, confirm the exact printer model with me; never guess it, and
explain any LAN Only Mode or Developer Mode setting I need to enable.
Keep keys, tokens, and access codes in local/private configuration; do not
repeat them in chat.
Bambu Lab has the most hardware testing. The other backends use each
system's HTTP API and rely on community reports, so tell me plainly if a
backend does not respond as the guide describes.
Offer these optional extras, and set them up only if I choose them:
- Blender MCP for model edits: uvx mcp-for-blender (formerly blender-mcp,
which now installs it as a compatibility wrapper). Its Blender addon must be
installed, enabled, and connected inside Blender.
- A slicer for slice_stl: look for an installed PrusaSlicer, OrcaSlicer,
FULU OrcaSlicer-bambulab, Bambu Studio, or CuraEngine before suggesting
an install.
Configure executables in the server environment. Do not enable
MCP_ALLOW_EXECUTABLE_ARG. Leave print confirmation on: do not set
PRINT_REQUIRE_CONFIRMATION=0 or BAMBU_REQUIRE_CONFIRMATION=0 unless I ask
for a headless setup.
Verify that the MCP initializes, lists its tools, and reads printer status.
Do not start a print or change printer settings, including temperatures, as
a setup test. Tell me what worked and whether I need to restart or reload
the harness.Send a link, a photo, or a message from wherever you are. Your agent works out the steps and checks in when a choice matters. More on what to ask.
“Here's a phone case on MakerWorld. Make it fit my iPhone 17 Pro Max and print it.”
Your agent reads Apple's dimensional drawings, refits the case in Blender around the new camera and buttons, checks the fit, exports a verified STL, slices it for your printer, and asks before it starts the print. See it worked through.
“Can you print a replacement?”
with a photo of a snapped cabinet clip
It asks for a measurement or two where the fit matters, models the part, and prints it on the printer you choose.
“Make this bracket 20% bigger and give it a thicker base.”
It scales the STL, extends the base, and reports the new dimensions before it slices anything.
“How far along is the Bambu print?”
It requests a fresh status report and gives you progress, the current layer, and time remaining.
“Is the Prusa done yet?”
It reads the printer's status through PrusaLink and reports its state and job progress.
“What are the bed and nozzle temperatures on the OctoPrint printer?”
It reads OctoPrint's printer state, including current and target temperatures.
“The first layer isn't sticking. Cancel it.”
It sends the cancel command through that printer's backend, then checks the printer's status.
“Print this in PETG.”
with an STL
It slices with the PETG filament profile you've set up and checks the job's peak temperatures. The server then asks you to confirm before the print starts.
“Print the bracket I sliced last night on the Bambu.”
It checks the plate's model, nozzle, bed type, materials, and temperatures against the live printer, then asks you to confirm before it uploads and starts the job.
“Send benchy.gcode to the Klipper printer, but don't start it yet.”
It uploads the file through Moonraker so you can start it later.
The most predictable path starts from a file you've sliced and previewed yourself. Your agent can also run your slicer's command line, check the result, and send it to whichever printer you choose.
Export G-code from PrusaSlicer, OrcaSlicer, or Cura, or a sliced project from FULU OrcaSlicer-bambulab or Bambu Studio. Or let slice_stl run the slicer for you.
Before a print starts, the server inspects the exact G-code: every heater target is checked against hardware and material ceilings, and the printer must be ready. confirm_temperatures shows the peaks up front.
You confirm the print through your MCP client. upload_gcode then sends it to OctoPrint, Moonraker, PrusaLink, or another HTTP backend; Bambu Lab projects go through print_3mf over FTPS and MQTT.
A sent command isn't a finished print, so check status afterward; what status reports depends on the backend.
Read the slicing guideSee the safety gateCompare printer backendsPrint on Bambu Lab
30 documented tools. Each name links to its reference entry, with example arguments.
Set PRINTER_TYPE for your printer system. Every printer tool also takes a per-call type and host, so one server can reach more than one printer.
Bambu Lab modelsP1SP1PX1CX1EA1A1 miniH2D
BAMBU_MODEL or bambu_model. Without it they ask or stop, because G-code for the wrong model can damage hardware.