Bambu Studio (unofficial)
PYPI · UNOFFICIAL-BAMBU-MCP
Build, edit, slice, check and calibrate Bambu Studio projects; read a Bambu Lab printer's status.
Available components
Last scanned (14 hours ago)
Scores higher than 56% of PyPI servers
Category IoT and Hardware
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 build step with no custom scripting around it. View diagnostics → Pass
- 1 of 33 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- 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 (MIT).Pass
- Actively maintained (last published 6 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 10208 tokens (~117/item across 87 items; 87 tools + 0 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 Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage67
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_plate" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 88 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
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.
- 4 Nov 26 −11
- Malware scan: pass → unverified ▼ security
- Stability: unverified → 0.23 ▲ functional
- 30 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 28 Oct 26 49
First indexed and scored.
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 4 Nov 2026 · Analysed pypi/unofficial-bambu-mcp@0.3.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
| Reason | No attestation published |
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 →
add_brim_ears ~295
Brim ears: small round brims only where a part needs them, instead of a brim all around (Bambu Studio's Painted brim). Meant for print-in-place and articulated models: a full brim fills the joint gaps on the first layer and welds them. Without points, ears go to the tips of the thin parts of the first layer (fingers, toes, any tip thinner than `narrow` mm), each as large as possible up to `radius` without reaching another piece, a gap or hole, or a second thin part (those tips are listed as skipped, with the reason). small > 0 also gives ears to first-layer pieces smaller than that (mm²), at their ends. points: [[x, y], ...] or [[x, y, radius]] in plate mm, placed as given, with a warning when one would weld something. radius 0 = Bambu Studio's default (16 first-layer line widths across). keep: add to the ears the object already has. Look at them with preview_plate(view='top', zoom=True), then slice_project and preview_layer(layer=1).
| Name | Type | Req | Description |
|---|---|---|---|
| clearance | number | – | – |
| keep | boolean | – | – |
| narrow | number | – | – |
| object | string | yes | – |
| points | – | – | – |
| radius | number | – | – |
| small | number | – | – |
No output schema declared.
No examples provided.
add_layer_action ~142
Do something when the print reaches height z (mm), before that layer is printed: action = pause (e.g. to insert magnets or nuts; message is shown in Bambu Studio), filament_change (switch to filament slot `filament` from that height on, with the AMS), gcode (any G-code line(s), e.g. 'M104 S210'). z is snapped to the nearest real layer at or above it.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| filament | integer | – | – |
| gcode | string | – | – |
| message | string | – | – |
| plate | integer | yes | – |
| z | number | yes | – |
No output schema declared.
No examples provided.
add_modifier ~215
Add a part to an object, covering its whole footprint between z_from and z_to (mm from the object's bottom; z_to 0 = top), or only region [x0, y0, x1, y1] (mm from the object's center). kind: modifier (different settings inside, e.g. {"sparse_infill_density": "100%"} for the top 5 mm), negative (removes material), support_blocker, support_enforcer. shape: box, or cylinder (round, as wide as the smaller side of the region: e.g. a hole for a magnet or a screw is kind='negative', shape='cylinder', region=[-4, -4, 4, 4] for 8 mm).
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
| object | string | yes | – |
| region | – | – | – |
| settings | – | – | – |
| shape | string | – | – |
| z_from | number | – | – |
| z_to | number | – | – |
No output schema declared.
No examples provided.
add_plate ~23
Add an empty plate at the end.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | – |
No output schema declared.
No examples provided.
add_relief ~254
Text or an SVG logo on a face of an object, raised or engraved, like Bambu Studio's Text and SVG tools. It wraps around curved faces: on a cup it keeps its size along the surface and stands out square to it. face: top, bottom, front, back, left, right (the side it is read from); at: [x, y, z] plate point to center it on (default: the middle of that face); size: capital letter height for text, longest side for an SVG (mm); depth: how far it stands out or goes in; rotate: degrees within the face. Raised, it is a new part (filament=N prints it in another color); engraved, a negative part (set_part_type turns it back). Look at preview_plate afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| at | – | – | – |
| depth | number | – | – |
| engrave | boolean | – | – |
| face | string | – | – |
| filament | integer | – | – |
| font | string | – | – |
| object | string | yes | – |
| rotate | number | – | – |
| size | number | – | – |
| svg | string | – | – |
| text | string | – | – |
No output schema declared.
No examples provided.
add_shape ~305
Create a simple solid: box (width, depth, height), cylinder (diameter, height), cone (diameter, diameter_top, height), sphere (diameter), text (text, text_height = capital letters in mm, height = depth of the letters; base > 0 puts the text on a plate that thick, as a separate part 'Base' with filament base_filament (0 = same as the text), e.g. white letters on a black tag; font = path to a .ttf/.otf), svg (svg = path of an .svg file, a logo raised `height` mm; size = its longest side in mm, 0 = the file's own size; base works as for text). To put text or a logo on an existing object, use add_relief.
| Name | Type | Req | Description |
|---|---|---|---|
| base | number | – | – |
| base_filament | integer | – | – |
| depth | number | – | – |
| diameter | number | – | – |
| diameter_top | number | – | – |
| filament | integer | – | – |
| font | string | – | – |
| height | number | – | – |
| name | string | – | – |
| plate | integer | – | – |
| shape | string | yes | – |
| size | number | – | – |
| svg | string | – | – |
| text | string | – | – |
| text_height | number | – | – |
| width | number | – | – |
| x | – | – | – |
| y | – | – | – |
No output schema declared.
No examples provided.
align_objects ~99
Line up objects of one plate, like Bambu Studio's Align / Distribute, by their outer boxes. align: left, right, center_x (along X); front, back, center_y (along Y). distribute: 'x' or 'y' spaces them evenly between the two outermost ones. Both can be given.
| Name | Type | Req | Description |
|---|---|---|---|
| align | string | – | – |
| distribute | string | – | – |
| objects | array | yes | – |
No output schema declared.
No examples provided.
ams_load ~174
Load the filament of an AMS slot into the nozzle, like Load in Bambu Studio's Device tab: the nozzle heats, the filament loaded now (if any) goes back to its slot, the new one comes in and is purged. slot: as in printer_status (AMS 1 = slots 1-4, AMS 2 = 5-8). Only when the printer is not printing. First call without confirm: nothing is sent, the answer says what would happen and the confirm code; tell the user, and only after they agree call again with confirm=<code>. Bambu firmware accepts it only in LAN-only mode with Developer Mode; otherwise use the printer screen, Bambu Handy or Bambu Studio.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | string | – | – |
| slot | integer | yes | – |
No output schema declared.
No examples provided.
ams_unload ~115
Unload the filament in the nozzle back to its AMS slot, like Unload in Bambu Studio's Device tab (the nozzle heats). Only when the printer is not printing. First call without confirm: nothing is sent, the answer gives the confirm code; call again with confirm=<code> only after the user agrees. Bambu firmware accepts it only in LAN-only mode with Developer Mode; otherwise use the printer screen, Bambu Handy or Bambu Studio.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | string | – | – |
No output schema declared.
No examples provided.
arrange ~318
Arrange objects by their real outline seen from above, brim and brim ears included, so shapes can nest (like Bambu Studio's Arrange, which only uses convex hulls). gap: mm between those outlines (and from the plate's edge half of it). Which objects: plate N, the named `objects` (ids or names), or all (plate=0). plates: 0 = each object stays on its plate; N = spread them over plates 1..N, evenly; -1 = as few plates as possible. rotate: allow turning them by multiples of rotation_step degrees (e.g. 60 for snowflakes); multi_material false = one material (set of filaments) per plate; avoid_calibration_area: keep off the printer's flow calibration corner (P1S/X1: front left); align_to_y: long side along Y first. Plates with more than one material keep the back right corner free for the prime tower. If something does not fit, nothing is moved: the answer says what is left over and how many plates it needs. Objects not being arranged stay where they are. Look at preview_plate(view='top') afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| align_to_y | boolean | – | – |
| avoid_calibration_area | boolean | – | – |
| gap | number | – | – |
| multi_material | boolean | – | – |
| objects | – | – | – |
| plate | integer | – | – |
| plates | integer | – | – |
| rotate | boolean | – | – |
| rotation_step | number | – | – |
No output schema declared.
No examples provided.
bambu_status ~29
Where Bambu Studio is installed, its version, whether it is running, and the current project.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
boolean_objects ~157
Mesh boolean between two objects where they are on the plate, like Bambu Studio's Mesh boolean. difference: cut tool_object's shape out of object (a hole, a slot, a lettering); intersection: keep only what they share; union: weld tool_object onto object (onto its part `part`, default the biggest). The result keeps object's name, settings and filaments; painted colors stay, new faces take the part's filament. The tool object is removed unless keep_tool=True. Both must be closed solids (check_object).
| Name | Type | Req | Description |
|---|---|---|---|
| keep_tool | boolean | – | – |
| object | string | yes | – |
| operation | string | – | – |
| part | string | – | – |
| tool_object | string | yes | – |
No output schema declared.
No examples provided.
check_object ~33
Is the mesh a closed, printable solid? Size, volume, number of separate pieces.
| Name | Type | Req | Description |
|---|---|---|---|
| object | string | yes | – |
No output schema declared.
No examples provided.
check_print_risks ~130
Before a long print: parts likely to come off or topple, and settings that do not fit. Per plate (0 = all): tall and narrow parts (height against the smaller side of the footprint), parts standing on a narrow or tiny footing without a brim (e.g. pins lying on their side), filaments whose temperature for this build plate is 0 (not meant for it), and plates where tall parts share a long print with many others (a part that fails late can knock the others: print them apart).
| Name | Type | Req | Description |
|---|---|---|---|
| plate | integer | – | – |
No output schema declared.
No examples provided.
convert_units ~110
An object modeled in other units, like Bambu Studio's Convert from inch / meter: unit 'inch', 'cm' or 'meter' scales it up from that unit to millimeters (a 1-unit cube becomes 25.4, 10 or 1000 mm); restore=True scales it back down. import_model says when a model looks like it is in inches or meters.
| Name | Type | Req | Description |
|---|---|---|---|
| object | string | yes | – |
| restore | boolean | – | – |
| unit | string | – | – |
No output schema declared.
No examples provided.
copy_object_settings ~103
Copy one object's own settings (set_object_setting: infill, walls, brim...) to other objects, like Bambu Studio's Copy / Paste process settings. keys: only these; replace=True first removes the targets' own settings; height_ranges=True copies the height bands too.
| Name | Type | Req | Description |
|---|---|---|---|
| from_object | string | yes | – |
| height_ranges | boolean | – | – |
| keys | – | – | – |
| replace | boolean | – | – |
| to_objects | array | yes | – |
No output schema declared.
No examples provided.
cut_object ~504
Cut an object with a plane, optionally with connectors that line the pieces up for gluing (like the connectors of Bambu Studio's Cut tool). keep: both | bottom | top. The plane is horizontal at height z (mm from the object's bottom), or goes through `point` [x, y, z] (plate mm, z above the bed) with `normal` [nx, ny, nz]: [1, 0, 0] cuts vertically across x, [0.5, 0, 1] is tilted. place: auto = the lower piece stays as it is and the upper one lies on its cut face; cut_down = both lie on their cut faces; keep = both as they were. connector: none | plug (a peg on the piece whose cut face is up, a hole with `clearance` mm per side in the other) | dowel (holes in both pieces and a separate pin, added to the plate) | dovetail (a tongue across the whole cut, along its length, and a slot in the other piece: they slide together from the side). shape: cylinder | square | hexagon; style: prism | frustum (tapered, centers itself); size: diameter or side in mm, or the dovetail's narrow width (0 = from the cut); depth: peg, pin or dovetail height (0 = automatic); count: 0 = one per piece of the cut (two along a long one), N = spread over the cut; positions: [[x, y], ...] or [[x, y, z]] in plate mm, taken on the plane (for a dovetail: a point on its middle line). Holes keep 2 mm of material from the edge and get shallower where a piece is thin; connectors that do not fit are listed as skipped. Modifiers, negative parts and painted colors are kept on the pieces.
| Name | Type | Req | Description |
|---|---|---|---|
| clearance | number | – | – |
| connector | string | – | – |
| count | integer | – | – |
| depth | number | – | – |
| keep | string | – | – |
| normal | – | – | – |
| object | string | yes | – |
| place | string | – | – |
| point | – | – | – |
| positions | – | – | – |
| shape | string | – | – |
| size | number | – | – |
| style | string | – | – |
| z | number | – | – |
No output schema declared.
No examples provided.
delete_object ~22
Remove an object from the project.
| Name | Type | Req | Description |
|---|---|---|---|
| object | string | yes | – |
No output schema declared.
No examples provided.
delete_preset ~85
Delete one of your user presets (a backup copy is kept, see the answer). A preset in your Bambu cloud cannot be deleted from here, because Bambu Studio would download it again at its next start: only its own Delete removes the cloud copy, and the answer says where it is.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| name | string | yes | – |
No output schema declared.
No examples provided.
delete_printer_files ~154
Free space on the printer's SD card: delete timelapse videos (with their thumbnails), files of past prints (kind='prints') or thumbnails whose video is gone (kind='thumbnails'). Pick them by names (from printer_files) or all those older than older_than_days. Two steps: without confirm nothing is deleted, the answer lists what would go, the space freed and a code; show the list to the user and only if they agree call again with confirm=<code>. Deleted files cannot be recovered. Nothing is deleted while a print is running.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | string | – | – |
| kind | string | yes | – |
| names | – | – | – |
| older_than_days | integer | – | – |
No output schema declared.
No examples provided.
download_printer_file ~88
Copy a file from the printer's SD card into the projects folder: a timelapse video (name from printer_files, or 'latest') or the file of a past print (kind='prints'). For a timelapse its last frame is shown too: the finished print. Read-only on the printer.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
| name | string | – | – |
No output schema declared.
No examples provided.
duplicate_object ~49
Copy an object `copies` times onto free spots (same plate unless `plate` is given).
| Name | Type | Req | Description |
|---|---|---|---|
| copies | integer | – | – |
| object | string | yes | – |
| plate | integer | – | – |
No output schema declared.
No examples provided.
edit_preset ~171
Change settings of one of your user presets directly, without a project (a backup copy is kept). kind: filament | process | printer. values: {"key": "value"}, e.g. {"pressure_advance": "0.025", "enable_pressure_advance": "1"} or {"nozzle_temperature": "215"}; a list gives one value per extruder variant (Standard / High Flow nozzle); null removes the key, so the value comes from the parent preset again. Bambu system presets are read-only: save a user preset from them first. Bambu Studio sees the change after it restarts, and uploads it to your Bambu cloud if the preset is there.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| name | string | yes | – |
| values | object | yes | – |
No output schema declared.
No examples provided.
export_stl ~109
Save objects as STL files (e.g. to print them on other printers of a farm, or to share them): the named objects, all of a plate, or all of the project. One file per object, or one_file=True for all of them where they are on the plate. Negative parts (holes) are cut out; colors and settings are not part of an STL.
| Name | Type | Req | Description |
|---|---|---|---|
| objects | – | – | – |
| one_file | boolean | – | – |
| plate | integer | – | – |
No output schema declared.
No examples provided.
filament_colors ~44
Official colors (name, hex) of a Bambu filament line, e.g. 'Bambu PLA Basic @BBL X1C'.
| Name | Type | Req | Description |
|---|---|---|---|
| preset | string | yes | – |
No output schema declared.
No examples provided.
fill_plate ~148
Fill the free area of an object's plate with copies of it, like Bambu Studio's Fill bed with copies. copies: 0 = as many as fit, N = at most N. Shapes nest by their real outline (brim and brim ears counted), and rotate=True also tries turning them by rotation_step degrees. The original is placed again together with the copies (more fit), unless keep_original=True; the other objects on the plate stay where they are.
| Name | Type | Req | Description |
|---|---|---|---|
| copies | integer | – | – |
| gap | number | – | – |
| keep_original | boolean | – | – |
| object | string | yes | – |
| rotate | boolean | – | – |
| rotation_step | number | – | – |
No output schema declared.
No examples provided.
get_project ~56
Current project: printer, process, filament slots, plates, objects (id, name, center, size, filaments), setting overrides and warnings. If the project was saved in Bambu Studio in the meantime it is re-read first.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_purge_volumes ~55
Purge (flush) volumes between filament slots, in mm³, and the multiplier: the filament wasted at each change on the prime tower (or into infill/objects, see set_purge_volumes).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_setting ~37
Current value of a print/filament/printer setting, where it comes from, and the preset value.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | – |
No output schema declared.
No examples provided.
import_model ~105
Put an STL, OBJ or 3MF on a plate. Without x/y it goes to the free spot closest to the center. From a 3MF every object is imported (with its parts and filament assignments).
| Name | Type | Req | Description |
|---|---|---|---|
| filament | integer | – | – |
| name | string | – | – |
| path | string | yes | – |
| plate | integer | – | – |
| rotate_z | number | – | – |
| scale | number | – | – |
| x | – | – | – |
| y | – | – | – |
No output schema declared.
No examples provided.
lay_flat ~55
Rotate an object so one of its flat faces lies on the bed: face 1 = the biggest flat face, 2 = the second biggest, and so on.
| Name | Type | Req | Description |
|---|---|---|---|
| face | integer | – | – |
| object | string | yes | – |
No output schema declared.
No examples provided.
list_printers ~31
Printer short names that can be used anywhere a printer is asked (a full machine preset name works too).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_user_presets ~85
Your own Bambu Studio presets (kind: filament | process | printer; empty = all): the preset each one inherits and what it changes, whether it is in your Bambu cloud (then only Bambu Studio can delete or rename it), and which presets inherit it. To find system presets too, use search_presets.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | – |
No output schema declared.
No examples provided.
make_first_layer_test ~81
Add a plate with the first `height` mm of the objects of a plate (or of the listed objects): a short print to check bed adhesion and the first layers before a long print. Slice it with slice_project(plate=<new plate>).
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | – | – |
| objects | – | – | – |
| plate | integer | – | – |
No output schema declared.
No examples provided.
make_flow_test ~116
Add a plate of flow-rate squares for a filament slot, each printed with a different flow modifier (percent) engraved on top. Pass 1: -20..+20 step 5. Pass 2: around the best one, e.g. low=-4 high=4 step=1. Pick the square with the smoothest top surface (no gaps, no ridges).
| Name | Type | Req | Description |
|---|---|---|---|
| filament | integer | – | – |
| high | number | – | – |
| low | number | – | – |
| step | number | – | – |
No output schema declared.
No examples provided.
make_max_flow_test ~126
Max volumetric speed test for a filament slot, as a separate project file (the open project is not changed): single-wall cylinders, each printed at the wall speed that gives the volumetric speed Q (mm³/s) on its tag. Default range: around the filament's current limit. The highest Q without gaps or weak walls is the max; use a bit less (about 90%) as filament_max_volumetric_speed.
| Name | Type | Req | Description |
|---|---|---|---|
| filament | integer | – | – |
| high | number | – | – |
| low | number | – | – |
| step | number | – | – |
No output schema declared.
No examples provided.
make_pa_tower ~107
Add a plate with a pressure advance (flow dynamics) tower: a thin square tube printed fast, the K value grows by `step` every millimeter. Find the height with the sharpest corners and no gaps: K = start + floor(height) * step. When sending it, turn off the printer's automatic flow dynamics calibration.
| Name | Type | Req | Description |
|---|---|---|---|
| end | number | – | – |
| filament | integer | – | – |
| start | number | – | – |
| step | number | – | – |
No output schema declared.
No examples provided.
make_retraction_test ~91
Stringing test for a filament slot: one small separate project per retraction length (Bambu printers cannot change retraction during a print). Print them one after the other and keep the shortest length without strings between the two pillars; then set_setting('filament_retraction_length', value, slot) or save_filament_preset.
| Name | Type | Req | Description |
|---|---|---|---|
| filament | integer | – | – |
| lengths | – | – | – |
No output schema declared.
No examples provided.
make_temperature_tower ~113
Add a plate with a temperature tower for a filament slot: one 8 mm block per temperature (hottest at the bottom), each with a bridge and its temperature engraved on the front. Defaults: the filament's temperature +15 down to -25 °C, within its allowed range. Pick the block with the best bridge, surface and least stringing.
| Name | Type | Req | Description |
|---|---|---|---|
| end | number | – | – |
| filament | integer | – | – |
| start | number | – | – |
| step | number | – | – |
No output schema declared.
No examples provided.
make_vfa_test ~128
Add a plate with a VFA test (vertical fine artifacts: fine vertical ripples on walls that some speeds cause): one block per outer wall speed from start to end mm/s, the speed engraved on top. Look at the long faces with light from the side and pick the fastest speed without ripples for outer_wall_speed. Bambu Studio's VFA tower changes the speed inside one object; here each block has its own speed.
| Name | Type | Req | Description |
|---|---|---|---|
| end | number | – | – |
| filament | integer | – | – |
| start | number | – | – |
| step | number | – | – |
No output schema declared.
No examples provided.
measure_between ~119
Distance between two objects or two parts (part_a / part_b; the same object twice with two parts measures the clearance between them), in plate mm: the smallest gap with about where it is, the distance between their centers, the gap along each axis between their outer boxes (negative = they overlap along it) and, if they overlap, the volume they share.
| Name | Type | Req | Description |
|---|---|---|---|
| object_a | string | yes | – |
| object_b | string | yes | – |
| part_a | string | – | – |
| part_b | string | – | – |
No output schema declared.
No examples provided.
measure_object ~166
Measure an object (or its part `part`), in plate mm: size and where it is, each part's size, volume and surface, the area standing on the bed, the smallest gaps between its separate pieces or parts (the clearance of print-in-place joints, with where), and walls thinner than the nozzle's line width (or min_wall mm), with where and at which heights. z >= 0: also the cross-section at that height above the bed, every island with its length, width and thickest point and its holes (how long and thick a bar is, how wide a hole is).
| Name | Type | Req | Description |
|---|---|---|---|
| min_wall | number | – | – |
| object | string | yes | – |
| part | string | – | – |
| z | number | – | – |
No output schema declared.
No examples provided.
merge_objects ~95
Join objects of the same plate into one object with several parts, where they are now, like Bambu Studio's Assemble: they move and print as one (e.g. a model and its base in another color). Each part keeps its filament and painting; the merged object takes the first object's settings (the others' are listed if they differ).
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | – |
| objects | array | yes | – |
No output schema declared.
No examples provided.
mirror_object ~37
Mirror an object across its own center (axis x, y or z).
| Name | Type | Req | Description |
|---|---|---|---|
| axis | string | – | – |
| object | string | yes | – |
No output schema declared.
No examples provided.
move_object ~102
Move an object (by name or id): absolute x/y, relative dx/dy, rotate around Z by rotate_z degrees, or move it to another plate (it keeps x/y if given, otherwise it goes to a free spot).
| Name | Type | Req | Description |
|---|---|---|---|
| dx | number | – | – |
| dy | number | – | – |
| object | string | yes | – |
| plate | integer | – | – |
| rotate_z | number | – | – |
| x | – | – | – |
| y | – | – | – |
No output schema declared.
No examples provided.
new_project ~126
Start an empty project. filaments: AMS slots in order, e.g. [{"preset": "Bambu PLA Basic", "color": "#000000"}, {"preset": "eSUN PLA+", "color": "#FFFFFF"}]. A filament name without '@...' is matched to the printer automatically. The build plate type is the one picked in Bambu Studio for this printer (change it with set_setting('curr_bed_type', ...)).
| Name | Type | Req | Description |
|---|---|---|---|
| filaments | – | – | – |
| name | string | yes | – |
| printer | string | – | – |
| process | string | – | – |
No output schema declared.
No examples provided.
open_in_bambu_studio ~91
Open a .3mf in the Bambu Studio window: by default the last saved project (else the last sliced one). Bambu Studio re-slices a project when asked (Slice plate), it does not reuse the slicing done here; to open a plate sliced and ready to print, use send_to_printer(via='bambu_studio').
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | – | – |
No output schema declared.
No examples provided.
open_project ~57
Open a .3mf saved by Bambu Studio (or downloaded from MakerWorld). The file is never modified: save_project writes a new file. Returns the project summary and what could not be carried over.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
No output schema declared.
No examples provided.
orient_object ~125
Turn an object the way up it prints best, like Bambu Studio's Auto orientation: least area that needs support (faces leaning more than overhang_angle degrees from vertical, not on the bed), enough area on the bed, low height. Returns the 3 best options with those numbers and the current ones; choice=2 or 3 applies another option, apply=False only compares. Look at preview_plate afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| apply | boolean | – | – |
| choice | integer | – | – |
| object | string | yes | – |
| overhang_angle | number | – | – |
No output schema declared.
No examples provided.
paint_object ~248
Paint a region of an object, like Bambu Studio's painting tools. paint: 'color' (with filament=N), 'support' (supports there), 'block_support' (none there), 'seam' (put the seam there), 'block_seam', 'fuzzy_skin'. Region: the height band z_from..z_to (mm from the object's bottom; z_to=0 = to the top) and the faces looking 'top', 'bottom', 'sides', 'front', 'back', 'left', 'right', 'overhangs' (leaning more than `angle` degrees from vertical, for supports) or 'all'. clear=True removes that painting there. Triangles crossing a band's edge are split, so the edge is sharp. part: only that part. Look at preview_plate (colors) afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| angle | number | – | – |
| clear | boolean | – | – |
| facing | string | – | – |
| filament | integer | – | – |
| object | string | yes | – |
| paint | string | yes | – |
| part | string | – | – |
| z_from | number | – | – |
| z_to | number | – | – |
No output schema declared.
No examples provided.
How do I install the Bambu Studio (unofficial) MCP server?
Bambu Studio (unofficial) runs locally as a PyPI package, launched with uvx unofficial-bambu-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 · unofficial-bambu-mcp
claude mcp add danielefinocchiaro-unofficial-bambu-mcp -- uvx unofficial-bambu-mcp
What is the Bambu Studio (unofficial) MCP server?
Bambu Studio (unofficial) is an MCP server listed in the public MCP registry as io.github.danielefinocchiaro/unofficial-bambu-mcp. Build, edit, slice, check and calibrate Bambu Studio projects; read a Bambu Lab printer's status. This page covers its PyPI package (unofficial-bambu-mcp).
Is the Bambu Studio (unofficial) MCP server safe to use?
Bambu Studio (unofficial) scores 53 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 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 Bambu Studio (unofficial) MCP server expose?
Bambu Studio (unofficial) exposes 87 tools: bambu_status, list_printers, search_presets, filament_colors, new_project, and 82 more. Their descriptions and schemas cost roughly 10,007 tokens of context every time the server is loaded.
Is the Bambu Studio (unofficial) MCP server still maintained?
Bambu Studio (unofficial) is still listed as active in the MCP registry. We last reached this channel on 4 November 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 Bambu Studio (unofficial) MCP server under?
Bambu Studio (unofficial) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.