Skip to main content
Glama
MaxEllis

orcaslicer-mcp

by MaxEllis

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ORCA_API_URLNoURL of the OrcaSlicer MCP build's local API. Set only if you changed the port or if OrcaSlicer runs on another machine with LAN access enabled.http://127.0.0.1:13130
ORCA_API_TOKENYesThe API token from OrcaSlicer Preferences > Remote API, used to authenticate to the local API.
ORCA_MCP_NOTES_DIRNoDirectory for persistent notes saved with `remember`. Defaults to ~/.orcaslicer-mcp/notes/.

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
get_statusA

App/project/preset status, dirty keys, slice validity, and whether a slice is running.

get_configA

Read merged config values (optionally filtered to keys).

set_configB

Apply config changes atomically. Returns {applied, errors}. On any invalid key, nothing is applied.

sliceA

Start slicing the current plate. Returns started / already_valid / conflict.

get_slice_statusA

Current/last slice state, stats, and warnings.

get_slice_warningsA

Just the warnings/errors from the last (or current) slice, plus validity - the fast 'did anything go wrong' check and the way to confirm a fix cleared.

NOTE: only as complete as the API exposes. On the current fork build this may report valid with an empty warnings list even when the GUI shows a plate-boundary toast - the fork must populate the plater warning list (tracked as the fork batch). Once it does, this reports the real warnings with no change here.

get_slice_breakdownA

Per-feature breakdown of the last slice + a stateless predicted-vs-observed flow check.

Returns per-role time/filament + speed/flow ranges, global time-weighted metric distributions, per-layer aggregates, and a prediction_check flagging where the profile's speed was silently throttled at the flow ceiling ('clamped'). Answers 'which feature is the time hog' directly instead of by trial slicing.

Degrades to {"available": false, "reason": ...} on fork builds that don't emit the breakdown, or when there is no valid slice. [needs fork breakdown build]

cancel_sliceA

Abort a running slice, or unwedge a stale 'slicing' state (e.g. after an object outside the bed). Safe when idle. [needs F2 build]

slice_and_waitA

Slice (or reuse a valid result) and wait for completion; return final stats + warnings.

apply_and_sliceA

Apply config changes, then slice and report the resulting stats/warnings.

compare_settingsA

For each value of key, slice and collect stats/warnings; restore the original when done.

Non-destructive: the original value of key is put back even on error.

list_objectsA

List objects on the current plate: id (stable), name, size_mm, and transform (offset/rotation/scale). [needs M4b]

set_object_configA

Set per-object config overrides on an object by id, e.g. {"wall_loops": 4, "sparse_infill_density": "30%"}. Atomic (nothing applied if any key is invalid). [needs M4c]

duplicate_objectA

Duplicate an object on the plate by id (adds a copy, offset from the original). [needs M4b]

delete_objectB

Delete an object from the current plate by its id. [needs M4b]

transform_objectA

Move/rotate/scale an object by id. translate=[dx,dy,dz] mm (relative), rotate=[rx,ry,rz] degrees (relative), scale=[sx,sy,sz] absolute factor. Provide at least one. [needs M4b]

arrange_plateA

Auto-arrange all objects on the plate (async job; poll get_job_status until idle). [needs M4b]

auto_orientA

Auto-orient all objects for printing (async job; poll get_job_status until idle). [needs M4b]

get_job_statusA

Whether the plate job worker is idle (poll after arrange_plate/auto_orient). [needs M4b]

watch_eventsA

Collect live events (slice.*/config.changed/project.opened) over a bounded window.

find_config_keysA

Find config keys containing substring (helps discover among the ~600 keys).

diagnose_plateA

One-call plate diagnosis: app/slice status, objects on the plate, bed + active skirt/brim/clearance settings, and the last slice's warnings - so you don't have to chain status->objects->config. Start here for 'why won't this slice / fit'.

Slice warnings are only as complete as the fork exposes today (see get_slice_warnings). For a 'does it fit the bed' estimate, pair with check_placement.

check_placementA

Estimate whether every object (plus its skirt/brim ring) fits inside the printable area. Returns per-object fit, expanded first-layer bbox, per-edge clearance (mm), and overflow.

APPROXIMATE: uses the object footprint from size+offset, not the sliced toolpath (skirt arcs, half-line-width, travel/wipe excluded); single-instance objects only. At ~mm margins the true verdict needs get_slice_warnings - this is a fast first-pass. [needs M4b]

consultA

Retrieve curated slicing knowledge + saved context notes for a topic, symptom, or intent. ALWAYS call before deriving or changing settings for a user goal. Composes principles per situation - never returns preset bundles. Falls back to find_config_keys/web search if empty.

When recommending, present 2-3 concrete options quantified with predicted print time and filament mass from real slice results (slice + status tools) - never adjectives alone.

check_profile_physicsA

Deterministic pre-save gate: fetches the live config, overlays optional proposed changes, and runs flow/temperature/geometry/cooling math. RUN THIS BEFORE save_preset. verdict=blocked means DO NOT SAVE.

rememberA

Persist a context fact for future sessions. scope: 'machine:/', 'user', or 'project:'. Local plain files; user-readable and deletable.

describe_settingA

Authoritative definition of one OrcaSlicer setting: label, tooltip, type, unit, range, enum values, default. Offline; works even when OrcaSlicer is not running.

search_settingsA

Search settings by keyword across key/label/tooltip; returns compact matches (key, label, category, short tooltip), ranked key/label first. Offline.

load_modelA

Load a model file (path on the OrcaSlicer host) onto the current plate. Accepts .stl/.obj/.3mf, plus .step/.stp on fork v2.3.2-mcp.3+. Large STEP files can take a minute to tessellate; the call waits. [needs M4a]

select_presetA

Select a named preset. type = print|filament|printer. [needs M4a]

save_presetA

Save the currently edited settings as a named user preset (create or update, visible in the GUI immediately). type = print|filament|printer. detach=True saves it standalone instead of inheriting the current base preset. [needs preset/save]

Run check_profile_physics first; do not save when verdict=blocked.

list_presetsA

List print/filament/printer presets with system/selected/visible flags.

F12: by default returns only USER presets plus whatever is currently SELECTED - the built-in system presets are ~400 entries of noise. Pass include_system=True for the full list, and/or type='print'|'filament'|'printer' to restrict to one category. hidden_system reports how many system presets were filtered out. [needs preset/save build]

set_layer_heightA

Variable layer height for one object. mode='adaptive' (quality 0..1, higher = finer detail) generates an adaptive profile; mode='reset' (aliases: 'default', 'none') restores uniform layers. [needs M4c build]

set_height_rangeA

Set a per-height-band layer height on an object (e.g. 0-5mm at 0.1mm). Same exact range again = update; clear=True removes all ranges. [needs M4c build]

get_preset_configA

Read the full settings of a named preset without selecting it. type = print|filament|printer. [needs preset-CRUD build]

delete_presetA

Delete a USER preset (system presets and the currently-selected one are refused). type = print|filament|printer. [needs preset-CRUD build]

edit_presetA

Edit a named preset's settings and persist them: selects it, applies the changes atomically, saves under the same name. [needs preset/save build]

rename_presetA

Rename a USER preset: save a copy under the new name, select it, delete the old. [needs preset-CRUD build]

get_gcodeA

Retrieve the last successful slice's G-code as text. [needs M4a]

render_plateA

Render a PNG picture of the current plate so you can SEE it.

view="editor": the models on the bed BEFORE slicing - use to check orientation, plate contact, and first-layer footprint (an Euler triple is near-unreadable; this is the ground truth). view="preview": the sliced toolpaths colored by feature role AFTER a successful slice - support is visibly distinct, so use it to check where support actually went. angle: iso|top|front|left|right|rear|bottom. frame: "plate" zooms out to the whole bed (where the part sits, footprint), "object" zooms in on the model/toolpaths (detail). Defaults to "plate" for the editor view and "object" for the preview view; pass it explicitly when a side view of a small part would otherwise be a speck on a big bed. [needs plate_render capability, fork v2.3.2-mcp.4+]

Prompts

Interactive templates invoked by user choice

NameDescription
slice-a-modelGuided load -> check -> slice -> read-back workflow for one model file.
optimize-print-timeData-driven print-time reduction from a real slice breakdown, never adjectives alone.
edit-preset-safelyPreset change with the physics gate: consult -> set_config -> check_profile_physics -> save_preset.

Resources

Contextual data attached and managed by the client

NameDescription
knowledge_index_resourceIndex of the curated slicing knowledge base shipped with this server; each entry lists its orca://knowledge/{slug} URI.

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/MaxEllis/orcaslicer-mcp'

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