MCP 3D打印服务器
**Bambu
.3mf打印:**新增专为 Bambu Lab 打印机设计的print_3mf工具。该工具会上传.3mf文件,并根据 OpenBambuAPI 规范通过 MQTT 直接发送打印命令。**直接 MQTT 通信(Bambu):**重构 Bambu 命令处理(
print_3mf、cancelJob)以使用直接 MQTT(TLS 端口 8883),而不是仅仅依赖bambu-js执行命令。**
.3mf文件解析:**实现了一个解析器(src/3mf_parser.ts)来读取.3mf文件中的元数据和 Bambu 特定的切片器设置(来自project_settings.config)。**Bambu 预设资源:**如果设置了
BAMBU_STUDIO_CONFIG_PATH,则增加了对将 Bambu Studio 预设文件(machine、filament、process)读取为 MCP 资源(例如,preset://bambu/process/MyPreset)的支持。**OrcaSlicer 集成:**增加了通过其命令行界面为
slice_stl工具使用 OrcaSlicer 的支持。**新的 STL 操作工具:**添加了
merge_vertices、center_model和lay_flat工具,用于使用three.js进行基本模型准备。**配置更新:**添加了用于预设加载的
BAMBU_STUDIO_CONFIG_PATH环境变量。**FTP 使用说明:**在文档中承认,Bambu 的文件操作当前通过
bambu-js使用可能不安全的 FTP。**实现功能奇偶校验:**将 OctoPrint、Klipper、Duet、Repetier、Prusa Connect 和 Creality Cloud 的功能(状态详细信息、文件操作、尽可能直接打印、预设处理)提升到 Bambu 实施所计划的稳健性级别。
**实现完整的 Bambu MQTT 状态:**重构 Bambu 的
getStatus以订阅 MQTT 报告并保持实时状态。**实现强大的 AMS 映射:**替换占位符逻辑;正确解析并使用来自
.3mf切片器配置或用户覆盖的 AMS 映射来执行 MQTT 打印命令。**实施
.3mf打印覆盖:**向print_3mf工具添加逻辑以处理用户提供的覆盖(例如,校准标志)以及可能通过 MQTT/G 代码实现的常见切片机设置(如果可行)。**计算 MD5 哈希:**添加逻辑以计算并包含 MQTT 打印命令中的
.3mf文件的 MD5 哈希(可选但协议推荐)。**重构 Bambu File Ops:**如果可能/稳定,研究用直接 MQTT 方法替换
bambu-jsFTP 操作(getFiles、uploadFile),或者为bambu-js提供 FTPS 支持。**添加预设发现逻辑:**改进预设资源列表(当前根据潜在文件名列出,如果存在则可以解析索引文件)。
**扩展
.3mf支持:**在适用的情况下为其他打印机类型添加.3mf打印支持。**错误处理和报告:**增强 MQTT 错误处理和打印进度/完成的报告。
**测试:**对所有新的 Bambu 功能进行彻底的运行时测试。
目录
Related MCP server: Lodestar MCP Server
描述
这是一个允许 MCP 用户连接这些 3D 打印机的 API 端点的服务器:
OctoPrint
克利珀(《太空城》)
二重唱
雷佩蒂尔
Bambu实验室
Prusa Connect
Creality/Ender
该服务器是一个模型上下文协议 (MCP) 服务器,用于将 Claude 与 3D 打印机管理系统连接起来。它允许 MCP 通过各种打印机管理系统(例如 OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier 和 Bambu Labs 打印机)的 API 与 3D 打印机进行交互。
资源使用注意事项:此 MCP 服务器包含高级 3D 模型处理功能,处理大型 STL 文件时可能会占用大量内存。有关内存使用情况和性能的重要信息,请参阅“限制和注意事项”部分。
特征
获取打印机状态(温度、打印进度等)
列出打印机上的文件
将 G 代码文件上传到打印机
启动、取消和监控打印作业
设置打印机温度
高级 STL 文件操作:
延长底座以获得更好的附着力
均匀缩放模型或沿特定轴缩放模型
围绕任意轴旋转模型
平移(移动)模型
修改 STL 文件的特定部分(顶部、底部、中心或自定义)
具有详细模型信息的全面 STL 分析
生成 STL 文件的多角度 SVG 可视化
长时间操作的实时进度报告
通过详细诊断进行错误处理
切片 STL 文件以生成 G 代码
确认 G 代码文件中的温度设置
从 STL 修改到打印的完整端到端工作流程
直接在 Bambu Lab 打印机上打印
.3mf文件(通过 MQTT 命令)将 Bambu Studio 预设文件(打印机、灯丝、工艺)读取为资源
安装
先决条件
Node.js 18 或更高版本
npm 或 yarn
从 npm 安装
从源安装
使用 Docker 运行
您还可以使用 Docker 和 Docker Compose 在容器化环境中运行服务器。
确保已安装 Docker 和 Docker Compose。
将
.env.example复制到.env并配置您的设置。构建并运行容器:
docker-compose up --build -d
在 Docker 中使用切片器
请注意,默认的 Docker 设置无法直接使用主机上安装的切片器。由于主机和容器之间的操作系统和库存在差异,将切片器可执行文件直接从主机挂载到容器中是不可靠的。
推荐的方法是在 Docker 镜像。这使得容器能够自给自足。
为此,您需要修改Dockerfile 。以下是如何添加 PrusaSlicer 或 OrcaSlicer 的概念示例(具体命令可能因切片器、其依赖项和当前 Alpine 软件包而异):
修改Dockerfile后,重建镜像( docker-compose build )。您还需要确保.env文件或docker-compose.yml中的SLICER_PATH环境变量指向容器内的正确路径(例如, /usr/local/bin/orcaslicer )。并将SLICER_TYPE设置为orcaslicer 。
抱歉,没有包含某个特定的切片器,但考虑到切片器种类繁多(PrusaSlicer、OrcaSlicer、Cura 等),以及可用的配置,预装一个切片器会给许多用户带来不必要的镜像臃肿。如果某个切片器的需求变得非常普遍,我肯定会考虑在未来的版本中添加对它的官方支持。
配置
在运行服务器或设置环境变量的目录中创建一个.env文件:
与 Claude Desktop 一起使用
编辑您的 Claude Desktop 配置文件:
对于 Bambu Labs 打印机:
重启Claude桌面
通过 Claude 连接到您的打印机
支持的打印机管理系统
OctoPrint
OctoPrint 是一款流行的 3D 打印机 Web 界面。它提供了用于控制打印机的 REST API。
默认端口:80(http)或 443(https)
身份验证:需要 API 密钥
Klipper(来自 Moonraker)
Klipper 是与 Moonraker API 服务器配合使用的 3D 打印机固件。
默认端口:7125
身份验证:取决于你的 Moonraker 配置
二重唱
Duet 是一款用于 3D 打印机的控制板,具有自己的 Web 界面(DuetWebControl)。
默认端口:80(http)或 443(https)
身份验证:取决于您的 Duet 配置
雷佩蒂尔
Repetier-Server是一款3D打印机的主机软件。
默认端口:3344
身份验证:需要 API 密钥
Bambu实验室
Bambu Lab 打印机使用 MQTT 进行状态和控制,使用 FTP 进行文件操作。
身份验证:需要序列号和访问令牌(设置
BAMBU_SERIAL和BAMBU_TOKEN)要求:打印机必须在同一网络上或启用云连接
兼容:X1C、P1S、P1P、A1 和其他 Bambu Lab 打印机
查找 Bambu 打印机的序列号和访问令牌
要连接到 Bambu Lab 打印机,您需要两样东西:
打印机序列号:
查看打印机背面或底部的标签,上面有序列号(通常以“01P”或“01A”开头,后跟数字/字母)
或者,打开 Bambu Studio,连接到您的打印机,转到设备 > 设备管理,然后查看打印机的信息
访问令牌:
访问令牌是直接连接到打印机所需的安全代码
对于 P1 系列打印机:转到触摸屏,选择“设置”>“网络”>“LAN 模式”,您将看到访问代码
对于 X1 系列打印机:转到触摸屏,选择“设置”>“网络”>“LAN 模式”,然后启用 LAN 模式以查看访问代码
对于 A1 Mini:使用 Bambu Handy 应用程序连接到打印机,然后转到设置 > 网络 > LAN 模式
注意:如果您的打印机不在同一个本地网络上或者您找不到访问令牌,则可能需要将打印机的固件更新到最新版本以启用 LAN 模式。
Bambu 通信说明 (MQTT & FTP)
**MQTT:**此服务器使用基于社区发现(例如, OpenBambuAPI )的本地 MQTT 协议(端口 8883,TLS)来发送诸如开始打印和取消作业之类的命令。
**FTP:**文件列表和上传目前依赖于打印机上运行的 FTP 服务器(通过
bambu-js库助手)。注意: 。使用时请注意网络安全。
Prusa Connect
Prusa Connect 是 Prusa 自己的基于云的打印机管理解决方案。
默认端口:80(http)或 443(https)
身份验证:需要 API 密钥
兼容:Prusa MK4、Prusa Mini、Prusa XL 和其他带有 Prusa Connect 的 Prusa 打印机
设置 Prusa Connect
确保您的 Prusa 打印机已更新至最新固件
将打印机连接到 Wi-Fi 网络
创建 Prusa Connect 帐户并注册您的打印机
从 Prusa Connect Web 界面的“设置”>“API 访问”下生成 API 密钥
创想云
Creality Cloud 是 Creality 针对其打印机的管理系统。
默认端口:80(http)或 443(https)
身份验证:需要 Bearer 令牌
兼容:Ender系列、CR系列以及其他具有网络功能的Creality打印机
设置Creality Cloud
在您的移动设备上安装 Creality Cloud 应用程序
创建帐户并添加您的打印机
为您的打印机启用本地网络访问
在 Creality Cloud 应用的“设置”>“开发者选项”下生成令牌
可用工具
STL操作工具
内存使用警告:以下 STL 操作工具会将整个 3D 模型加载到内存中。对于大型或复杂的 STL 文件(>10MB),这些操作可能会消耗大量内存。在 MCP 环境中使用这些工具时,请注意内存限制。
获取stl信息
获取有关 STL 文件的详细信息,包括尺寸、顶点数和边界框。
扩展_stl_base
将 STL 文件的基础扩展指定的量。
scale_stl
均匀缩放 STL 模型或沿特定轴缩放。
或者对于非均匀缩放:
旋转_stl
围绕特定轴(以度为单位)旋转 STL 模型。
翻译_stl
沿特定轴(以毫米为单位)移动 STL 模型。
合并顶点
合并小于指定公差的顶点。有助于缩小小间隙并略微简化网格。
中心模型
平移模型,使其边界框的中心位于世界原点 (0,0,0)。
平放
尝试找出模型最大的平面(即尚未正对上方或下方的平面),并旋转模型,使该面在 XY 平面(Z=0)上朝下。这有助于确定打印模型的方向。
修改_stl_部分
对 STL 文件的选定部分应用特定转换。这允许对模型的特定部分进行详细修改。
对于自定义部分边界:
生成_stl_可视化
从多个角度(正面、侧面、顶部和等距视图)生成 STL 文件的 SVG 可视化。
切片_stl
切片 STL 文件以生成 G 代码。
确认温度
确认 G 代码文件中的温度设置。
处理和打印_stl
处理 STL 文件(扩展基础)、对其进行切片、确认温度并开始打印。
**注意:**自动定位以实现最佳打印(最小化支撑等)是一项复杂的任务,通常由切片器 GUI(如 OrcaSlicer 或 PrusaSlicer)处理,并且未在此服务器中实现。
打印机控制工具
获取打印机状态
获取 3D 打印机的当前状态。
对于 Bambu 打印机,目前这仅确认 MQTT 连接。
列出打印机文件
列出打印机上可用的文件。
对于 Bambu 打印机,通过 FTP 列出gcodes目录中的文件。
上传代码
将 G 代码文件上传到打印机。
对于 Bambu 打印机,通过 FTP 上传到gcodes目录。无法自动开始打印。
开始打印
开始打印打印机上已有的文件。
**不推荐用于 Bambu 打印机。**请使用print_3mf打印 Bambu .3mf文件。
取消打印
取消当前打印作业。
对于 Bambu 打印机,通过 MQTT 发送stop_print命令。
设置打印机温度
设置打印机组件的温度。
不支持通过直接 MQTT 命令使用 Bambu 打印机。
Bambu 专用工具
打印_3mf
通过 FTP 将.3mf文件上传到 Bambu 打印机,并通过 MQTT 命令启动打印作业。允许覆盖部分打印参数,例如 AMS 映射。
**注意:**打印机的 MQTT 命令不支持通过此工具覆盖切片器设置(例如层高或温度)。请在生成.3mf文件之前应用这些更改。
可用资源
打印机资源
printer://{host}/status- 3D 打印机的当前状态(目前仅限于 Bambu)printer://{host}/files- 3D 打印机上可用文件的列表(Bambu 的 FTP)printer://{host}/file/{filename}- 特定 G 代码文件的内容(仅检查 Bambu 是否存在)
Bambu 预设资源
如果BAMBU_STUDIO_CONFIG_PATH环境变量设置为您的 Bambu Studio 用户设置目录,您可以读取已保存的预设。
preset://bambu/machine/{preset_name}- 读取机器预设文件(例如,Bambu Lab P1S 0.4 nozzle.json)preset://bambu/filament/{preset_name}- 读取灯丝预设文件(例如,Generic PLA.json)preset://bambu/process/{preset_name}- 读取工艺预设文件(例如,0.20mm Standard @BBL P1S.json)
使用示例: “读取我的 Bambu 工艺预设的内容,名为‘0.16mm Optimal @BBL P1S’”(Claude 将使用preset://bambu/process/0.16mm%20Optimal%20%40BBL%20P1S调用 ReadResource )
Claude 的示例命令
以下是连接 MCP 服务器后可以向 Claude 发出的一些示例命令:
打印机控制
“我的 3D 打印机目前状态如何?”
“显示我的打印机上的文件列表。”
“将此 G 代码上传到我的打印机:[G 代码内容]”
“开始打印名为‘benchy.gcode’的文件。”
“取消当前打印作业。”
“将挤出机温度设置为 200°C。”
“将床温设置为 60°C。”
STL 操作和打印
“获取此 STL 文件并将底座延长 2 英寸,然后发送到切片机并在我的打印机中排队。”
“将 model.stl 的底部延长 1.5 英寸。”
“将此 STL 文件均匀缩放 150%。”
“将 model.stl 的宽度缩放至原来的两倍,但高度保持不变。”
“将此模型绕 Z 轴旋转 90 度。”
“将此 STL 模型向上移动 5 毫米,以在下方形成间隙。”
“你能只修改这个模型的顶部,使其增大 20% 吗?”
“分析这个 STL 文件并告诉我它的尺寸和细节。”
“生成此 STL 文件的可视化效果,以便我可以看到它的样子。”
“从不同角度创建我的模型的 SVG 可视化。”
“在不改变该模型高度的情况下,将其底座加宽。”
“使用 PrusaSlicer 对修改后的 STL 文件进行切片。”
“确认 G 代码中的挤出机温度为 200°C,床面温度为 60°C。”
“处理这个 STL 文件,将底座加长 2 英寸,切片,然后开始打印,但首先确认温度。”
“在 Bambu 打印机上打印
~/Downloads/my_model.3mf。”“使用 AMS 插槽 0 和 2 将
~/Desktop/calibration_cube.3mf上传到 Bambu 打印机,然后关闭床面调平。”“取消我的 Bambu P1S 上的打印作业。”
“我的 Bambu 灯丝预设‘通用 PETG’中的设置是什么?”
“向我展示我的 Bambu 流程预设。”
Bambu Lab 打印机的局限性
由于 Bambu Lab 打印机 API 的性质,存在一些限制:
开始打印:开始打印需要 3MF 项目文件路径、gcode 文件名、打印名称和 MD5 哈希值。此服务器中的简化 API 尚未完全支持此功能。
温度控制:Bambu API 不提供直接设置温度的方法。这需要自定义 G 代码命令。
文件管理:必须将文件上传到打印机上的“gcodes”目录。
**FTP 安全性:**文件操作当前使用打印机的 FTP 服务器,该服务器可能不安全(普通 FTP)。
**参数覆盖:**只有 MQTT
project_file命令支持的参数可以通过print_3mf工具覆盖(例如 AMS 使用情况、校准标志)。切片机的设置(例如层高或温度)无法在打印时通过此命令更改。**状态更新:**通过 MQTT 进行完整的实时状态监控需要进一步实施。
限制和注意事项
内存使用情况
大型 STL 文件:处理大型或复杂的 STL 文件会消耗大量内存。在操作过程中,整个 STL 几何体都会加载到内存中。
多个操作:如果垃圾收集跟不上,按顺序运行多个 STL 操作(尤其是在大文件上)可能会导致内存累积。
MCP 环境:由于本程序以 MCP 服务器形式运行,请注意 Claude 的 MCP 环境存在内存限制。对大型 STL 文件进行复杂操作可能会导致内存不足的问题。
STL 操作限制
截面修改:特定截面的修改功能最适合用于较简单的几何体。复杂或非流形网格可能会产生意外结果。
底部延伸:底部延伸算法的工作原理是在模型底部添加新的几何体。对于底部复杂的模型,结果可能并不完美。
错误处理:虽然我们添加了强大的错误处理功能,但复杂 STL 文件中的一些边缘情况仍然可能导致问题。
可视化限制
SVG 表示:SVG 可视化是一种简化的示意图,而不是真正的 3D 渲染。
复杂模型:对于非常复杂的模型,可视化可能无法准确地表示所有细节。
性能考虑
切片操作:外部切片器进程可能占用大量 CPU 资源,并且对于复杂模型可能需要花费相当长的时间。
进度报告:对于大型文件,进度更新可能会在某些处理阶段出现停滞。
测试建议
从较小的 STL 文件(<10MB)开始测试功能
处理大文件时监控内存使用情况
在尝试修改复杂几何体之前,先测试简单几何体的修改
对于较大的操作,请考虑在具有至少 4GB 可用 RAM 的系统上运行
徽章
徽章 | 描述 |
npm 上软件包的当前版本 | |
该项目采用 GPL-2.0 许可 | |
该项目使用 TypeScript 4.9+ 编写 | |
该项目正在积极维护 | |
我们欢迎通过 Pull 请求做出贡献 | |
需要 Node.js 18.0.0 或更高版本 | |
npm 每月下载次数 | |
该项目已收到的 GitHub 星标数量 |
执照
GPL-2.0