io.github.MaxEllis/orcaslicer-mcp
PYPI · ORCASLICER-MCP · SCANNED SEP 21
Work a running OrcaSlicer with AI: slice, tune, and understand what each setting costs
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 33 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (AGPL-3.0-only).Pass
- Actively maintained (last published 4 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability87
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4652 tokens (~103/item across 45 items; 44 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
- Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage75
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 24% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the io.github.MaxEllis/orcaslicer-mcp server?
io.github.MaxEllis/orcaslicer-mcp runs locally as a PyPI package, launched with uvx orcaslicer-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · orcaslicer-mcp
claude mcp add maxellis-orcaslicer-mcp -- uvx orcaslicer-mcp
{
"mcpServers": {
"maxellis-orcaslicer-mcp": {
"command": "uvx",
"args": [
"orcaslicer-mcp"
]
}
}
} {
"servers": {
"maxellis-orcaslicer-mcp": {
"command": "uvx",
"args": [
"orcaslicer-mcp"
]
}
}
} codex mcp add maxellis-orcaslicer-mcp -- uvx orcaslicer-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"maxellis-orcaslicer-mcp": {
"type": "local",
"command": [
"uvx",
"orcaslicer-mcp"
],
"enabled": true
}
}
} openclaw mcp add maxellis-orcaslicer-mcp --command uvx --arg orcaslicer-mcp
mcp_servers:
maxellis-orcaslicer-mcp:
command: "uvx"
args: ["orcaslicer-mcp"] {
"McpServers": {
"maxellis-orcaslicer-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"orcaslicer-mcp"
]
}
}
} assistant mcp add maxellis-orcaslicer-mcp -t stdio -c uvx -a orcaslicer-mcp
{
"mcpServers": {
"maxellis-orcaslicer-mcp": {
"command": "uvx",
"args": [
"orcaslicer-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 −3
- Stability: pass → 0.80 functional
- 20 Sept 26 +1
- Stability: 0.97 → pass security
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 0
- Schema quality: pass → fail ▼ functional
- Package version: 0.1.12 → 0.1.13 functional
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 −18
- Malware scan: pass → unverified ▼ security
- Stability: pass → 0.80 functional
- 13 Sept 26 +1
- Stability: 0.97 → pass security
- 12 Sept 26 +15
- Malware scan: unverified → pass ▲ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed pypi/orcaslicer-mcp@0.1.13
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 33 packages
| Packages resolved | 33 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
apply_and_slice Apply config and slice ~159
Apply config overrides and then slice in one step, returning {applied, errors, result} with the resulting stats and warnings. The changes are atomic (any invalid key rejects the whole batch) and unsaved, exactly like set_config, so they revert if the preset is reselected. Use this to test the effect of a tweak in a single call. Use set_config then slice_and_wait to keep the steps separate, or compare_settings to try several values of one key.
| Name | Type | Req | Description |
|---|---|---|---|
| changes | object | yes | Map of OrcaSlicer config key to new value to apply before slicing, e.g. {'layer_height': 0.2}. Same format and validation as set_config; discover keys with search_settings or find_config_keys. |
No output schema declared.
No examples provided.
arrange_plate Arrange plate ~27
Auto-arrange all objects on the plate (async job; poll get_job_status until idle).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
auto_orient Auto-orient objects ~27
Auto-orient all objects for printing (async job; poll get_job_status until idle).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
cancel_slice Cancel running slice ~39
Abort a running slice, or unwedge a stale 'slicing' state (e.g. after an object outside the bed). Safe when idle.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
check_placement Check object placement ~111
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
check_profile_physics Sanity-check profile physics ~62
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.
| Name | Type | Req | Description |
|---|---|---|---|
| changes | – | – | – |
No output schema declared.
No examples provided.
compare_settings Compare settings ~65
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.
| Name | Type | Req | Description |
|---|---|---|---|
| extra | – | – | – |
| key | string | yes | – |
| values | array | yes | – |
No output schema declared.
No examples provided.
compare_slices Compare slice variants ~308
Slice the current plate under several named variants and compare the cost of each. Each variant is {"name": str, "changes": {setting: value}}; changes={} means the current config as-is (a natural baseline row). Applies each variant over the ORIGINAL config (resetting between variants, so they don't stack), slices it, then restores your config exactly as it was - nothing is left changed (slice validity is left false, as after any un-resliced edit). Returns a ready-to-relay `headline` and `table_markdown`, plus structured `variants`. All deltas and percentages are ALREADY computed and rounded against `baseline` (defaults to the changes={} variant, else the first) - relay them as given rather than recomputing. `recommended` names one pick; `recommended_is_dominant` says whether it beats every variant on every axis (time, filament, warnings) or is only the fastest warning-free option amid a genuine trade-off (`tradeoff` then names the frontier). Each variant is a full slice (minutes); capped at 8. Set detail=True only when a per-feature (wall/infill/support) split is wanted - it grows the response ~N x. With more than ~5 variants, lead with the recommendation and the extremes, not all rows.
| Name | Type | Req | Description |
|---|---|---|---|
| baseline | – | – | – |
| detail | boolean | – | – |
| timeout | integer | – | – |
| variants | array | yes | – |
No output schema declared.
No examples provided.
consult Consult slicing knowledge ~104
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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | – |
No output schema declared.
No examples provided.
delete_object Delete object from plate ~116
Remove one object from the current plate by id. This is permanent within the session and cannot be undone through the API; the other objects keep their ids. Call list_objects first to get the id. Deleting leaves the last slice invalid, so re-slice afterwards. To drop just one copy made with duplicate_object, pass that copy's id.
| Name | Type | Req | Description |
|---|---|---|---|
| object_id | integer | yes | Integer id of the object to remove, taken from the 'id' field of list_objects (not the array index or the file name). |
No output schema declared.
No examples provided.
delete_preset Delete preset ~47
Delete a USER preset (system presets and the currently-selected one are refused). type = print|filament|printer.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| type | string | yes | – |
No output schema declared.
No examples provided.
describe_plate Describe plate placement from G-code ~224
Machine-readable plate facts from the last slice's G-code, per object, so you can answer orientation and placement questions instead of guessing from Euler angles or a picture: how the part stands (flat / tilted / on an edge or corner, from first-layer contact versus its widest layer), the first-layer footprint as islands, where overhang extrusions concentrate by 10 mm height band, where support stands and where its interface touches the part, and which side the outer-wall seams sit on (checked against seam_position). Each object gets a server-written summary sentence; relay it rather than recomputing. Read-only. Needs a valid slice; returns {"error": "not_sliced"} otherwise. Copies of one object are aggregated (Orca labels every copy 0); footprint islands still show per-copy contact. The parsed result is cached per slice (the G-code itself is still downloaded each call to detect a new slice). All bboxes are [x0, y0, x1, y1] in plate millimetres.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
describe_setting Describe a setting ~137
Authoritative definition of one OrcaSlicer setting: label, tooltip, type, unit, valid range, enum values, and default. Read-only and offline, so it works even when OrcaSlicer is not running. Use it to learn a setting's exact type and allowed values before writing it with set_config or edit_preset. To find candidate keys by keyword first, use search_settings.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | Exact OrcaSlicer config key, e.g. 'layer_height' or 'sparse_infill_density'. Find keys with search_settings or find_config_keys. Unknown keys return an error. |
No output schema declared.
No examples provided.
diagnose_plate Diagnose plate issues ~102
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
duplicate_object Duplicate object ~34
Duplicate an object on the plate by id (adds a copy, offset from the original).
| Name | Type | Req | Description |
|---|---|---|---|
| object_id | integer | yes | – |
No output schema declared.
No examples provided.
edit_preset Edit preset (overwrites stored settings) ~151
Edit a named preset's settings and persist them: selects it, applies the changes atomically, saves under the same name. Runs the check_profile_physics gate first (F15) and refuses with error=physics_blocked if the changes would INTRODUCE a failing physics check (pre-existing failures do not block unrelated edits). For type='filament', checks that also depend on the currently selected PRINT preset (flow_ceiling, temp_vs_flow) do not block; they come back as cross_layer_warnings, because a filament preset pairs with many print presets.
| Name | Type | Req | Description |
|---|---|---|---|
| changes | object | yes | – |
| name | string | yes | – |
| type | string | yes | – |
No output schema declared.
No examples provided.
find_config_keys Find config keys ~32
Find config keys containing `substring` (helps discover among the ~600 keys).
| Name | Type | Req | Description |
|---|---|---|---|
| substring | string | yes | – |
No output schema declared.
No examples provided.
get_config Get config values ~26
Read merged config values (optionally filtered to `keys`).
| Name | Type | Req | Description |
|---|---|---|---|
| keys | – | – | – |
No output schema declared.
No examples provided.
get_gcode Download sliced gcode ~20
Retrieve the last successful slice's G-code as text.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_job_status Get background job status ~67
Whether the plate's background job worker is idle or still running. Read-only. arrange_plate and auto_orient start async jobs; poll this until it reports idle before you read object positions or slice, so you act on the settled layout rather than a mid-move state.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_preset_config Get preset config ~45
Read the full settings of a named preset without selecting it. type = print|filament|printer.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| type | string | yes | – |
No output schema declared.
No examples provided.
get_slice_breakdown Get slice time/flow breakdown ~128
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_slice_status Get slice status ~103
State of the current or most recent slice: state (slicing, done, error, or idle), stats (print time and filament use when done), and any warnings or errors. Read-only. Poll this after slice to follow progress and read the result; 'idle' means no slice has run or it was cancelled. For only the pass/fail warnings use get_slice_warnings; for a per-feature time and filament breakdown use get_slice_breakdown.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_slice_warnings Get slice warnings ~112
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_status Get OrcaSlicer status ~93
Snapshot of the current OrcaSlicer session: app and project info, the active print/filament/printer presets with which of their keys are modified (dirty), whether the last slice is still valid, and whether a slice is running. Read-only. Call it first to orient before slicing or editing, to see which settings drift from their preset, or to check slice_result_valid before trusting earlier stats.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_objects List plate objects ~33
List objects on the current plate: id (stable), name, size_mm, and transform (offset/rotation/scale).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_presets List presets ~109
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_system | boolean | – | – |
| type | – | – | – |
No output schema declared.
No examples provided.
load_model Load a model file ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
No output schema declared.
No examples provided.
recall_prints Recall past prints of this model ~153
How did past prints of THIS model actually turn out? Matches the current plate by geometry (or by model_name if given / the slicer is offline), returning each past print's result (success/cancelled/error), your recorded verdict (e.g. 'warped'), and the settings it was sliced with. Call this BEFORE slicing and tell the user anything relevant (a past warp, a failed layer height). Read-only. Returns available=false and nothing else when no outcome store exists. If neither geometry nor name matches, it returns the most recent prints of ANY model with matched_by='recent'; never attribute those to the current model.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| model_name | – | – | – |
No output schema declared.
No examples provided.
remember Save a note ~57
Persist a context fact for future sessions. scope: 'machine:<printer>/<filament>', 'user', or 'project:<name>'. Local plain files; user-readable and deletable.
| Name | Type | Req | Description |
|---|---|---|---|
| note | string | yes | – |
| scope | string | yes | – |
No output schema declared.
No examples provided.
rename_preset Rename preset ~155
Rename a user preset by copying it to new_name, selecting the copy, and deleting the original. Only user presets can be renamed; system presets are read-only. Because it selects the renamed preset, this leaves it active and discards unsaved config overrides, the same as select_preset, and leaves the last slice invalid, so re-slice afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| new_name | string | yes | New name for the preset. Should not collide with an existing preset of the same type. |
| old_name | string | yes | Current name of the user preset to rename, as shown by list_presets. |
| type | string | yes | Preset group: 'print', 'filament', or 'printer'. |
No output schema declared.
No examples provided.
render_plate Render plate image ~224
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.
| Name | Type | Req | Description |
|---|---|---|---|
| angle | string | – | – |
| frame | – | – | – |
| height | integer | – | – |
| view | string | – | – |
| width | integer | – | – |
No output schema declared.
No examples provided.
save_gcode Save G-code and record the slice ~199
Save the last successful slice's G-code and record the slice (model, geometry, full settings snapshot) under that filename, so that when klipper-mcp later prints this exact file the real outcome joins back to these settings. Returns the saved path; hand it to klipper-mcp's start_print. Default filename: <object>_<timestamp>.gcode. Never overwrites an existing file — a name collision gets a -2, -3, ... suffix. Writes into a gcode folder under PRINT_OUTCOMES_DIR if set, else under the shared print-outcomes folder (~/projects/_shared/print-outcomes) if it already exists, else under ~/.orcaslicer-mcp; the gcode folder itself is created if missing. If the shared outcome store is not present, or the store write fails, the file is still saved and outcome_recorded is False.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | – | – | – |
No output schema declared.
No examples provided.
save_preset Save preset (overwrites stored settings) ~123
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; use it when creating a filament preset for a DIFFERENT material than the one selected, otherwise the new preset inherits the base's filament_type and temperatures. Run check_profile_physics first; do not save when verdict=blocked.
| Name | Type | Req | Description |
|---|---|---|---|
| detach | boolean | – | – |
| name | string | yes | – |
| type | string | yes | – |
No output schema declared.
No examples provided.
search_settings Search settings ~54
Search settings by keyword across key/label/tooltip; returns compact matches (key, label, category, short tooltip), ranked key/label first. Offline.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
select_preset Select preset ~170
Make the named preset the active one for its group (print, filament, or printer). Selecting a preset discards unsaved set_config overrides and reverts settings to the preset's stored values, so it is also the canonical way to reset dirty config; it leaves the last slice invalid, so re-slice afterwards. Use list_presets for valid names, and save_preset first if unsaved edits should survive the switch.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Exact name of an existing preset in that group, as returned by list_presets (e.g. '0.20mm Standard'). Unknown names are rejected. |
| type | string | yes | Which preset group to switch: 'print' (process/quality), 'filament' (material), or 'printer' (machine). |
No output schema declared.
No examples provided.
set_config Set config values ~214
Apply config changes to the active project as unsaved overrides, atomically: if any key is invalid the whole batch is rejected and nothing changes. Returns {applied, errors}. Overrides show as modified in get_status, are not written to any preset file, and revert if the preset is reselected; call save_preset to persist them. Each apply invalidates the last slice, so re-slice afterwards. It does not run the physics gate, so for temperature, speed, acceleration, or flow keys run check_profile_physics before trusting the result. To edit a stored preset rather than the live project, use edit_preset.
| Name | Type | Req | Description |
|---|---|---|---|
| changes | object | yes | Map of OrcaSlicer config key to new value, e.g. {'layer_height': 0.2, 'sparse_infill_density': '15%'}. Values must match each setting's type; percent settings take strings like '15%'. Discover valid… |
No output schema declared.
No examples provided.
set_height_range Set height-range config ~220
Override the layer height over a Z band of one object (e.g. 0 to 5 mm printed at 0.1 mm for finer detail near the base). Passing the same min_z and max_z again updates that band's height; clear=True removes every band on the object. Bands are per-object and invalidate the last slice, so re-slice afterwards. For a single height across the whole object use set_layer_height instead. Get the id from list_objects.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | If True, remove all height-range overrides on the object and ignore the z and layer_height args. |
| layer_height | – | – | Layer height in mm to use within the band, e.g. 0.1. Required unless clear=True. |
| max_z | – | – | Upper Z bound of the band in mm. Required unless clear=True. |
| min_z | – | – | Lower Z bound of the band in mm (object-relative). Required unless clear=True. |
| object_id | integer | yes | Integer id of the target object, from list_objects. |
No output schema declared.
No examples provided.
set_layer_height Set layer height ~78
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | – |
| object_id | integer | yes | – |
| quality | number | – | – |
No output schema declared.
No examples provided.
set_object_config Set per-object config ~67
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).
| Name | Type | Req | Description |
|---|---|---|---|
| changes | object | yes | – |
| object_id | integer | yes | – |
No output schema declared.
No examples provided.
slice Start slicing ~101
Start slicing the current plate in the background and return immediately, without waiting for the result. The reply is 'started' (a slice began), 'already_valid' (the plate is unchanged and the last result still holds), or a conflict if a slice is already running. Fire-and-forget: poll get_slice_status for progress and stats, or cancel_slice to stop it. Prefer slice_and_wait when you want the finished stats back in one call.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
slice_and_wait Slice and wait for result ~130
Slice the current plate and block until it finishes, then return the final stats and warnings in one call. If the plate is already sliced and unchanged, it returns the existing result without re-slicing. This is the usual way to slice when you want the outcome immediately. For a non-blocking start, use slice then poll get_slice_status; to sweep one setting across values, use compare_settings.
| Name | Type | Req | Description |
|---|---|---|---|
| timeout | integer | – | Maximum seconds to wait for the slice to finish before returning the last known state. Default 300; raise it for large or textured plates that slice slowly. |
No output schema declared.
No examples provided.
transform_object Transform object ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_id | integer | yes | – |
| rotate | – | – | – |
| scale | – | – | – |
| translate | – | – | – |
No output schema declared.
No examples provided.
watch_events Watch OrcaSlicer events ~33
Collect live events (slice.*/config.changed/project.opened) over a bounded window.
| Name | Type | Req | Description |
|---|---|---|---|
| seconds | integer | – | – |
No output schema declared.
No examples provided.
What is the io.github.MaxEllis/orcaslicer-mcp server?
io.github.MaxEllis/orcaslicer-mcp is listed in the public MCP registry as io.github.MaxEllis/orcaslicer-mcp. Work a running OrcaSlicer with AI: slice, tune, and understand what each setting costs. This page covers its PyPI package (orcaslicer-mcp).
Is the io.github.MaxEllis/orcaslicer-mcp server safe to use?
io.github.MaxEllis/orcaslicer-mcp scores 67 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.MaxEllis/orcaslicer-mcp server expose?
io.github.MaxEllis/orcaslicer-mcp exposes 44 tools: get_status, get_config, set_config, slice, get_slice_status, and 39 more. Their descriptions and schemas cost roughly 4,621 tokens of context every time the server is loaded.
Is the io.github.MaxEllis/orcaslicer-mcp server still maintained?
io.github.MaxEllis/orcaslicer-mcp is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.MaxEllis/orcaslicer-mcp server under?
io.github.MaxEllis/orcaslicer-mcp declares the AGPL-3.0-only licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.