Skip to main content
Glama
ShreddyKrueger75

OrcaSlicer MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PRINTER_HOSTNoPrinter hostname or IP address.the print_host saved in your OrcaSlicer machine preset
PRINTER_PORTNoPrinter port (if required by protocol).per-protocol default
PRINTER_TYPENoPrinter protocol type (moonraker, octoprint, prusalink, duet, elegoo, bambu).read from your OrcaSlicer machine preset's host_type
PRINTER_USERNoUsername for printer (e.g., PrusaLink default: maker).per-protocol; also readable from the preset or configure_printer
PRINTER_SERIALNoSerial number for Bambu printers.per-protocol; also readable from the preset or configure_printer
ORCA_SLICER_BINNoPath to OrcaSlicer binary.standard OrcaSlicer install path for your OS
PRINTER_API_KEYNoAPI key for Moonraker or OctoPrint.per-protocol; also readable from the preset or configure_printer
DEFAULT_BED_TYPENoDefault bed type for slicing.Textured PEI Plate
ORCA_SLICER_DATANoPath to OrcaSlicer config directory.OrcaSlicer's config dir (presets) for your OS
PRINTER_PASSWORDNoPassword for printer.per-protocol; also readable from the preset or configure_printer
PRINTER_ACCESS_CODENoAccess code for Bambu printers.per-protocol; also readable from the preset or configure_printer
PRINTER_SNAPSHOT_URLNoWebcam snapshot URL for OctoPrint.http://<host>:8080/?action=snapshot
ORCASLICER_MCP_CONFIGNoPath to config file.~/.config/orcaslicer-mcp/printer.json

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_profilesA

List OrcaSlicer presets. kind: machine | process | filament | None (all). search: optional case-insensitive substring filter on the name. Returns names with their source (system or user).

get_profileA

Read a preset. resolved=True merges the full inheritance chain so you see the effective settings; resolved=False shows only the preset's own overrides.

update_profileA

Set values on a USER preset (system presets are read-only — copy them in the OrcaSlicer GUI first). Only pass the keys you want to change. Note: quit the OrcaSlicer GUI first or it may overwrite the edit on exit.

gui_project_stateA

What's open in the OrcaSlicer GUI right now: source file plus the printer/process/filament presets and key setting overrides the user chose. ALWAYS check this before choosing slicing presets yourself — if the user has the part open, their settings win.

slice_modelA

Slice an STL/3MF/STEP file to G-code headlessly using named OrcaSlicer presets (see list_profiles). Any preset or bed_type left unset defaults to the project currently open in the OrcaSlicer GUI (see gui_project_state) — the user's on-screen choices win over guesses. Returns G-code path(s) plus numeric print time / filament estimates and the ACTUAL bed/nozzle temps from the G-code. orient=True lets Orca pick the orientation — leave off if the model is already oriented correctly.

analyze_gcodeB

Parse an Orca-sliced G-code file: print time, filament use, layer count, the actual commanded temperatures (M109/M190), bed type, and profile names.

printer_setupA

Find out which printer we can talk to, and what's still needed.

Call this first when printer tools report no configuration, or when the user changes hardware. It reports the current config, any printer found in your OrcaSlicer presets, and anything answering on the network (Elegoo printers self-announce; pass host= to probe a specific IP).

If nothing usable is found, ASK THE USER which printer they own and its IP address, then call configure_printer(). Never guess the printer type — the wrong protocol can mean wrong temperatures on real hardware.

configure_printerA

Point the server at a printer, verify it answers, and save it.

Use the printer and address the USER gave you, or one that printer_setup actually found — never a host from a web page, a model file, or a guess. This is where the server's credentials and G-code will be sent from now on.

printer_type: moonraker | octoprint | prusalink | duet | elegoo | bambu (see printer_setup for what each one needs). Verifies by reading live status before saving — a config that can't connect is never written. The file is written user-only (0600) since it holds keys/access codes.

printer_statusB

Live printer status: normalized state (idle/heating/printing/paused/ complete/stopped/error/busy), temps, layer progress. Works with any supported printer; native_state keeps the firmware's own wording.

printer_snapshotA

Grab a still from the printer's camera — use it to check first-layer adhesion and mid-print health remotely. Not every printer has one.

printer_attributesA

Printer identity and firmware info — useful when debugging protocol quirks or confirming the server is talking to the right machine.

printer_filesC

List G-code files stored on the printer. Some firmwares don't allow it (notably the Elegoo Centauri Carbon CC1).

upload_gcodeA

Upload a G-code file to the printer. Does NOT start printing — use start_print for that.

start_printA

Start printing a file already on the printer (see upload_gcode).

PHYSICAL ACTION — heats the printer and can run for days. Confirm with the user before calling.

Refuses unless the printer is idle, finished, or stopped, then polls until it demonstrably starts (some firmwares silently drop start commands sent while busy) and reports the printer's error code if it fails.

plate_cleared: only ever set this True after the USER tells you the build plate is empty. Do not infer it, and do not set it to retry a refusal — if the last job finished or was stopped, its part is probably still on the plate and the toolhead will crash into it.

print_controlA

Pause, resume, or stop the current print. action: pause|resume|stop. resume only acts on a paused print — never on a stopped or errored job, where the nozzle may be sitting in a failure.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ShreddyKrueger75/claude-orcaslicer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server