OrcaSlicer MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PRINTER_HOST | No | Printer hostname or IP address. | the print_host saved in your OrcaSlicer machine preset |
| PRINTER_PORT | No | Printer port (if required by protocol). | per-protocol default |
| PRINTER_TYPE | No | Printer protocol type (moonraker, octoprint, prusalink, duet, elegoo, bambu). | read from your OrcaSlicer machine preset's host_type |
| PRINTER_USER | No | Username for printer (e.g., PrusaLink default: maker). | per-protocol; also readable from the preset or configure_printer |
| PRINTER_SERIAL | No | Serial number for Bambu printers. | per-protocol; also readable from the preset or configure_printer |
| ORCA_SLICER_BIN | No | Path to OrcaSlicer binary. | standard OrcaSlicer install path for your OS |
| PRINTER_API_KEY | No | API key for Moonraker or OctoPrint. | per-protocol; also readable from the preset or configure_printer |
| DEFAULT_BED_TYPE | No | Default bed type for slicing. | Textured PEI Plate |
| ORCA_SLICER_DATA | No | Path to OrcaSlicer config directory. | OrcaSlicer's config dir (presets) for your OS |
| PRINTER_PASSWORD | No | Password for printer. | per-protocol; also readable from the preset or configure_printer |
| PRINTER_ACCESS_CODE | No | Access code for Bambu printers. | per-protocol; also readable from the preset or configure_printer |
| PRINTER_SNAPSHOT_URL | No | Webcam snapshot URL for OctoPrint. | http://<host>:8080/?action=snapshot |
| ORCASLICER_MCP_CONFIG | No | Path to config file. | ~/.config/orcaslicer-mcp/printer.json |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| 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; |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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