Bambu实验室MCP服务器
Bambu Lab 3D打印机的模型上下文协议服务器
   ](https://nodejs.org/)
_通过Claude AI完全控制Bambu Lab打印机——MQTT、FTP、摄像头、AMS和X.509身份验证_
______________________________________________________________________
概述
Bambu Lab 3D打印机(P1P、P1S、X1C、A1、A1 Mini)的完整MCP服务器。通过本地MQTT进行连接,以实现实时控制和监控,通过FTPS文件上传和X.509证书签名来绕过固件身份验证限制。
25工具 涵盖打印控制、状态监控、摄像头、AMS灯丝管理、温度、LED控制等。
背景
2025年1月,Bambu Lab推出了需要本地局域网打印机控制身份验证的固件更新, 破坏所有第三方工具 --OctoPrint,家庭助理集成,自定义脚本,一切。
社区研究人员从Bambu Connect桌面应用程序中提取了X.509证书和私钥,恢复了第三方访问。此MCP服务器基于该工作构建,通过Claude提供全面的打印机控制。
主要参考文献:
- Hackaday:Bambu Connect的X.509认证证书和私钥提取 --开始解决方法的文章
- OpenBambuAPI --反向工程MQTT协议文档
- 班布节点 --Bambu打印机的TypeScript库
特性
- 本地MQTT控制 --打印、暂停、恢复、停止、速度配置文件、G代码执行
- 实时状态 --使用缓存+新状态工具从MQTT报告中连续缓存
- 相机控制 --开始/停止录制和延时
- AMS管理 --更换灯丝托盘,卸载灯丝
- FTP文件上传 --FTPS上传到打印机SD卡(端口990)
- X.509签名 --通过证书签名绕过固件身份验证限制
- 温度控制 --设置带安全限制的喷嘴/床温度
- 对象跳过 --跳过失败的对象而不停止打印
- 速度曲线 --静音、标准、运动、Ludicrous(或原始百分比)
- LED控制 --腔室和工作灯
- 安全确认 --阻止G代码、温度限制、路径穿越防止
快速开始
先决条件
- Node.js 18+
- 本地网络上的Bambu Lab打印机
- 开发人员模式已启用 在打印机上(推荐--设置>仅局域网>开发人员模式)
安装
git clone https://github.com/schwarztim/bambu-mcp.git
cd bambu-mcp
npm install
npm run build选项A:开发者模式(推荐)
在打印机上启用开发人员模式,然后使用LAN凭据进行配置:
# Grab these from your printer screen:
# IP Address: WLAN → IP
# Access Code: WLAN → Access Code (8-digit)
# Serial Number: Settings → Device → Serial Number添加 ~/.claude/user-mcps.json:
{
"mcpServers": {
"bambu-lab": {
"command": "node",
"args": ["/path/to/bambu-mcp/dist/index.js"],
"env": {
"BAMBU_LAB_MQTT_HOST": "192.168.1.100",
"BAMBU_LAB_MQTT_PASSWORD": "YOUR_ACCESS_CODE",
"BAMBU_LAB_DEVICE_ID": "YOUR_SERIAL_NUMBER"
}
}
}
}开发者模式提供最可靠的体验。所有MQTT命令都会自动使用X.509证书进行签名。
选项B:浏览器登录(无开发者模式)
如果你不想启用开发人员模式(例如,为了保持Bambu Handy的工作状态),你可以通过浏览器登录进行身份验证:
npm run setup这将打开Firefox(代替Chrome使用,以避免谷歌SSO机器人检测),允许您登录Bambu Lab帐户,并自动发现您的打印机。凭据保存到 ~/.bambu-mcp/credentials.json 并自动加载——不需要env变量。
注: 代币有效期约为3个月。跑 npm run setup 再次刷新。然后用Claude Code注册(不需要env变量):
{
"mcpServers": {
"bambu-lab": {
"command": "node",
"args": ["/path/to/bambu-mcp/dist/index.js"]
}
}
}没有开发人员模式的限制: 印刷.3mf文件通过project_file命令需要开发人员模式。.gcode文件和所有其他命令(停止、暂停、恢复、状态、速度、G代码、相机、AMS)都可以在没有它的情况下工作。
工具
云API(4个工具)
| 工具 | 说明 |
|---|---|
get_user_profile | 获取Bambu Lab云帐户配置文件 |
list_printers | 列出注册到云帐户的所有打印机 |
get_printer_status | 通过云API获取打印机状态 |
sign_message | 使用X.509证书对消息进行签名,以绕过固件身份验证 |
打印控制(7个工具)
| 工具 | 说明 |
|---|---|
printer_stop | 立即停止当前打印 |
printer_pause | 暂停当前打印 |
printer_resume | 恢复暂停的打印 |
printer_set_speed | 通过配置文件(静音/标准/运动/滑稽)或百分比设置速度 |
printer_send_gcode | 发送G代码命令(危险命令被阻止) |
printer_print_file | 从打印机SD卡开始打印文件 |
skip_objects | 在多对象打印过程中跳过特定对象 |
状态和信息(3个工具)
| 工具 | 说明 |
|---|---|
printer_get_status | 请求完整状态推送(时间、进度、AMS、粉丝等) |
printer_get_cached_status | 返回上次缓存的状态(无pushall——用于频繁轮询) |
printer_get_version | 获取固件和模块版本信息 |
相机(2个工具)
| 工具 | 说明 |
|---|---|
camera_record | 启用/禁用摄像头录制 |
camera_timelapse | 启用/禁用延时录像 |
AMS和Filament(2个工具)
| 工具 | 说明 |
|---|---|
ams_change_filament | 更换为其他AMS托盘(0-3) |
ams_unload_filament | 从挤出机中卸载当前长丝 |
硬件(3个工具)
| 工具 | 说明 |
|---|---|
set_temperature | 设置喷嘴或床温(有安全限制) |
set_nozzle | 设置喷嘴直径以选择轮廓 |
led_control | 控制室/工作LED灯 |
连接和上传(3个工具)
| 工具 | 说明 |
|---|---|
mqtt_connect | 通过TLS上的本地MQTT连接到打印机 |
mqtt_disconnect | 断开与MQTT的连接 |
ftp_upload_file | 通过FTPS将.gcode/.3mf/.stl上传到打印机 |
建筑
Claude Code / AI
|
v
Bambu Lab MCP Server
|-- Cloud API (bambulab.com)
|-- MQTT Client (port 8883, TLS)
|-- FTP Client (port 990, FTPS)
|
v
Bambu Lab Printer (P1P/P1S/X1C/A1)运作原理
- 消息队列遥测传输 使用LAN访问代码通过端口8883上的TLS连接到打印机
- 状态报告包括 持续缓存 当他们谈到MQTT报告主题时
- 在MQTT请求主题上发送命令,并使用序列ID进行响应匹配
- 文件传输协议 通过FTPS(端口990)将文件上传到打印机SD卡
- X.509签名 将提取的Bambu Connect证书用于经过身份验证的命令
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
BAMBU_LAB_MQTT_HOST | 对于MQTT | 打印机IP地址 |
BAMBU_LAB_MQTT_PASSWORD | 用于MQTT | LAN访问代码 |
BAMBU_LAB_DEVICE_ID | 对于MQTT | 打印机序列号 |
BAMBU_LAB_MQTT_PORT | 无 | MQTT端口(默认值:8883) |
BAMBU_LAB_MQTT_USERNAME | 否 | MQTT用户名(默认值:bblp) |
BAMBU_LAB_COOKIES | 对于云 | 用于云API的会话Cookie |
BAMBU_LAB_BASE_URL | 否 | 云API基础URL |
BAMBU_LAB_USER_ID | 否 | Bambu Lab数字用户ID(用于签名的MQTT命令) |
BAMBU_LAB_APP_CERT_ID | 否 | 覆盖内置的X.509证书ID |
BAMBU_APP_PRIVATE_KEY | 否 | 覆盖内置的X.509私钥 |
BAMBU_APP_CERTIFICATE | 否 | 覆盖内置X.509证书 |
查找打印机信息
- IP地址:打印机屏幕→ WLAN → IP
- 访问码:打印机屏幕→ WLAN → 访问代码(8位)
- 序列号:设置→ 设备→ 序列号
安全
X.509证书
此服务器包括从Bambu Connect桌面应用程序中公开提取的X.509证书。这不是秘密,这是 2025年1月公开披露 并嵌入到Bambu Connect的每个副本中。
所有MQTT命令现在 自动签名 RSA-SHA256使用此证书。这是2025年1月以后的固件所要求的——未签名的命令会被错误拒绝 84033543基本命令(停止、暂停、恢复、速度、G代码)不需要开发人员模式。
可以通过以下方式覆盖证书 BAMBU_APP_PRIVATE_KEY 和 BAMBU_APP_CERTIFICATE 如果Bambu Lab轮换凭据,则使用环境变量。集 BAMBU_LAB_USER_ID (您的数字Bambu实验室用户ID)以实现完全兼容性-通过云API找到它 /v1/design-user-service/my/preference 终点。
安全特性
- 阻止G代码:M112(紧急停止)、M502(出厂重置)、M500/M501(EEPROM)、M997(固件更新)、M999(重启)
- 温度限制:喷嘴最高温度300C,床最高温度120C
- 文件验证:只允许上传.gcode、.3mf、.stl
- 路径遍历预防:没有
..或FTP上传中的绝对路径
最佳实践
- 将打印机保持在单独的VLAN上
- 定期轮换局域网访问代码
- 永不承诺
.env文件(已在.gitignore)
致谢
- 社区研究人员 谁 提取X.509证书 --使这成为可能
- OpenBambuAPI --反向工程MQTT协议文档
- Shockedrope/bambu mcp服务器 --速度剖面概念
- DMontgomery40/mcp-3D打印机服务器 --多打印机平台的启示
- 班布节点 --TypeScript Bambu库
- 竹光实验室 --用于制作出色的打印机(即使身份验证锁定很粗糙)
许可证
麻省理工学院——见 许可证 了解详情。
免责声明
与Bambu实验室无关或未经其认可。使用风险由您自行承担。
