关于 Bambu Printer MCP
Bambu Printer MCP 是供 Bambu Lab 打印机用户及 Agent 管理打印流程的 MCP 服务。它涵盖打印机控制、STL 处理、切片流程和 AMS 管理,并可在支持的配置中通过局域网直接打印。
主要功能
- 01控制 Bambu Lab 打印机
- 02管理 AMS 耗材库存
- 03切片并打印 3MF 文件
- 04处理 STL 网格文件
- 05读取打印机诊断与摄像头快照
- 06暂停任务或跳过对象
适用场景
- 01将切片后的 3MF 文件发送到打印机
- 02打印前检查已装载的耗材
- 03通过摄像头状态查看打印进度
- 04暂停任务或跳过脱落的对象
MCP 相关
它向兼容 MCP 的客户端提供打印机控制、切片、AMS 和网格处理工具及可用资源。服务支持局域网直连工作流,也可选用 BambuNetwork bridge。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
bambu-printer-mcp
感谢 FULU Foundation、Louis Rossmann 和 OrcaSlicer-bambulab 贡献者。 我们支持开源开发者、维修权,以及你对自己所有硬件的控制权。你应该能够自行选择软件并进行打印,而不受供应商云服务的阻碍。
想绕过 Bambu 的软件和云服务? 使用 FULU OrcaSlicer-bambulab 进行切片并导出,然后通过此 MCP 在受支持的打印机和固件上使用直接局域网连接。此工作流不需要 Bambu Studio、Bambu Connect 或 Bambu Cloud。请从 FULU 设置指南开始。可选的 BambuNetwork 桥接是另一种路径,仍会使用 Bambu 的网络运行时;云端打印任务仍会使用 Bambu 的服务。
一款专为 Bambu Lab 打印机打造的 MCP 服务,可通过 Claude Desktop、Claude Code 或任何兼容 MCP 的客户端控制 Bambu 打印机、处理 STL 文件,并管理端到端的 3MF 打印工作流。
浏览文档网站,查看可搜索的设置指南、切片与 AMS 指南,以及完整的工具参考。该网站由此 README 和 docs 文件夹生成。
本项目在贡献者的帮助下构建。由衷感谢所有分享修复方案、认真提交 Bug 报告并进行真实打印测试的人!
这是 mcp-3D-printer-server 的精简版 Bambu 专用分支。已移除对 OctoPrint、Klipper、Duet、Repetier、Prusa Connect 和 Creality Cloud 的所有支持。保留下来的是面向 Bambu Lab 硬件的专用精简实现。
与 Agent 一起设置
如果知道打印机的型号和局域网地址,请告诉 Agent,然后复制并粘贴以下内容:
Install bambu-printer-mcp in the agent/harness I'm using now.
Read https://github.com/DMontgomery40/bambu-printer-mcp/blob/main/docs/SETUP.md
and https://github.com/DMontgomery40/bambu-printer-mcp/blob/main/docs/FULU.md
for the current setup instructions and supported workflows.
Detect my OS and harness, then use its native MCP configuration or installer.
Preserve my existing servers and settings. Prefer the published npm package
(npx -y bambu-printer-mcp, stdio); use Node.js 24 if a runtime is needed.
Find existing printer settings in relevant local configuration or available
LAN discovery. Confirm the detected printer's model, address, and identity
with me before connecting. Ask only for values you cannot find:
PRINTER_HOST, BAMBU_MODEL, BAMBU_SERIAL, and BAMBU_TOKEN (the LAN access code).
Keep credentials in local/private configuration; do not repeat access codes
or tokens in chat. Never guess the printer model.
Use direct LAN printing by default. Explain any LAN/Developer Mode setting
I need to enable. Prefer FULU OrcaSlicer-bambulab GUI slicing/export; discover
an existing slicer before suggesting an install. For FULU/Orca CLI auto-slicing,
require MCP 1.1.11+ and its matching installed profile tree (see guide).
A slicer is not needed here to print a pre-sliced file. Configure the optional FULU
BambuNetwork bridge only if I choose it, and explain its runtime/auth needs.
X2D supports status and slicing; native printing requires macOS or x86-64 Linux and a locally built helper.
If this harness does not already provide code mode or an equivalent, suggest
a compatible code-mode integration as an optional addition. It is not required;
finish ordinary MCP setup without it unless I choose to add it.
Verify that the MCP initializes, lists its tools, and reads printer status.
Do not start a print or change printer settings as a setup test. Tell me what
worked and whether I need to restart or reload the harness.
可以向 Agent 提出哪些要求
直接告诉 Agent 你想要的结果,而不是步骤。当前的大模型可以跨工具规划:搜索网页、读取照片、查找精确尺寸、编辑模型、切片并打印。如果某项选择会影响结果,例如使用哪种耗材或是否开始打印,Agent 可能会询问一两个问题。
此服务提供打印机、切片、AMS 和网格工具。网页搜索、照片处理和 Blender 编辑由 Agent 及其其他连接提供,例如 Blender MCP 服务。打印经过 Agent 编辑的模型时,会使用 CLI 切片和已安装的切片器预设;请参阅切片指南。
从任何内容开始
- “这是 MakerWorld 上的一个手机支架。让它适配新款 iPhone,并用黑色打印出来。”
你的 Agent 会查找 Apple 发布的尺寸,在 Blender 中调整支架,为打印机切片,并找到装有黑色耗材的 AMS 托盘。 - “我想要一个这样的。” (附上一张你在咖啡馆看到的花盆照片)
它会根据照片推算形状和尺寸,找到或建模一个匹配的设计,并询问照片中无法体现的信息。 - “你能打印一个替换件吗?” (附上一张断裂的洗碗机碗篮卡扣照片)
它会询问一两个影响配合度的尺寸,建模零件,并使用已装载且适合该用途的材料进行打印。
随时随地,在打印过程中
如果你的 Agent 始终在线,例如在家中电脑上运行的 OpenClaw 或 Hermes Agent,你可以通过 Telegram 或任何其他聊天应用给它发消息。若要通过 LAN 直接打印,服务需要运行在打印机所在的本地网络上;不过,这并非必需。
- “打印进度怎么样?发张照片给我。”
它会报告进度和剩余时间,并发送一张来自舱内摄像头的快照。 - “边角翘起来了。暂停打印。”
它会暂停任务,方便你决定继续还是取消。 - “有个零件松脱了。跳过它,继续打印其余部分。”
它会在打印板上找到该物体,并只跳过它。 - “开始烘干 PETG,这样我回家时就能用。”
对于带加热功能的 AMS,它会启动放有该线轴单元的烘干周期。
打印前
- “拍张照片,确认打印板上没有东西,然后开始打印我昨晚切片的支架。”
它会先检查摄像头图像,再发送打印任务。 - “AMS 里装了什么?用我有的任意黑色耗材来打印这个。”
它会读取 AMS 的实时库存,并将文件中的耗材与托盘进行匹配。 - “打印机上有错误吗?”
它会读取打印机的 HMS 诊断信息并进行说明。
从这里开始
从这里开始
| 我想…… | 接下来阅读 |
|---|---|
| 使用开源切片和无云端打印工作流 | FULU 设置:切片器、LAN 和可选桥接程序 |
| 将此 MCP 连接到我的 Agent | 复制设置请求 |
| 查看我的 Agent 能用它做什么 | 向你的 Agent 提问 |
| 排查设置问题或手动配置 | 安装、环境变量和 LAN 参考 |
| 准备可打印文件或排查切片问题 | 切片指南和模型路由 |
| 选择耗材托盘或检查打印机 | AMS 设置和打印机工具 |
| 通过 Blender 编辑 STL | Blender MCP 设置 |
| 查看版本变更或贡献者鸣谢 | 更新日志、发布版本和贡献者 |
bambu-printer-mcp 有哪些新内容
bambu-printer-mcp 有哪些新内容
版本变更请参阅更新日志。近期版本新增了可靠的 npm 和桌面扩展安装方式、标准 Blender MCP 集成、修正后的 P2S/A1 路由,以及更安全的多耗材 CLI 切片。现已支持 X2D 状态查询和切片;在 macOS 上,也可通过已安装的 Bambu Studio 网络插件选择原生打印。
目录
## 目录说明
说明
bambu-printer-mcp 是一款面向 Bambu Lab 3D 打印机的 Model Context Protocol 服务。一个简单直接的工作流是:使用 FULU OrcaSlicer-bambulab、OrcaSlicer 或 Bambu Studio 切片,导出切片后的 .gcode.3mf,然后将其路径传给 print_3mf。默认的局域网直连路径会通过 FTPS 上传文件,并为目标型号选择相应的 MQTT 命令。有关 CLI 选项、型号路由和验证限制,请参阅切片指南。
此项目不是什么。 本软件包有意仅支持 Bambu Lab 打印机。它不包含适用于 OctoPrint、Klipper(Moonraker)、Duet、Repetier、Prusa Connect 或 Creality Cloud 的适配器。如果需要支持多种打印机,请改用父项目 mcp-3D-printer-server。
为什么要单独创建一个软件包? 父项目将所有打印机适配器都打包在同一个二进制文件中。如果只使用 Bambu 硬件,这样的功能范围会带来不必要的负担。此分支精简了项目,仅保留 Bambu 核心功能,让安装更小巧、更快速。请查看各项目的更新日志,了解当前修复内容和支持的工作流。
关于资源使用的说明。 STL 操作会将完整的网格几何数据载入内存。对于较大或复杂的 STL 文件(大于 10 MB),这些操作可能会消耗大量内存。详情请参阅一般限制与注意事项。
FULU 与开源打印
## FULU 与开源打印FULU OrcaSlicer-bambulab 是受支持的切片器目标(SLICER_TYPE=orcaslicer-bambulab;别名包括 fulu-orca 和 orca-studio)。使用其 GUI 导出切片后的项目,以便直接通过局域网打印;也可以配置其 CLI,并使用匹配的已安装配置文件。从 1.1.11 版本起,FULU/Orca 共享机器预设门控和配置文件安全检查。
可选的 FULU BambuNetwork 桥接提供 bambu_network_bridge_status、bambu_network_call 和 print_3mf_bambu_network,也可通过 print_3mf 配合 connection_mode: "bambu_network" 调用。选择切片器不会启用桥接。它需要单独安装 FULU 运行时并显式使用启动命令;云打印还需要经过身份验证的 BambuNetwork 会话。在 Linux 上,FULU v1.0.0 主机需要一个小型 cat 包装器和 02.05.02.5x 插件;指南涵盖了这两者。通过局域网桥接打印时,会使用 Bambu 的打印机证书建立插件自身的局域网会话,该证书由服务端提供。
参阅 FULU 设置指南,了解直接局域网连接方案、Linux/Windows/macOS 桥接设置、连接探测、身份验证和故障排除。桥接协议测试和成功完成握手并不能证明实体打印成功。
功能
功能
- 获取详细的打印机状态:温度(喷嘴、热床、腔室)、打印进度、当前层数、剩余时间和实时 AMS 槽位数据
- 通过
get_printer_filaments查询实时 AMS 库存,并解析 Bambu/Orca 耗材配置文件路径。在 Windows、macOS 和 Linux 上,配置文件建议会使用所选切片软件的安装路径,也支持显式指定BAMBU_PROFILES_ROOT;若配置文件不可用,仍可读取实时库存。包含每个料盘的显示名称、匹配置信度(high/medium/low/none)、解析层级(exact-model-nozzle/model/generic/unresolved),以及包含推荐自动切片耗材的摘要。如果 AMS 数据尚未到达(常见于闲置打印机首次通过 MQTT 推送数据时),会自动重试。 - 通过 FTPS 列出、上传和删除打印机 SD 卡上的文件
- 从腔室摄像头拍摄 JPEG 快照。支持 A1、A1 mini、P1S、P1P(通过 TCP 端口 6000),以及 X1、X1C、X1E、P2S、H2、H2S、H2D、H2C、H2D Pro、X2D(通过 ffmpeg 使用 RTSP)。RTSP 路径需要在 PATH 中配置 ffmpeg。
- 上传并打印预切片的
.3mf项目,并校验打印盘选择和校准标志。旧版.gcode.3mf路径要求单个打印盘仅使用外置线轴;请参阅切片指南。 - 通过 BambuStudio CLI 切片,并自动解析 BBL 继承关系和 include,设置每个槽位的耗材颜色,并为多喷嘴打印机提供备用擦料塔位置。缺少依赖时会停止切片;自定义设置和项目中保存的擦料塔位置会予以保留。贡献者已在 Windows 版 BambuStudio 02.08.02.60 上验证多色切片;较旧的 CLI 版本存在不同限制。请参阅切片指南。
- 识别 X2D 状态,并使用其已安装的专用 BambuStudio 预设进行切片(
BAMBU_MODEL=x2d)。在 macOS 和 x86-64 Linux 上,print_3mf会在解析机型(包括通过询问获得的机型)后选择原生路径。请按下文说明安装可选辅助程序;Windows 上的原生打印请求,以及未安装该辅助程序的 Linux 上的请求,都会在切片或联系打印机之前失败。X2D 仍不支持旧版 FTPS 和远程 G-code 启动方式。 - 从 3MF 内嵌的切片软件元数据(
Metadata/plate_<n>.json+ gcode 耗材标头)解析 AMS 映射,并按照 OpenBambuAPI 规范以正确格式发送;H2S/H2D/H2C 的ams_mapping2并行数组格式也会正确处理 - 通过 RFID 自动匹配 AMS 槽位(
print_3mf的auto_match_ams标志)。根据切片后 3MF 中的必需tray_info_idx,匹配实时 AMS 库存。对于 SKU 相同但颜色不同的耗材,会按(tray_info_idx, tray_color)匹配并跟踪已占用的槽位。打印前可通过resolve_3mf_ams_slots进行试运行。 - 通过 MQTT 取消、暂停和恢复正在进行的打印任务
- 通过
skip_objects跳过正在进行的多对象打印中的指定对象(先使用list_3mf_plate_objects查找对象 ID) - 通过 MQTT 设置打印速度模式(
silent/standard/sport/ludicrous)、清除 HMS/打印错误、触发 AMS RFID 重新读取,并控制 H2/P2 风道模式(cooling/heating) - 启动/停止 AMS 耗材烘干(
set_ams_drying),适用于带加热功能的 AMS 设备(AMS Pro / AMS-HT)。发送 MQTT 命令print.ams_control。 - 通过 MQTT 上的 G-code 调度设置喷嘴和热床温度
- 通过人工预检提示确认打印开始和手动加热。清理打印完成后的热床以及清除硬件错误,均需要人工明确确认;请参阅硬件安全与无头配置。
- 通过 MQTT 设置风扇速度(部件、辅助、腔室)和腔室灯光模式(开/关/闪烁)
- 将 HMS(健康管理系统)诊断信息作为 MCP 资源读取,资源地址为
printer://{host}/hms;提供打印机的只读错误摘要,并自动重试等待数据稳定 - 启动打印机上已存储的 G-code 文件
- 领夹吊坠打印封装工具(
print_collar_charm)——专用双色工作流,为吊坠内侧(黑色,AMS 1 槽位 1)和外侧(白色,AMS 2 槽位 1)部件采用固定的料盘策略 - STL 操作:缩放、旋转、扩展底座、合并顶点、居中到原点、平放以及检查模型信息
- 使用外部 CLI 切片 STL 或 3MF 文件,也可在独立容器中使用可选的
orca-slicer-api后端,无需本地切片器可执行文件。远程切片需要匹配的只读 Orca 配置文件目录,目前支持一个耗材槽位和一个选定的打印盘。BambuStudio、FULU 和 Orca 均要求精确的机器预设,并会在切片前解析 BBL 依赖;请参阅 FULU/Orca CLI 设置与验证限制。 - 通过
get_slice_settings检查已保存 3MF 模板或提取出的配置文件中的切片器设置 - 通过
list_templates列出本地注册表中已保存的切片模板 - 通过
save_template将模板保存到本地注册表 - 通过
slice_with_template直接使用命名模板切片 - 对于简单的单材料切片,如果未提供明确的切片器配置文件或
load_filaments覆盖项,则自动选择打印机当前正在使用或首个已装载的 AMS 耗材 - 基于模板的切片可以复用已保存 3MF 的工艺设置,同时通过 MQTT 获取打印机实时耗材选择
- 可选的 Blender MCP 桥接,用于高级网格操作
- 双传输方式:stdio(默认,用于 Claude Desktop / Claude Code)和 Streamable HTTP
AMS(自动材料系统)设置
AMS(自动材料系统)设置
Bambu AMS 是一款多卷料供料器,可让你为多色或多材料打印的不同部分分配不同的耗材。本节说明 AMS 槽位映射如何与此 MCP 服务配合使用。
AMS 槽位的工作方式
每台 AMS 有 4 个槽位,编号为 0 到 3。如果串联了多台 AMS,第二台设备的槽位编号为 4 到 7,依此类推。在 Bambu Studio 或 OrcaSlicer 中切片模型时,打印中的每种颜色/材料都会分配到特定的 AMS 槽位。
从 3MF 自动映射 AMS
在 Bambu Studio 中切片模型时,切片软件会将 AMS 映射信息嵌入 3MF 文件的 Metadata/project_settings.config 中。print_3mf 工具会自动读取此文件并提取正确的映射。在大多数情况下,你无需手动指定 ams_mapping——该工具会自动处理。
手动映射 AMS
如果需要覆盖嵌入的映射(例如,切片后调换了耗材位置),请将 ams_mapping 数组传递给 print_3mf:
{
"three_mf_path": "/path/to/model.3mf",
"ams_mapping": [0, 2],
"use_ams": true
}
数组中的每个元素对应打印文件中使用的一个耗材槽位,顺序与它们在切片软件中的出现顺序一致。值表示当前装载该耗材的实体 AMS 槽位编号(从 0 开始)。在上面的示例中,打印使用的第一个耗材对应 AMS 槽位 0,第二个对应 AMS 槽位 2。
映射按位置对应:每个条目对应一个项目耗材,-1 表示未使用。H2/P2S 项目文件命令使用与项目长度相同的映射,并配套使用 ams_mapping2;其他项目文件路径至少保留 5 个位置,较长项目则不会截断。如果你尚无完整的项目映射,优先使用按构建板耗材顺序排列的 ams_slots,或设置 auto_match_ams: true。
单材料打印
对于单材料构建板,请明确选择已装载耗材的托盘。例如,使用 AMS 槽位 2:
{
"three_mf_path": "/path/to/model.3mf",
"ams_slots": [2]
}
这会将槽位 2 扩展到正确的项目耗材位置。并不存在适用于所有模型和项目的通用固定默认映射。
不使用 AMS 打印
如果使用直供料卷架(未连接 AMS),或想完全绕过 AMS,请将 use_ams 设置为 false:
{
"three_mf_path": "/path/to/model.3mf",
"use_ams": false
}
对于声明了耗材的 H2 项目,也必须提供所需的映射;仅设置 use_ams: false 并不会取消固件对映射的要求。请参阅 print_3mf。
双喷嘴打印机(H2D、H2D Pro、H2C、X2D)有两个外置卷料架,打印机会为每个喷嘴报告一个虚拟槽位。请在 ams_slots/ams_mapping 中使用 Bambu Studio 的 ID:254 表示左侧/副喷嘴的外置耗材,255 表示右侧/主喷嘴的外置耗材。服务会将所选构建板的 filament_map 与 physical_extruder_map 组合起来,以验证每种耗材对应的实体喷嘴(0 = 右侧,1 = 左侧),并要求匹配的最新 vir_slot 报告。设置了外置耗材映射后,即使 use_ams: false,也会保留该映射;如果未提供映射,则仅根据这些已检查的标头推导映射。单喷嘴打印机仅将 254 作为其唯一外置托盘。
对于声明了耗材类型的预切片 3MF,print_3mf 上的 auto_match_ams 标志(或独立的 resolve_3mf_ams_slots 试运行工具)会自动将所需耗材与 AMS 当前库存进行匹配。匹配器的工作方式如下:
- 从 3MF 的
Metadata/slice_info.config和Metadata/plate_<n>.json中读取所需的tray_info_idx值 - 从打印机通过 MQTT 推送的状态中读取当前 AMS 耗材盘
- 按
(tray_info_idx, tray_color)进行匹配,因此,相同 SKU 但颜色不同的两卷耗材(例如一卷黑色和一卷白色的 GFG02 PETG HF)会匹配到不同的槽位 - 跟踪已占用的槽位,避免多个需求被匹配到同一个物理位置
- 如果 3MF 不包含颜色数据,或只加载了一卷该 SKU 的耗材,则回退到仅按 SKU 匹配
如果匹配失败,则返回一份结构化的 missing 报告,其中包含每项需求对应的原因:
no_loaded_match— 未加载该 SKU 的 AMS 耗材盘color_mismatch— SKU 匹配,但已加载耗材的颜色不同exhausted— 所有匹配的耗材盘都已被其他需求占用no_sku— 3MF 未为此耗材声明tray_info_idx
打印前使用 resolve_3mf_ams_slots 进行试运行,可预览匹配结果,而不会上传文件或启动任务。
AMS 稳定等待时间处理
空闲打印机首次推送的 MQTT 状态通常信息不全(仅包含型号/模块信息),AMS 槽位数据会在第二次推送时到达。当首次响应中缺少预期数据时,服务端的耗材库存和 HMS 处理程序都会在 1.5 秒的稳定等待时间后重试。这一过程对调用方透明。
检查 AMS 状态
使用 get_printer_filaments 获取经过解析和丰富处理的视图(配置文件路径、显示名称、匹配置信度),或使用 get_printer_status 获取打印机提供的原始 AMS 数据:
"What filaments are loaded in my AMS right now?"
Bambu 通信说明(MQTT 和 FTP)
Bambu 通信说明(MQTT 和 FTP)
Bambu Lab 打印机不使用传统的 REST API,而是通过两种本地协议直接与此服务端通信:
MQTT(端口 8883,TLS): 所有打印机命令和状态报告都通过运行在打印机本身上的 MQTT 代理传输。身份验证使用用户名 bblp 和你的局域网访问码;序列号用于标识设备主题。开始打印、取消任务和发送 G-code 行等命令,都会通过 MQTT 发布到设备主题。通过订阅打印机的报告主题并请求 push_all 刷新来接收状态数据。此实现基于社区对 OpenBambuAPI 项目中记录的协议进行的逆向工程。
FTPS(端口 990,隐式 TLS): 文件操作(上传和目录列表)使用 FTPS。打印机的 SD 卡可作为文件系统访问,包含 cache/(用于存放 3MF 和 G-code 打印文件)、timelapse/ 和 logs/ 等目录。身份验证使用用户名 bblp,并以你的访问令牌作为密码。
此分支修复的问题
此软件包修复了先前使用的 bambu-js 库中的两个协议级问题,现在完全不再依赖 bambu-js:文件传输和列表操作直接使用 basic-ftp,打印机命令则使用 bambu-node。
错误 1:bambu-js 中的 FTP 路径重复错误。
bambu-js 库的 sendFile 方法存在路径构造错误。它调用 ensureDir 将工作目录切换到目标目录(例如 /cache),随后调用 uploadFrom,并传入包含目录前缀的完整相对路径(例如 cache/file.3mf)。结果,文件会被放到打印机上的错误路径(例如 /cache/cache/file.3mf,而不是 /cache/file.3mf),后续打印命令会因引用的文件在预期路径下不存在而失败。
此分支绕过 bambu-js 处理所有上传,并直接使用 basic-ftp。上传函数(ftpUpload)连接到打印机,解析远程绝对路径,使用 ensureDir 切换到正确目录,然后仅使用文件名上传,从而完全避免路径重复构造问题。
// From src/printers/bambu.ts
private async ftpUpload(host, token, localPath, remotePath): Promise<void> {
const client = new FTPClient(15_000);
await client.access({ host, port: 990, user: "bblp", password: token,
secure: "implicit", secureOptions: { rejectUnauthorized: false } });
const absoluteRemote = remotePath.startsWith("/") ? remotePath : `/${remotePath}`;
const remoteDir = path.posix.dirname(absoluteRemote);
await client.ensureDir(remoteDir);
// basename only -- no double-path
await client.uploadFrom(localPath, path.posix.basename(absoluteRemote));
client.close();
}
错误 2:project_file MQTT 命令中的 AMS 映射格式。
bambu-js 库的项目文件命令将 use_ams: true 硬编码,并且完全不支持 ams_mapping 字段。没有此修复时,映射只是一个槽位索引数组(例如 [0, 2]),不符合 OpenBambuAPI 规范。
对于非 H2/P2S 项目文件路径,此实现会在 ams_mapping 数组中至少保留五个位置,其中位置 i 表示项目耗材索引,值表示为该耗材供料的 AMS 槽位。例如,使用 AMS 槽位 0 进行单耗材打印时,会发送 [0, -1, -1, -1, -1]。
此分支直接通过 bambu-node 发送 project_file 命令(启动打印时完全绕过 bambu-js),并按目标固件要求的格式构造映射:
// Non-H2/P2S project_file: at least five entries; preserve longer projects
ams_mapping = [0, -1, -1, -1, -1];
// H2S/H2D/H2C/P2S: project-length lookup table + parallel ams_mapping2
ams_mapping = [-1, 1, -1, -1];
ams_mapping2 = [
{ ams_id: 255, slot_id: 255 },
{ ams_id: 0, slot_id: 1 },
{ ams_id: 255, slot_id: 255 },
{ ams_id: 255, slot_id: 255 }
];
命令载荷还包含 OpenBambuAPI 规范要求的所有字段:param(3MF 中的内部 gcode 路径)、url(sdcard 路径)、md5(根据构建板中嵌入的 gcode 计算得出),以及所有校准标记。
已验证的打印流程(H2S,仅限 LAN,无客户端证书)
这是在最初的仅限 LAN 测试中成功启动 H2S 打印的流程。此处记录了该流程,因为此固件上的几种常见方法都会失败,而此分支的传输方式使其可靠运行。
**结果:**打印以 RUNNING 状态启动,打印机接受了 MQTT project_file 命令,无需客户端证书。身份验证通过 TLS 使用纯文本 bblp + LAN 访问码,并设置 rejectUnauthorized: false。
在原版 bambu-cli 上无法使用的方法:
bambu-cli print start <file>和bambu-cli files upload都会失败,并报错522 SSL connection failed: session reuse required。Bambu 的 FTPS 服务要求控制通道和数据通道之间复用 TLS 会话,而 bambu-cli 中的 Go FTPS 客户端无法正确协商这一点。bambu-cli print start --no-upload仍会打开 FTPS 会话(以检查远程文件),并遇到相同的 522 错误。
可用方法——分两步上传并通过 MQTT 分发:
-
通过 curl 上传
.gcode.3mf(curl 的 OpenSSL 后端可以正确协商 FTPS 会话复用):curl -k --ftp-pasv --ssl-reqd \ -u "bblp:<ACCESS_CODE>" \ -T /path/to/file.gcode.3mf \ "ftps://<PRINTER_IP>:990/<remote-name>.gcode.3mf"<remote-name>请使用简单的 ASCII 名称,并以.gcode.3mf结尾。文件会存放在 FTP 根目录,该目录对应打印机 SD 卡上的/data/。 -
通过 MQTT 向
device/<SERIAL>/request发送project_file命令:import mqtt from "mqtt"; const payload = { print: { sequence_id: "0", command: "project_file", param: "Metadata/plate_1.gcode", // path inside the 3MF subtask_name: "<remote-name>.gcode.3mf", file: "<remote-name>.gcode.3mf", url: "ftp:///<remote-name>.gcode.3mf", // three slashes, FTP root md5: "", project_id: "0", profile_id: "0", task_id: "0", subtask_id: "0", timelapse: false, bed_type: "auto", bed_leveling: true, bed_levelling: true, flow_cali: true, vibration_cali: true, layer_inspect: true, use_ams: true, ams_mapping: [0, -1, -1, -1, -1] } }; const client = mqtt.connect(`mqtts://<PRINTER_IP>:8883`, { username: "bblp", password: "<ACCESS_CODE>", rejectUnauthorized: false, }); client.on("connect", () => { client.publish(`device/<SERIAL>/request`, JSON.stringify(payload)); });
注意:
url必须为ftp:///<filename>(三个斜杠)——必须包含空主机部分;打印机会将ftp://<filename>拒绝为“不支持的打印文件路径或名称”。param使用 3MF 内部的板位路径(板位 1 对应Metadata/plate_1.gcode),而不是文件系统路径。md5: ""可以接受;也可以选择填入其值。- 在配备 AMS 的 H2 打印机上,如果切片文件声明了耗材,即使设置
use_ams: false,仍会进行映射查找。H2 可用的方式是发送use_ams: true和有效映射。对于 H2,映射长度必须与项目级耗材声明长度一致,且已填充的位置必须与plate_<n>.json.filament_ids匹配。建议在工具层使用ams_slots,并由服务端展开。如果 H2 预切片任务声明了耗材却未提供映射,服务端会在发送前失败;请传入明确的ams_slots、原始ams_mapping,或设置auto_match_ams: true。 - 无需客户端 X.509 证书。此前认为 2025 年 1 月之后的固件会要求所有型号使用 mTLS 的假设并不适用于 LAN 模式下的 H2S——通过 TLS 使用用户名/密码即可。
- MCP 服务的
ftpUpload辅助函数(使用secure: "implicit"和较短的空闲超时的 basic-ftp)可原生执行等效上传;直接使用服务时,建议采用此方式。curl 方式则适用于手动调试。
可用工具
可用工具
STL 操作工具
STL 操作工具
所有 STL 工具都会将完整网格几何体载入内存。对于大于 10 MB 的文件,请监控内存用量,并优先使用较小的文件进行测试。
get_stl_info
检查 STL 文件但不做任何修改。返回边界框尺寸、面数、顶点数和模型中心。
{
"stl_path": "/path/to/model.stl"
}
scale_stl
沿各个轴缩放 STL 模型。省略某个轴即可保持其不变(默认值为 1.0)。
{
"stl_path": "/path/to/model.stl",
"scale_x": 1.5,
"scale_y": 1.5,
"scale_z": 1.0
}
要进行均匀缩放,请将三个轴设置为相同的值:
{
"stl_path": "/path/to/model.stl",
"scale_x": 2.0,
"scale_y": 2.0,
"scale_z": 2.0
}
rotate_stl
围绕一个或多个轴旋转 STL 模型。角度以度为单位。省略的轴默认为 0。
{
"stl_path": "/path/to/model.stl",
"angle_x": 0,
"angle_y": 0,
"angle_z": 90
}
extend_stl_base
在模型下方添加实体几何体,以增加底座高度。适用于底部接触面积较小或不稳定的模型,可改善其在打印平台上的附着效果。
{
"stl_path": "/path/to/model.stl",
"extension_height": 3.0
}
extension_height 的单位为毫米。
合并距离小于指定容差的顶点。这可以填补网格中的小缝隙,并略微减小文件大小。适合作为切片前的清理步骤。
{
"stl_path": "/path/to/model.stl",
"tolerance": 0.01
}
tolerance 的单位为毫米,若省略,则默认为 0.01。
center_model
平移模型,使其包围盒的中心位于世界原点 (0, 0, 0)。适合在应用变换或导出到其他工具使用前执行。
{
"stl_path": "/path/to/model.stl"
}
lay_flat
识别模型上最大的平坦表面,并旋转模型,使该表面朝下并位于 XY 平面(Z = 0)上。这是切片前常见的准备步骤,可尽量减少对支撑的需求。
{
"stl_path": "/path/to/model.stl"
}
注意:此操作最适用于具有明显主导平面的模型。对于有机形状或圆润形状,结果可能难以预测。
打印机控制工具
打印机控制工具
所有打印机工具都接受可选参数 host、bambu_serial 和 bambu_token。若省略,则使用环境变量 PRINTER_HOST、BAMBU_SERIAL 和 BAMBU_TOKEN 的值。显式传入这些参数适用于同时使用多台打印机的情况。
服务还接受别名变量 BAMBU_PRINTER_HOST、BAMBU_PRINTER_SERIAL 和 BAMBU_PRINTER_ACCESS_TOKEN,以及 BAMBU_PRINTER_MODEL 和 BAMBU_STUDIO_PATH。
get_printer_status
获取打印机当前状态,包括温度、打印进度、层数、剩余时间和 AMS 槽位数据。内部会发送 push_all MQTT 命令,强制获取最新状态报告后再读取缓存状态。
{
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
腔室状态会从较新固件打包的 CTC 报告中解码当前温度,包括 P2S,同时保留旧版腔室/机架字段。
返回一个结构化对象,字段包括 status(gcode_state 字符串)、temperatures.nozzle、temperatures.bed、temperatures.chamber、print.progress、print.currentLayer、print.totalLayers、print.timeRemaining 和 ams(打印机返回的原始 AMS 数据)。
get_printer_filaments
读取实时 AMS 库存,并在已知 bambu_model 时,将每个已装入料盘映射到 Bambu Studio 耗材配置文件 JSON 路径。结果包含摘要、各槽位的显示标签、配置文件匹配置信度,以及适用于简单单材料命令行切片的建议 load_filaments 值。
{
"bambu_model": "h2d",
"nozzle_diameter": "0.4",
"host": "192.168.1.100",
"bambu_serial": "094...",
"bambu_token": "your_access_token"
}
重要字段:
summary.loaded_slots、summary.resolved_profile_slots、summary.unresolved_loaded_slots、summary.empty_slotstrays[].display_name、trays[].tray_color、trays[].remain_percenttrays[].resolved_profile_pathtrays[].profile_resolution:exact-model-nozzle、model、generic或unresolvedtrays[].match_confidence:high、medium、low或nonerecommended.load_filaments:未提供显式耗材覆盖时,MCP 自动切片将使用的配置文件路径
list_printer_files
列出存储在打印机 SD 卡上的文件。扫描 cache/、timelapse/ 和 logs/ 目录,并同时返回平铺列表和按目录分组的明细。
这是只读查询:不会创建目录。成功列出根目录后,若发现可选目录不存在,则会返回空列表。身份验证、TLS、权限和传输失败会作为错误报告,而不会返回空结果或部分结果。
{
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
#### camera_snapshot
从打印机的舱内摄像头捕获单张 JPEG 图像。只读。
已接入两种传输方式,根据 bambu_model 选择:
- TCP-on-6000 适用于 A1、A1 mini、P1S、P1P。采用 OpenBambuAPI/video.md 中的原生协议:在端口 6000 上使用 TLS、80 字节认证数据包(
bblp+ 访问令牌),以及重复出现的 16 字节帧头 + JPEG 负载。打印机会先重放缓冲的最后一帧;在闲置一段时间后,这可能会显示很久以前的舱内画面,因此该工具会跳过这一帧并返回下一张实时画面(约 3 秒后)。如果在timeout_ms时间内没有后续实时画面,则会失败,而不会返回可能已过时的图像。 - RTSP 适用于 X1、X1 Carbon、X1E、P2S、X2D 和 H2、H2S、H2D、H2C、H2D Pro。通过命令行调用 ffmpeg:
rtsps://bblp:<token>@<host>:322/streaming/live/1 -frames:v 1。OpenBambuAPI 的video.md中未记载 H2 系列,但其固件使用与 X1 相同的 RTSP 端点(已于 2026-04-27 在 H2S 上进行实时验证)。
{
"save_path": "/tmp/snap.jpg",
"timeout_ms": 8000,
"bambu_model": "h2s",
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
返回 { status, format: "image/jpeg", sizeBytes, base64, savedTo?, transport }。transport 为 "tcp-6000" 或 "rtsps-322",调用方可据此判断帧是通过哪种方式获取的。传入 save_path 还可将字节写入磁盘;否则只返回 base64 负载。
delete_printer_file
通过 FTPS 从打印机的 SD 卡中删除单个文件。**具有破坏性。**需要 confirm: true——否则调用会返回 status: "skipped",且不会联系打印机。路径中不允许包含路径遍历片段(..)。只能删除 cache/、timelapse/ 和 logs/ 目录下的文件。
{
"filename": "old_print.gcode.3mf",
"confirm": true,
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
如果只提供文件名,默认路径为 cache/<filename>。如需指定其他目录,请传入相对路径:
{ "filename": "timelapse/2026-04-26_12-00.mp4", "confirm": true }
{ "filename": "logs/printer.log", "confirm": true }
upload_gcode
将字符串中的 G-code 内容直接写入打印机的 cache/ 目录。内容会先写入临时文件,再通过 FTPS 上传。
{
"filename": "calibration.gcode",
"gcode": "G28\nM104 S210\nG1 X100 Y100 Z10 F3000\n",
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
upload_file
将本地文件(G-code 或 3MF)上传到打印机。如果 print 为 true,且文件为 .gcode 文件,则上传成功后会自动调用 start_print_job。对于 .3mf 文件,上传会正常完成,但必须使用 print_3mf 开始打印(该工具会处理打印板选择和元数据)。
{
"file_path": "/Users/yourname/Downloads/part.3mf",
"filename": "part.3mf",
"print": false,
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
start_print_job
开始打印已存储在打印机 SD 卡上的 .gcode 文件。不要用于 .3mf 文件——请改用 print_3mf,它会通过包含正确元数据的 project_file MQTT 命令进行处理。
{
"filename": "cache/calibration.gcode",
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
如果 filename 不包含目录前缀,服务端会自动添加 cache/。
cancel_print
取消当前正在运行的打印任务。发送 state: "stop" 的 UpdateState MQTT 命令。无法恢复——如果可能还要继续打印,请使用 pause_print。
{
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
pause_print
暂停当前正在运行的打印任务。发送 state: "pause" 的 UpdateState MQTT 命令。可通过 resume_print 恢复。
{
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
resume_print
恢复已暂停的打印任务。发送 state: "resume" 的 UpdateState MQTT 命令。
{
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
clear_hms_errors
清除打印机上的 HMS 或打印错误状态。发送 Bambu 的 clean_print_error MQTT 命令。
{
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
set_print_speed
设置当前打印速度模式。接受的 mode 值为 silent、standard、sport、ludicrous,或对应的数字 1、2、3 和 4。
{
"mode": "sport",
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
set_airduct_mode
将 H2/P2 风道模式设为 cooling 或 heating。此功能仅适用于受支持的打印机。
{
"mode": "cooling",
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
reread_ams_rfid
触发 Bambu AMS 的 RFID 重读,适用于一个 AMS 槽位。这可能会移动 AMS 耗材;仅在打印机空闲且未装载耗材时使用。
{
"ams_id": 0,
"slot_id": 1,
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
set_temperature
通过 MQTT 为热床或喷嘴设置经过检查的目标温度。设置正温度需要提供打印机型号和最新且匹配的打印机遥测数据;加热喷嘴还需要声明已装载的 material 和匹配的 nozzle_diameter(默认值为 0.4)。型号/组件和材料分别有各自的温度上限。将目标温度设为 0 可关闭加热器,无需提供材料或喷嘴元数据。可接受的 component 值为 bed、nozzle、extruder、tool 和 tool0。
手动加热喷嘴时会检查当前报告的 AMS 托盘或外置料盘。对于多喷嘴打印机,如果当前喷嘴/材料选择不明确,则会拒绝操作;此时请使用经过检查的切片任务或打印机自身的控件。停止和关闭加热器的命令会取消待处理的服务端打印/加热操作。通过 MCP 恢复打印时,必须是同一服务实例检查并启动的同一个已暂停任务,且遥测数据必须是最新且匹配的;其他已暂停任务仍可通过打印机控制。
{
"component": "nozzle",
"temperature": 220,
"bambu_model": "p1s",
"material": "PLA",
"nozzle_diameter": 0.4,
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
set_fan_speed
将打印机风扇速度设为 0 至 100%。可接受的 fan 值为 part、auxiliary、chamber、1、2 和 3。
{
"fan": "chamber",
"speed": 40,
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
set_light
设置打印机灯光节点模式。常见的 Bambu 固件会将仓室灯报告为 chamber_light;有效模式为 on、off 和 flashing。
{
"light": "chamber_light",
"mode": "on",
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
skip_objects
在正在进行的多对象打印过程中跳过指定的对象 ID。请先对切片后的 3MF 使用 list_3mf_plate_objects 查找 ID。
{
"object_ids": [6495, 6496],
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
set_ams_drying
在带加热功能的 AMS 设备(AMS Pro / AMS-HT)上启动或停止 AMS 耗材干燥周期。action 参数接受 start 或 stop。ams_id 必须是 0 到 3 之间的整数。
{
"action": "start",
"ams_id": 0,
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token"
}
停止干燥:
{
"action": "stop",
"ams_id": 0
}
inspect_print_file
在决定导出或打印前,离线检查已准备好的切片 3MF 或文本 G-code 文件。此工具会将文件复制到私有只读快照中,并复用打印预检所用的相同归档、选定平台、型号/喷嘴/材料及温度检查。它不会联系打印机,也不会自动切片未切片的项目。
{
"file_path": "/path/to/bracket.gcode.3mf",
"bambu_model": "p1s",
"plate_index": 0,
"nozzle_diameters": [0.4],
"bed_type": "textured_plate"
}
必须提供 file_path 和明确的 bambu_model;绝不会从配置中推断型号。plate_index 从 0 开始,默认值为 0。喷嘴/热床检查是与文件声明进行的可选比对,不代表对已安装硬件的观测。此工具仅接受这五个参数名称;凭据、主机和可执行文件/桥接覆盖参数均不适用于此工具。
通用结果包含 receipt_version: "1"、evidence: "file-only"、dispatch_authorized: false、artifact(sha256、byte_length、file_format)、请求的 selection,以及原始 inspection,其中包括声明的型号、喷嘴、材料/已使用的耗材位置、内部平台路径和经过检查的温度峰值。哈希值和字节长度用于标识所检查的确切快照;使用方必须将它们与自身的制品和选定平台进行比对。临时快照会被删除,其路径不具备调度权限。回执无法证明打印机已就绪、实体材料/喷嘴的实际内容、适配性、完整运动模拟结果或打印权限。实际打印路由仍会独立检查已调度的快照,并要求最新的硬件状态和人工预检。
print_3mf
用于启动 Bambu 打印的主要工具。建议输入:从 FULU OrcaSlicer-bambulab、OrcaSlicer 或 Bambu Studio 导出的预切片 .gcode.3mf——参见切片指南。此工具会处理完整工作流:
- 检查 3MF 是否包含嵌入的 G-code(
Metadata/plate_<n>.gcode条目)。 - 如果未找到 G-code,则尝试通过已配置的切片器自动切片。配置文件准备或切片失败时,会在上传前停止操作。有关经过测试的 CLI 版本和组合,请参阅切片指南。
- 解析切片后的 3MF,以提取正确的打印板文件并计算其 MD5 哈希值。
- 读取切片器元数据和任何显式的 AMS 选择,以构建耗材映射。
- 使用
basic-ftp上传到对应机型的位置:H2/全尺寸 A1 上传到 SD 卡根目录;P1/X1/A1 mini/P2S 上传到cache/。X2D 的print_3mf则会在 macOS 或 Linux 上使用经过检查的原生路径,将任务存储到已就绪的 SD 卡或 USB 盘上;否则存储到内部存储(eMMC)。 - 为目标打印机系列发送正确的 MQTT 打印命令。对于 H2S/H2D/H2C,这意味着使用
project_file,并设置项目长度的ams_mapping、并行的ams_mapping2和兼容 H2 的校准标志。
{
"three_mf_path": "/Users/yourname/Downloads/bracket.3mf",
"bambu_model": "p1s",
"bed_type": "textured_plate",
"host": "192.168.1.100",
"bambu_serial": "01P00A123456789",
"bambu_token": "your_access_token",
"bed_leveling": true,
"flow_calibration": true,
"vibration_calibration": true,
"timelapse": false,
"use_ams": true,
"ams_mapping": [0, 1]
}
bambu_model 是机型专属路由和预设选择的必填项。它本身不会验证预切片的 G-code。使用 BambuStudio、FULU 和 Orca CLI 进行准备时,还必须提供与机型和喷嘴完全匹配的机器预设,并且会拒绝不完整的配置文件。使用错误的机型可能损坏硬件。如果工具调用中未提供 bambu_model,且环境中也未设置 BAMBU_MODEL,服务器会通过 MCP elicitation 交互询问(如果客户端支持),否则返回明确的错误。
如果省略 bed_type,则默认为 textured_plate。nozzle_type(stainless_steel、hardened_steel、tungsten_carbide、brass;默认值为 BAMBU_NOZZLE_TYPE)用于在项目必须自动切片时设置已安装的喷嘴;任务的喷嘴类型必须与打印机报告的类型一致,且 P1S/P1P/A1 的标准预设假定使用不锈钢喷嘴。nozzle_volume_type(standard、high_flow;默认值为 BAMBU_NOZZLE_VOLUME_TYPE)同样用于在自动切片时设置已安装喷嘴的流量类型;它必须与打印机报告的喷嘴流量一致。发送 MQTT 打印命令后,服务器会监听打印机主动推送的报告,最长 15 秒(BAMBU_DISPATCH_CHECK_MS),并返回 dispatch: "started" 或 "unconfirmed";如果固件 01.08.05+ 拒绝命令(HMS 0500-0500-0001-0007,需要启用 LAN Only Mode 和 Developer Mode),则调用会失败并说明原因;再次打印前,请先使用 clear_hms_errors 清除这条致命 HMS 条目。ams_slots 是首选的覆盖输入;ams_mapping 仍可作为原始的备用入口。对于配备 AMS 的 H2 打印机,如果切片文件声明了耗材,即使 use_ams: false 也不会跳过映射查询。如果 H2 的预切片任务声明了耗材但未提供映射,服务器会在发送前失败;请传入显式的 ams_slots、原始 ams_mapping 或 auto_match_ams: true。
设置 auto_match_ams: true,即可将切片后 3MF 中的 tray_info_idx 值与实时 AMS 库存匹配,并使用匹配到的 ams_slots。匹配器会根据 (tray_info_idx, tray_color) 进行关联,并跟踪已分配的插槽,因此,即使打印任务中的两种耗材具有相同的 SKU 但颜色不同(例如,黑色和白色的两卷 GFG02 PETG HF),也能正确匹配。如果 3MF 中的耗材未设置颜色,或者只装载了一卷该 SKU 的耗材,则会退回到仅按 SKU 匹配。如果无法解析某种耗材,则会返回结构化的 missing 报告(reason: "no_loaded_match" | "color_mismatch" | "exhausted" | "no_sku")。如果显式提供了 ams_slots 或 ams_mapping,则忽略此设置。
此工具无法覆盖层高、喷嘴温度和其他切片器参数——这些参数会在切片时写入 3MF 的 G-code 中。请在生成 3MF 前于切片器中应用这些设置。
对于可选的 FULU 桥接,将 connection_mode: "bambu_network" 设为必需,并明确选择 connection_type: "cloud" 或 "lan";请参阅 FULU 设置。命令提交成功并不代表打印机已接受命令:请检查打印机状态、HMS 错误以及打印机本身。
bambu_network_bridge_status
使用 {} 检查已配置的 FULU 桥接,而不启动它。使用 {"connect": true} 启动主机、完成握手并初始化 Agent。有关如何解读结果,请参阅桥接探测。
bambu_network_call
调用允许的只读探测,例如 {"method": "net.is_user_login", "payload": {}}。默认会注入已初始化的 Agent;对于 bridge.handshake,请使用 with_agent: false。原始打印机修改操作和未知方法会被拒绝;请使用专用且经过检查的打印或打印机工具。
X2D 原生传输(macOS)
安装 Bambu Studio 及其网络插件,并安装 Apple 命令行开发者工具(clang++)。插件会在运行时加载,不会随软件包一起分发。在已安装的 bambu-printer-mcp 软件包目录中运行 npm run build:native。如果是全局安装,可通过 npm root -g 查找该目录;如果是解压后的桌面扩展,则在扩展目录中运行同一命令。更新软件包后请重新构建。Linux 请参阅 X2D 原生传输(Linux);Windows 只能使用状态查询和切片功能。
npm 软件包和桌面应用捆绑包包含 native/bambu-native-print.cpp、scripts/build-bambu-native.sh 和 Linux 安装脚本,但不包含开发者编译的二进制文件。无论启动目录为何,服务都会相对于已安装的软件包查找构建好的辅助程序。受信任的服务设置 BAMBU_NATIVE_HELPER 可指定备用可执行文件。
对于 X2D,print_3mf 默认使用 connection_mode: "bambu_native";旧版 lan_mqtt_ftps 请求会重定向至该模式。请提供 ams_slots、完整的项目级 ams_mapping,或设置 auto_match_ams: true。仅使用一个外置料盘的任务必须明确设置 use_ams: false;同时使用 AMS 托盘和外置料盘的任务会将外置料盘映射为 254(左侧/副喷嘴)和 255(右侧/主喷嘴)。原始 ams_mapping2 和喷嘴/额外选项覆盖项会在分发前被拒绝;服务会根据经过校验的结构化映射生成两种 AMS 表示形式。模型/喷嘴/材料检查、最新的打印机状态检查和人工预检,会在辅助程序收到私有快照前执行。原生辅助程序会在每次提交打印前(包括证书重试时),以及执行经过校验的加热、恢复或清除错误命令前,请求最新的共享打印机状态授权;自定义辅助程序必须支持此握手。无需预检也可使用停止和关闭加热器功能。原生仅上传请求会执行与 FTPS 上传相同的所有平台检查。此类请求接受 project_name、preset_name、bed_type 和现有的 plate_index;AMS、喷嘴和校准打印选项会被拒绝。请使用 print_3mf 设置经过校验的打印选项。
辅助程序会等待连接/证书交换,并且只会对初始的 -4030 发送进行一次重试。升级后请重新构建辅助程序,以获取修复了清理问题的版本。成功提交的回执会使辅助程序在插件清理可能将已接受的任务变成错误之前退出。如果旧版/自定义辅助程序在提交后崩溃,服务会报告状态不确定:重试前请检查打印机状态和任务名称,因为重新发送可能导致重复打印。此前的硬件测试已在 X2D 上达到 RUNNING 状态;此修订版通过模拟传输回归测试和全新安装验证,但未进行新的实体打印。bambu_connect 是 macOS 上的可选交接功能,可供用户在 Bambu Connect 中检查,不会启动打印。原生任务、加热器和错误控制仍执行通用安全检查;原始控制无法绕过这些检查。请求取消、停止和关闭加热器操作会中断待处理的原生辅助程序;服务会等待进程退出后再释放经过校验的文件。已经发送给打印机的命令无法通过取消请求撤回,因此重试前请确认打印机状态。
X2D 原生传输(Linux)
在 x86-64 Linux 上,只需运行一条命令即可构建辅助程序,并安装 Bambu 的网络插件和 Bambu Studio 证书。需要 C++ 编译器(g++ 或 clang++)和网络连接;不需要桌面环境或切片软件:
npx -y -p bambu-printer-mcp bambu-printer-mcp-native-setup
请使用与服务端相同的软件包版本,例如 [email protected];如果缺少安装或安装已过期,服务端错误会给出准确命令。此设置会下载 Bambu Studio 自行安装的 Linux 插件,该插件固定为确切版本和 SHA-256 校验值,并与证书一起存储在 ~/.config/bambu-printer-mcp/bambu-native 下(可通过 BAMBU_NATIVE_HOME 或 XDG_CONFIG_HOME 更改位置;服务端也必须设置相同的值)。此软件包不会重新分发该插件,也绝不会使用 Bambu Studio 自行自动更新的副本。服务端会自动找到此安装,并将插件和证书路径传给辅助程序。升级后,请使用服务端对应的软件包版本重新运行设置:服务端会拒绝使用其他版本构建的辅助程序。只有缺失或已更改的文件才会重新下载。随后,设置会离线加载一次插件,以便在安装期间报告缺失的系统库,而不是等到执行停止命令时才报告。--verify 会在不联网的情况下重复这些检查。在 Linux 上,服务端只使用此托管辅助程序或 BAMBU_NATIVE_HELPER;不会使用软件包本地的 npm run build:native 二进制文件。
--check-update 会向 Bambu 的插件服务查询最新的 Linux 插件,并将对应 Bambu Studio 头文件中的 PrintParams 布局与辅助程序进行比较。此命令只报告结果:设置绝不会安装未固定版本的插件,因为布局更改会导致打印参数错误。只有检查通过并完成硬件测试后,软件包发布版本才会更新固定版本。
安装好辅助程序、插件和证书后,X2D 打印、上传和控制会使用与上述 macOS 部分相同的路由、安全检查和授权握手。在 Linux 上,停止和关闭加热器命令会同时通过原生路由和 MQTT 发送,因此辅助程序卡住也不会延误这些命令。等该打印机的所有较早打印或加热辅助程序退出,且即时 MQTT 尝试结束后,系统会再次通过 MQTT 发送命令,以确保它们都无法在此之后发送命令;只要原生路由或后续 MQTT 发送任一成功,就视为成功,结果会在 routes 下列出所有发送操作。每次 MQTT 发送会在 15 秒后放弃(BAMBU_EMERGENCY_MQTT_TIMEOUT_MS),因此无法连接 MQTT 不会阻止原生路由已发送的停止命令。截止时间之后完成的连接无法发送已过期的命令;系统会通过强制关闭并使该客户端失效来丢弃已经排队的 MQTT 发布。重复发送停止或关闭加热器命令不会造成问题。macOS 仍只使用原生路由。在这两个系统上,如果打印机报告 SD 卡或 USB 闪存盘已就绪,打印任务会发送到该存储设备,以便从打印机重新打印,并由读取存储卡的工具归档;否则会发送到内部存储(eMMC),与 Bambu Studio 的“打印”按钮始终采用的方式相同。BAMBU_NATIVE_TRY_EMMC_PRINT=1(或 0)可强制选择存储方式。服务端只接受校验和与固定值匹配的插件;BAMBU_NATIVE_ALLOW_UNPINNED_PLUGIN=1 是可信覆盖选项,可自行承担风险,用于测试其他构建版本。如果安装不完整,Linux 会保留先前行为:X2D 状态查询和切片功能正常,停止、暂停和关闭加热器命令使用 MQTT,而原生打印请求会在联系打印机前显示设置命令。Bambu 只为 x86-64 发布 Linux 插件;其他架构仍使用 MQTT 行为。
x2d_native_control
此可选 X2D 元数据工具接受 ams_filament_setting 和 extrusion_cali_sel,以及只读查询 extrusion_cali_get、extrusion_cali_get_result 和 flowrate_get_result。它会验证命令字段、数值元数据以及 AMS 单元/料槽选择。原始 JSON 不开放运动控制、装载耗材、加热、安全设置更改和任务控制;如有可用的专用校验工具,请使用这些工具。声明元数据并不能验证线轴中的实际耗材。
print_3mf_bambu_network
通过 FULU 单独配置的联网运行时提交已切片项目。connection_type 默认为 cloud。云端和 LAN 桥接任务都需要打印机 IP、LAN 访问码、匹配的序列号/设备 ID,以及最新的 MQTT 安全遥测数据。文件、原始 AMS/喷嘴映射和额外选项的覆盖不能替代经过校验的参数。请参阅打印示例和 AMS 要求。桥接返回码为 0 表示已提交,不代表实际打印已开始,也不代表直接支持 X2D。
resolve_3mf_ams_slots
试运行 AMS 匹配,不上传文件或启动打印。该工具会读取 Metadata/plate_<n>.json 和 Metadata/slice_info.config,然后将必需的 tray_info_idx 值与实时 AMS 料槽进行比对。
{
"three_mf_path": "/Users/yourname/Downloads/bracket.gcode.3mf",
"bambu_model": "h2d",
"host": "192.168.1.100",
"bambu_serial": "094...",
"bambu_token": "your_access_token"
}
list_3mf_plate_objects
列出已切片 3MF 构建板中的对象 ID。使用 skip_objects 前请先运行此工具,以便传入真实的 Bambu 对象 ID,而不是根据显示顺序猜测。
{
"three_mf_path": "/Users/yourname/Downloads/bracket.gcode.3mf",
"plate_index": 0
}
print_collar_charm
用于已准备好的两件式狗项圈吊饰工作流的高级封装工具。此工具有意针对特定场景设计:它要求使用已准备好的两件式吊饰项目,并应用固定的料槽策略。
- 较小的内侧对象 -> 黑色 -> AMS 1 料槽 1
- 较大的外侧对象 -> 白色 -> AMS 2 料槽 1
此工具将:
- 解析本地
.3mf或template_name。 - 如果 3MF 仍是未切片项目,则自动切片。
- 检查
Metadata/plate_1.json,确定较小的内侧部件和较大的外侧部件。 - 在打印机上预检所需的 AMS 料槽。
- 使用
ams_slots,通过现有的 H2 安全print3mf路径发送打印任务。
{
"template_name": "collars/letter_charm_a",
"bambu_model": "h2d",
"host": "192.168.1.100",
"bambu_serial": "03W09C123456789",
"bambu_token": "your_access_token",
"bed_leveling": true,
"flow_calibration": true,
"vibration_calibration": true,
"timelapse": false
}
你也可以直接传入 source_path,而不是 template_name。
此封装工具目前假定:
- 输入是已准备好的两件式吊饰
.3mf,而不是需要生成颜色区域的裸 STL 文件 - 所选构建板恰好有 2 个对象
- 所选构建板恰好使用 2 个耗材位置
- 较小的对象是内嵌件/字母,较大的对象是外壳
如果项目不符合这些假设,工具会快速失败并返回结构化错误,而不会自行猜测。角色到颜色以及颜色到料槽的映射在代码中彼此隔离,因此后续版本可以逐步支持客户指定颜色,而无需整体替换此封装工具。
切片工具
切片工具
**注意:**经过验证的工作流是在 Bambu Studio(GUI)中切片,然后将生成的
.gcode.3mf传给print_3mf。以下由 CLI 驱动的切片工具(slice_stl、slice_with_template)可以使用,但容易受到配置文件漂移的影响,因此不建议用于生产打印。请参阅切片指南。
list_templates
列出本地注册表目录中的已保存模板。你可以使用 BAMBU_TEMPLATE_DIR 覆盖注册表根目录。
{}
每条结果都包含模板 name、绝对 path、源类型,以及注册表中的相对路径。随后你可以传入 template_name,用于 get_slice_settings、slice_stl 或 print_3mf,而无需传入原始路径。
将本地 3mf、json 或 .config 文件复制到模板注册表,并使用可复用的模板名称注册。
{
"source_path": "/path/to/sliced_project.3mf",
"template_name": "collars/p1p_petg_default"
}
此操作会在模板注册表目录下创建目标文件,并立即使其可供 list_templates、get_slice_settings、slice_with_template、slice_stl 和 print_3mf 使用。
get_slice_settings
检查已保存的 3MF 模板或已提取的 JSON/config 配置文件中嵌入的切片器设置,无需进行切片。
{
"template_name": "h2s_template"
}
此操作会返回关键信息设置的简要摘要,例如打印机预设、默认打印配置文件、耗材配置文件、层高、填充密度、外壳数量、支撑模式和热床类型。它接受 source_path 或 template_name。对于 3MF 输入,它还会将提取出的设置数据写入临时路径,以便直接复用结果。
slice_with_template
使用本地注册表中的命名模板对 STL 或 3MF 进行切片。这是面向模板工作流的 slice_stl 高级封装。
{
"stl_path": "/path/to/model.stl",
"template_name": "collars/p1p_petg_default",
"bambu_model": "p1p"
}
此操作使用命名模板作为切片配置文件来源,并仍支持实时选择打印机耗材,除非你明确覆盖 load_filaments。模板设置会在切片时应用,之后的 print_3mf 步骤会根据新切片的输出计算 H2 安全的 AMS 映射。
slice_stl
使用外部切片器对 STL 或 3MF 文件进行切片,并返回输出文件的路径。输出文件为切片后的 3MF(适用于 BambuStudio、OrcaSlicer 和 FULU OrcaSlicer-bambulab)或 G-code 文件(适用于 PrusaSlicer、Cura、Slic3r)。
{
"stl_path": "/path/to/model.stl",
"slicer_type": "bambustudio",
"bambu_model": "p1s"
}
slicer_type 可选值:bambustudio、orcaslicer、orcaslicer-bambulab(FULU)、prusaslicer、cura、slic3r。别名包括 fulu-orca 和 orca-studio。如果省略,则使用 SLICER_TYPE 环境变量的值(默认值:bambustudio)。
FULU/Orca CLI 安全性: 从 1.1.11 版起,这些后端要求使用所选安装版本中的准确模型/喷嘴预设,并会在配置文件准备失败时停止。进程级覆盖无法绕过此限制。请参阅配置和验证限制。
OrcaSlicer CLI 变换: 当 scale 或 rotate_x/rotate_y 使对象在排列时移到热床下方,OrcaSlicer 2.4.2 的 CLI 会发生段错误;对于 STL 输入,这是默认行为。OrcaSlicer 在 2.4.2 之后修复了此问题,详见 #14415,首次发布于 2.5.0-alpha。对于使用 orcaslicer 或 orcaslicer-bambulab 的 STL 输入,服务会按照 CLI 的顺序,对网格副本应用 scale 和旋转,并省略这些标志。对于 3MF 输入,如果 scale 大于 1,或 rotate_x、rotate_y 与 arrange: true 同时使用,则会拒绝处理。repetitions 会使用 Orca 的 --clone-objects 复制 STL。clone_objects 接受一个总数,因为 CLI 会按加载的文件计算副本数。使用 arrange: false 时,未置于热床上的 STL 无法切片。错误信息会说明切片器自身报告的原因。
如果未指定,slicer_path 和 slicer_profile 会分别使用 SLICER_PATH 和 SLICER_PROFILE 环境变量。按调用设置的 slicer_path 覆盖值要求设置 MCP_ALLOW_EXECUTABLE_ARG=1。
如果要使用已保存的模板进行切片,可以提供 template_3mf_path 或 template_name。template_name 会通过为服务配置的本地模板注册表目录解析。
要在 Bambu 打印机上打印,推荐的工作流是:从所选的 Bambu 兼容切片器导出切片后的 3MF,然后将该输出路径传递给 print_3mf。
BambuStudio 切片器选项
当 slicer_type 为 bambustudio(默认值)时,slice_stl 还支持以下参数:
| 参数 | 类型 | 说明 |
|---|---|---|
uptodate | boolean | 将 3MF 配置更新为最新的 BambuStudio 预设 |
repetitions | number | 打印的副本数量 |
orient | boolean | 自动调整模型方向,以获得最佳可打印性 |
arrange | boolean | 自动在构建板上排列对象 |
ensure_on_bed | boolean | 将悬空模型抬至构建板上 |
clone_objects | string | 每个对象的克隆数量,以逗号分隔(例如 "1,3,1,10") |
skip_objects | string | 要跳过的对象索引,以逗号分隔(例如 "3,5,10") |
load_filaments | string | 耗材配置文件路径,以分号分隔 |
load_filament_ids | string | 耗材到对象的映射,以逗号分隔 |
nozzle_volume_type | string | 已安装喷嘴的流量类型:standard 或 high_flow(默认值:BAMBU_NOZZLE_VOLUME_TYPE,否则使用预设中的 Standard 默认值)。high_flow 使用预设中的 High Flow 数值,例如耗材的 High Flow 最大体积流量;如果机器预设未声明 High Flow 变体,则会拒绝此选项。slice_with_template 也支持此参数。 |
filament_colours | string | 耗材槽颜色,每个耗材槽对应一个 #RRGGBB,以分号分隔。优先级依次为显式指定的值、输入 3MF 颜色、各自定义配置文件的颜色,最后是 BambuStudio 默认颜色。 |
enable_timelapse | boolean | 启用适配延时摄影的切片 |
allow_mix_temp | boolean | 允许在同一块板上使用温度不同的耗材 |
scale | number | 等比缩放系数 |
rotate | number | Z 轴旋转角度(度) |
rotate_x | number | X 轴旋转角度(度) |
rotate_y | number | Y 轴旋转角度(度) |
min_save | boolean | 生成更小的输出 3MF(加快上传速度) |
skip_modified_gcodes | boolean | 忽略 3MF 中过时的自定义 gcodes |
slice_plate | number | 要切片的板号(0 = 所有板,默认值:0) |
示例:自动调整方向并切片,生成 3 个副本
{
"stl_path": "/path/to/model.stl",
"bambu_model": "p1s",
"orient": true,
"arrange": true,
"repetitions": 3
}
智能默认值(print_3mf 自动切片)
当 print_3mf 检测到未切片的 3MF 并自动对其切片时,会自动应用以下默认值:
uptodate: true-- 避免下载的 3MF 出现过时配置错误ensure_on_bed: true-- 安全措施:将悬空模型抬至构建板上min_save: true-- 输出更小的文件,加快通过 FTP 上传到打印机的速度skip_modified_gcodes: true-- 移除其他用户配置文件中的自定义 gcodes
这些默认值可减少配置文件过时导致的问题;打印前请检查下载的模型及其切片预览。直接调用 slice_stl 时,你可以完全控制每个标志。
高级工具
高级工具
Blender MCP
使用标准的 stdio Blender MCP 服务,并设置 BLENDER_MCP_COMMAND 和
BLENDER_MCP_ARGS。对于常见的 Blender MCP 服务,请安装 uv 及与其匹配的
Blender 插件,启用该插件,并在 Blender 中启动连接。将命令设为完整的
uvx 路径,并将参数数组设为
["blender-mcp"]。Claude Desktop 扩展也提供这两项可选设置。
无需配置 Blender 即可使用打印机工具。
- 使用
{"connect": true}调用blender_mcp_status,以初始化服务 并发现其工具和输入架构。MCP 服务已连接并不能单独证明 Blender 插件正在运行。 - 使用发现的工具名称及其参数调用
blender_mcp_call。将返回完整的 MCP 结果,包括图像和错误。例如:
{
"tool_name": "get_scene_info",
"arguments": {"user_prompt": "Inspect the scene before preparing a print."}
}
对于高级 Blender 操作,请转发 execute_blender_code,并提供 code
和用户原始的 user_prompt。这些调用可能会编辑当前场景。
请使用发现的架构,不要假设某个工具一定存在。
标准 MCP 编辑辅助工具会导入 STL,按顺序应用编辑,并导出 STL,而不会替换输入文件或现有输出文件。支持的操作包括 decimate:<ratio>(大于 0 且不超过 1)、remesh:<voxel size>(以 STL 坐标单位表示的正数)和 boolean_union:<STL path>。其他操作可使用 blender_mcp_call。两个进程都必须能够访问相同的文件路径。
当 BLENDER_MCP_COMMAND 选择标准 MCP 时,所公布的工具架构要求预览和执行都必须显式提供 output_path。仅使用旧版桥接的配置为保持兼容,仍可省略 output_path。
{
"stl_path": "/path/to/model.stl",
"output_path": "/path/to/model-edited.stl",
"operations": ["decimate:0.5"],
"user_prompt": "Reduce the triangle count of this model for printing.",
"execute": false
}
默认预览会返回计划和生成的 Python 代码,不会启动 Blender。将 execute 设为 true 即可运行。标准编辑成功后会返回 output_verified: true、output_path、字节数和三角形数量;这些信息是在检查匹配的导出回执和有效的有限网格后返回的。该辅助工具会保留现有场景对象,并要求处于对象模式。切片前请检查结果;STL 有效并不代表它适合打印。
桥接会强制执行请求期限、关闭子进程连接,并且绝不会重放中断的编辑请求。超时后,请先检查 Blender,再尝试重新编辑,因为执行可能已经开始。
现有自定义可执行文件仍可通过 BLENDER_MCP_BRIDGE_COMMAND 使用。它们会收到包含请求文件和操作的 MCP_BLENDER_PAYLOAD;其结果会明确报告 output_verified: false。请求执行时,如果缺少可执行文件配置,就会报错。除非设置 MCP_ALLOW_EXECUTABLE_ARG=1,否则会禁用每次调用时对旧版 bridge_command 的覆盖。
可用资源
可用资源
资源遵循 MCP 资源协议,可通过使用 URI 调用 ReadResource 来读取。服务也会通过 ListResources 列出资源。
打印机资源
-
printer://{host}/status-- 当前打印机状态。等同于调用get_printer_status。返回包含温度、进度、层数、AMS 和原始状态数据的 JSON 对象。 -
printer://{host}/files-- 打印机 SD 卡上的文件列表。等同于调用list_printer_files。按目录分组返回文件。 -
printer://{host}/hms-- 最新状态负载中的 HMS 和错误诊断信息。返回连接状态、打印机状态、存在时的显式 HMS 负载,以及名称表示错误、故障、警告或 HMS 数据的浅层原始字段。
示例: 要读取默认打印机的状态,请使用 URI printer://192.168.1.100/status。主机部分必须与已配置的打印机 IP 匹配;如果使用默认 URI 模板,服务会使用 PRINTER_HOST。
Bambu Lab 打印机限制
Bambu Lab 打印机限制
了解这些限制有助于避免令人沮丧的错误,并设定合理的预期。
-
print_3mf 必须使用可打印的 3MF。
print_3mf工具要求输入已切片的 3MF,其中至少包含一个Metadata/plate_<n>.gcode条目。如果传入未切片的 3MF(即由 CAD 工具导出但未切片的文件),服务会尝试自动切片。BambuStudio、FULU 和 Orca CLI 路径要求匹配的机器预设和完整的配置文件准备;任何检查或切片失败都会在上传前停止。若要使用可预览的工作流,请在 FULU OrcaSlicer-bambulab、OrcaSlicer 或 Bambu Studio 中预先切片,并传入生成的.gcode.3mf。完整流程请参阅切片指南。 -
层高、温度和切片设置已预先确定。
project_fileMQTT 命令会告知打印机要打印哪个平台。它不支持在打印时覆盖层高、目标温度、填充率或其他切片参数。生成 3MF 前,必须在切片软件中设置这些参数。 -
G-code 和 3MF 任务使用不同的命令路径。
start_print_job会通过 MQTT 发送GCodeFileCommand,仅用于存储在cache/目录中的纯 G-code 文件。切片后的 3MF 文件必须通过print_3mf发送,该工具会选择针对相应机型的命令和上传位置。请参阅路由表。混用这两种方式会导致打印机忽略命令或显示错误。 -
温度命令取决于打印机状态。
set_temperature会通过 MQTT 发送 M104 或 M140 G-code。打印机是否接受这些命令,取决于当前固件版本和运行状态。某些打印机状态(例如打开 AMS 管理界面的待机屏幕)可能会忽略或排队等待这些命令。 -
状态和命令提交是两种不同的证据。 本地 MQTT 连接会重复使用,状态则根据收到的打印机报告读取。启动、休眠或状态转换期间,报告可能会延迟。提交任务后,请检查 HMS 错误和打印机的实际状态;工具返回成功并不能证明打印已经实际开始。
-
只有隐藏或信息级 HMS 条目不会阻止操作。 致命、严重和常见 HMS 条目会阻止打印、加热和恢复。例外情况是信息级条目,以及 Bambu 针对特定打印机型号列出的文本为空的严重或常见条目:打印机屏幕、Bambu Studio 和 Bambu Handy 都不会显示这些条目,打印机也会在出现这些条目时继续打印。例如,X2D 每次启动时都会报告隐藏的相机代码
HMS 0500-0600-0002-0070。此列表取自固定版本的 Bambu Studio 提交中附带的 HMS 表(scripts/generate-hidden-hms.mjs),并像 Bambu Studio 一样根据打印机的序列号前缀选择对应表格,涵盖 X2D、P2S、H2D、H2D Pro、H2S 和 H2C。每个型号仅使用自己的表格判断:0500-0600-0002-0070在 X2D 表中是隐藏条目,但 P2S 表中没有列出,因此仍会阻止 P2S。若 Bambu 日后为已列出的代码发布了文本,则在根据较新版本的 Studio 重新生成列表前,检查机制仍会放行该代码。打印预检会列出放行的任何隐藏条目;每项条目首次通过检查时都会将其记录到 stderr,因此无头运行也会留下记录。clear_hms_errors不会处理隐藏条目。未列出的代码和其他型号的表格均不符合条件。 -
网络要求取决于使用的路径。 直接 MQTT/FTPS 工具要求本地网络可达,并且 LAN/Developer Mode 设置兼容。FULU 桥接云任务使用 BambuNetwork,需要相应运行时、互联网访问和身份验证。标准状态、摄像头、文件和控制工具仍使用本地连接;通过桥接器打印不会将它们变成云工具。
-
自签名 TLS 证书。 打印机的 FTPS 服务使用自签名证书。
basic-ftp客户端已配置rejectUnauthorized: false以接受该证书。这是通过本地网络连接 Bambu 设备的常见做法,但前提是本地网络环境可信。
一般限制和注意事项
一般限制和注意事项
内存使用
STL 操作工具会将整个网格作为 Three.js 几何体加载到内存中。对于大型文件:
- 处理超过 10 MB 的文件时,可能会消耗数百 MB 的 RAM。
- 对大型文件连续执行多项操作时,内存可能会在垃圾回收周期之间不断累积。
- 如果遇到内存不足错误,请尝试拆分大型操作,或使用更小、更简化的网格。
- 服务没有内置的内存上限。在资源受限的系统上,请将
TEMP_DIR设置为速度较快的本地路径,并避免同时处理多个大型文件。
STL 操作的局限性
lay_flat通过分析表面法线来识别最大的平面。对于具有明显平面的机械零件,效果可靠;对于没有单一主导平面的有机或曲面模型,效果则不太可靠。extend_stl_base会在模型下方添加一个新的长方体。对于底面复杂或非平面的模型,连接处可能会出现缝隙或交叉。打印前请检查修改后的 STL。merge_vertices使用距离容差来识别近似重复的顶点。容差设置过高可能会改变模型几何形状。默认值 0.01 mm 对大多数模型而言是安全的。- 非流形网格(存在孔洞、面重叠或内部几何体的网格)在执行任何变换操作时都可能产生不可预测的结果。处理有问题的文件前,请使用网格修复工具(Meshmixer、PrusaSlicer 的修复功能或 Bambu Studio 的修复选项)。
性能注意事项
- 使用 BambuStudio CLI 切片可能需要 30 秒到数分钟,具体取决于模型复杂度、层高和系统 CPU。
slice_stl调用是同步的,会一直阻塞,直到切片进程完成。 - 大型 3MF 文件(多打印板打印、高细节模型)的 FTPS 上传可能需要 15 到 60 秒,具体取决于本地网络速度。
- MQTT 连接按
host + serial键池化。会话中首次调用任何打印机工具时会建立 MQTT 连接;后续调用会复用该连接。如果连接断开(打印机电源重启、网络中断),下次调用时会自动重新连接。
致谢
致谢
感谢 FULU Foundation、Louis Rossmann 和 OrcaSlicer-bambulab 社区 推动用户选择权与互操作性的发展。支持开源工具、维修权,以及无需使用 Bambu 软件或云服务即可打印,是本项目的优先事项。请参阅 FULU 设置指南 和 贡献者鸣谢。
部分打印机命令接口和工作流优先事项参考了 Bambuddy,这是一个采用 AGPL-3.0 许可证的 Bambu Lab 打印机管理项目。本项目未引入 Bambuddy 的代码。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
