BambuStudio-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BAMBUSTUDIO_PROFILES | Yes | Path to the bundled BambuStudio profiles (e.g., $BAMBUSTUDIO_MCP_DIR/runtime/squashfs-root/resources/profiles). | |
| BAMBUSTUDIO_WORKSPACE | Yes | Path to the workspace holding project copies, revisions, logs, and slice results. The server creates it automatically. | |
| BAMBUSTUDIO_EXECUTABLE | Yes | Path to the BambuStudio AppRun executable (e.g., $BAMBUSTUDIO_MCP_DIR/runtime/squashfs-root/AppRun). Use AppRun, which sets the path to the bundled libraries. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Prepare saved BambuStudio projects; never control a printer. Inspect the project and options first. Confirm the actual printer, every active nozzle and filament. Ask for intended loads, critical surfaces and time constraints when missing. Before print recommendations or slices, confirm the filament material, brand, exact product/variant and color. Ask about drying history and calibration. Ask only for missing details. Do not infer the actual spool from a saved profile. Use the client's web search to find official manufacturer specifications for that exact product. Cite the source URLs. Never substitute specifications for another product or variant. If exact specifications cannot be verified or web search is unavailable, use a Generic profile from list_profiles. Match the confirmed material, printer and nozzle. If the material is unknown or no compatible Generic profile exists, ask the user before proceeding. Identify values from manufacturer specifications, profiles and calibration. Label Generic values as unverified starting points. Check saved filament settings against the confirmed spool before slicing. Read bambustudio://quality-guide and call get_print_guidance before recommendations. Record user declarations with record_print_context. Resolve missing inputs and hardware/material mismatches. Run analyze_geometry for the exact revision before slicing, show its highlighted SVG previews, and explain unresolved issue IDs. Ask about moving parts, hinges, fitting holes, cosmetic faces and load direction. Suggest a small cut-out joint coupon before a long moving-part print. Use explicit revisions for changes. Compare alternatives against an unchanged baseline. Review get_job inspection or call inspect_slice for existing sliced archives. Check commands separately from saved settings. Use matched physical samples for fit and finish decisions. Geometry and slicer estimates do not prove strength or finish. Read bambustudio://guide before recommendations. Studio's unsaved GUI state is not synchronized. Poll jobs until terminal status. Preserve the original and export to a new filename.
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_environmentB | Report the Studio runtime, supported version, profiles location, and honest configuration coverage. |
| list_profilesA | Find machine, process, or filament profiles. Use exact names or paths when importing models. |
| open_projectB | Copy a saved 3MF into an isolated workspace, or import a model with explicit profiles through Studio. |
| inspect_projectC | Inspect objects, volumes, resource IDs, instances, plates, bounds, and revision history. |
| list_optionsC | Search the full versioned FFF configuration catalog; inspect types, units, ranges, defaults and scopes. |
| get_settingsA | Read settings and their origin. Scopes: project, plate, object, volume, height_range, filament. target selects plate_index (1-based), object_id, volume_id, min_z/max_z, or filament_index (0-based). Use keys to bound the response. Studio-normalized settings are returned by completed slice jobs. |
| record_print_contextB | Replace user-declared hardware, filament, calibration and physical observations for this project. Read bambustudio://print-context for the exact input shape. This records declarations, not verified measurements. It does not edit the 3MF. Observations apply only to this revision; optional job_id must match a succeeded slice. |
| get_print_guidanceB | Return deterministic missing-input questions, context/settings mismatches and sourced rules for selected concerns. Select concerns from bambustudio://quality-guide. Inputs are user declarations; no physical quality is inferred. |
| inspect_sliceA | Inspect embedded G-code targets, object layers and feature feeds without running it. With job_id inspect that exact succeeded revision; otherwise inspect the saved project, including older sliced imports. Compact results retain counts, shared path totals and bead-edge margins; raw paths stay at report_path. Geometry comparisons link paths to issue IDs from the exact revision. Unknown firmware, plate origins and extruder mappings remain unknown. Targets do not establish actual temperatures or physical fusion. |
| apply_settingsB | Validate and apply an atomic batch to a new revision. Uses JSON numbers, booleans, enums and arrays. Percentage strings such as '15%' are allowed only on percent types. A filament-scope change selects one existing filament_index; project-scope vector values must be complete arrays. Never overwrites the source. |
| restore_revisionA | Restore a historical or candidate revision as a new head; preserve all previous revisions. revision is the current head for concurrency protection; restore is the revision to copy. |
| analyze_geometryA | Find geometric print-risk candidates using nominal layer sections, facing clearances, roofs, bed contact and mesh facets; save highlighted SVG previews. Coordinates are world millimetres. Thickness is sampled geometry, not mechanical strength. Overhang angle is the downward-face threshold from horizontal in degrees (0..90). Results are heuristics. Read issue_guidance and slicer_fixes tables. Append # to a highlighted preview path. Raw arrays stay at report_path for slice correlation; the response includes counts. |
| edit_regionsA | Apply spatial edits atomically to a new revision. Read bambustudio://spatial-edits for exact shapes. Actions: rotate, paint, modifier_box, remove_modifier, height_range, layer_heights. Paint edits a shared mesh resource, affecting every instance of that resource. |
| start_sliceA | Queue a detached Studio slice. Run analyze_geometry first and show its highlighted preview. Unresolved or missing geometry analysis returns warnings, not a block. Poll get_job. 0 selects all plates; positive indexes are 1-based. |
| get_jobC | Read persistent slice or comparison status, log tail, estimates, and output locations. |
| cancel_jobA | Cancel a queued or running job and terminate its Studio subprocesses. |
| compare_candidatesA | Compare unchanged baseline with 1..7 alternatives, each {name, changes} or {name, revision}. Returns immediately with a persistent comparison job; poll get_job. Numeric constraints: max_time_seconds, max_filament_g. Spatial candidates use revisions made with edit_regions. Reports time/material estimates and tradeoffs; strength/finish remain unverified. |
| export_projectB | Export to a new filename. Supply a succeeded job_id to export that exact revision with slicing artifacts. |
| open_in_studioA | Launch the saved revision in Studio for review. This does not synchronize or replace unsaved GUI state. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| prepare_print |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| guide | Evidence-led print preparation procedure and reference sources. |
| spatial_edits | Spatial edit inputs, units, and example requests. |
| quality_guide | Sourced preparation rules, prerequisites, candidate settings and physical acceptance checks. |
| print_context | Exact user-declaration input shape and example for record_print_context. |
| coverage | |
| catalog | Complete versioned catalog. Prefer list_options for paginated queries. |
TDQS
Scored across 19 tools
Most tools have clearly distinct purposes: list_options vs get_settings (catalog vs current values), analyze_geometry vs inspect_slice (risk heuristics vs G-code inspection), and get_print_guidance vs analyze_geometry (advice vs detection) are explicitly delineated. A few boundaries are softer — inspect_project, get_settings, and list_profiles all read project/profile state, and get_job vs inspect_slice both take job_id — but the descriptions provide enough cues to pick correctly.
Every tool follows snake_case verb_noun form (list_options, restore_revision, edit_regions, cancel_job, apply_settings, inspect_slice, analyze_geometry, record_print_context). No camelCase or bare-noun deviations; open_in_studio is the only slight variant but still verb-led and predictable.
Nineteen tools is on the heavy side, but the domain (slicing, revisions, spatial edits, geometry analysis, job control, comparison) is genuinely multi-faceted and each tool maps to a distinct operation. Nothing appears redundant enough to warrant removal, though a couple of read paths could theoretically be consolidated.
Coverage is strong: open/inspect projects, edit regions, apply settings atomically, restore revisions, slice, inspect slices, compare candidates, export, and record context all exist. Minor gaps remain — there is no list_jobs/discover-jobs tool (job ids must come from prior calls) and no explicit workspace/project deletion or cleanup operation.