3D打印机控制服务器

Bambu Lab MCP Server是一个用于Bambu Lab 3D打印机的全面控制服务器,支持通过MQTT、FTP、摄像头、AMS和X.509认证进行实时控制和监控。

  • by schwarztim
  • TypeScript
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 schwarztim/bambu-mcp

使用说明

Bambu实验室MCP服务器

Bambu Lab 3D打印机的模型上下文协议服务器

通过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提供全面的打印机控制。

主要参考文献:

特性

  • 本地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)

运作原理

  1. 消息队列遥测传输 使用LAN访问代码通过端口8883上的TLS连接到打印机
  2. 状态报告包括 持续缓存 当他们谈到MQTT报告主题时
  3. 在MQTT请求主题上发送命令,并使用序列ID进行响应匹配
  4. 文件传输协议 通过FTPS(端口990)将文件上传到打印机SD卡
  5. 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上传中的绝对路径

最佳实践

  1. 将打印机保持在单独的VLAN上
  2. 定期轮换局域网访问代码
  3. 永不承诺 .env 文件(已在 .gitignore)

致谢

许可证

麻省理工学院——见 许可证 了解详情。

免责声明

与Bambu实验室无关或未经其认可。使用风险由您自行承担。