prusa-workbench-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_jobsA | List print jobs (newest first). |
| new_jobA | Start a new print job with one empty bed and make it the open job. Args: name: short name, e.g. "robocar wheels". The folder gets today's date in front. print_profile: PrusaSlicer print profile for bed-1 (default: the one selected in PrusaSlicer). filament: filament profile for bed-1 (default: the one selected in PrusaSlicer). |
| open_jobB | Open an existing job (see list_jobs) to keep working on it. |
| get_jobB | The open job: beds (profiles, settings, objects, slice status, issues like overlaps or off-bed) and objects (id, name, bed, size, position, settings). |
| list_profilesC | Print profiles for the printer, and the filaments that go with them. |
| find_settingA | Search PrusaSlicer setting names and descriptions (e.g. "brim", "infill", "seam", "ironing"). Shows each match's current value on a bed of the open job (default: the first bed). Args: query: words to look for. bed: which bed's current values to show. |
| add_modelA | Load a model file (STL, 3MF, OBJ, STEP) onto a bed. A 3MF with several objects adds each one. Args: path: file path (~ allowed). name: object name (default: from the file). bed: bed name, or "new" for a new bed with bed-1's profiles and no overrides (default: the first bed). copies: how many of it. arrange: re-arrange the bed afterwards (objects that don't fit go to new beds). |
| add_from_onshapeA | Download parts from an Onshape part studio (as millimeter STL) onto a bed. Uses the Onshape API keys from ~/onshape-mcp/.env (each download counts against the user's Onshape API allocation). Args: url: Onshape URL (document, or document/w//e/). parts: part names to take (default: all solid parts). Case-insensitive. bed: bed name or "new". copies: copies of each part. arrange: re-arrange the bed afterwards. |
| transformA | Rotate, scale, lay flat or move objects. Steps run in this order: reset, scale, rotate, lay_flat, move. Args: objects: object ids (or names); ["all"] for every object. rotate: degrees about the bed's X, Y, Z axes, e.g. [90, 0, 0] tips it over towards the back, [0, 0, 45] turns it on the bed. scale: factor (1.1 = 110 %) or [x, y, z] factors. lay_flat: put the object on its largest stable flat face. move_to: [x, y] of the footprint center on the bed, mm. move_by: [dx, dy] mm. reset: back to the loaded orientation and size (position is kept). |
| arrangeA | Arrange the objects on a bed (or every bed), packed and centered. Args: bed: bed name (default: every bed). spacing: gap between objects, mm. allow_rotate: may turn objects 90 degrees about Z to fit better. spread: objects that don't fit go to a new bed with the same settings. |
| copy_objectsC | Add copies of objects (same bed, same settings). Args: objects: object ids or names. count: copies of each. arrange: re-arrange the beds afterwards. |
| remove_objectsC | Remove objects from the job. |
| move_to_bedB | Move objects to another bed. Args: objects: object ids or names. bed: bed name, or "new" for a new bed with the same settings as the objects' current bed. arrange: re-arrange the target bed afterwards. |
| set_bedA | Change a bed's print profile, filament or settings. bed="new" creates a bed (bed-1's profiles, no overrides). Args: bed: bed name, or "new". print_profile: PrusaSlicer print profile (list_profiles). filament: filament profile. settings: PrusaSlicer settings to override, e.g. {"layer_height": 0.15, "fill_density": "30%", "perimeters": 4, "brim_width": 5}. A value of null removes that override. supports: off | auto | build_plate_only | painted, for the whole bed. support_angle: overhang threshold in degrees (supports for overhangs flatter than this; 0 = automatic). clear: drop all overrides first. |
| remove_bedA | Remove a bed. It must be empty unless delete_objects is true. |
| set_object_settingsA | Per-object settings, on top of the bed's settings (e.g. supports only for one part, more perimeters for another). These go into the 3MF as PrusaSlicer object settings. Args: objects: object ids or names. supports: off | auto | build_plate_only | painted. support_angle: overhang threshold in degrees (0 = automatic). settings: PrusaSlicer object/region settings, e.g. {"fill_density": "40%", "perimeters": 5, "brim_width": 4}. null removes one. name: rename the object(s). clear: drop all of the object's own settings first. |
| previewB | Picture of a bed before slicing: top view and iso view, objects labeled with their ids. Use it to check orientation and layout. Args: bed: bed name (default: bed-1). |
| sliceA | Slice beds with PrusaSlicer (in parallel, each with its own settings) into the job folder and show the result in the viewer. Does not print anything. Args: beds: bed names (default: all beds). open_viewer: start the viewer and open it in the browser (once per session). |
| open_viewerA | Start the viewer (if needed) and open it in the browser. It shows the newest job and follows new slices. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 19 tools
Most tools have clearly distinct purposes across jobs, beds, objects, settings, slicing, and viewing. Mild overlap exists between open_job/get_job and slice/open_viewer, but descriptions make the boundaries reasonably clear.
Names are overwhelmingly snake_case and action-oriented, fitting a verb_noun pattern. A few single-word verbs (transform, arrange, preview, slice) and new_job are minor deviations but still readable.
19 tools is at the upper end, but each maps to a real operation in a fairly complex 3D-print job workflow. The set is broad yet not obviously padded.
The surface covers the core lifecycle: jobs, beds, objects, profiles/settings, model import, transforms, preview, and slicing. Minor gaps exist around job deletion/renaming/closing and explicit export operations, but core workflows are covered.