.3mf 打印: 增加了专门针对 Bambu Lab 打印机的 print_3mf 工具。该工具上传 .3mf 文件并通过基于 OpenBambuAPI 规范的 MQTT 发送打印命令。print_3mf,cancelJob)进行了重构,使用直接 MQTT(TLS 端口 8883),而不是仅依赖于 bambu-js 发送命令。.3mf 文件解析: 实现了一个解析器(src/3mf_parser.ts),用于读取 .3mf 文件中的元数据和 Bambu 特定切片设置(来自 project_settings.config)。BAMBU_STUDIO_CONFIG_PATH,则支持读取 Bambu Studio 预设文件(machine,filament,process)作为 MCP 资源(例如,preset://bambu/process/MyPreset)。slice_stl 工具。merge_vertices,center_model 和 lay_flat 工具,用于使用 three.js 进行基本模型准备。BAMBU_STUDIO_CONFIG_PATH 环境变量以加载预设。bambu-js 提供的潜在不安全的 FTP。getStatus 进行重构,订阅 MQTT 报告并维持实时状态。.3mf 切片配置或用户覆盖的 AMS 映射进行 MQTT 打印命令。.3mf 打印覆盖: 在 print_3mf 工具中添加逻辑,处理用户提供的覆盖(如校准标志),并在可行的情况下通过 MQTT/G-code 处理常见的切片设置。.3mf 文件的 MD5 哈希在 MQTT 打印命令中(可选但协议推荐)。bambu-js FTP 操作(getFiles,uploadFile)为直接 MQTT 方法,如果可能且稳定,或者为 bambu-js 贡献 FTPS 支持。.3mf 支持: 在适用的情况下增加其他打印机类型的 .3mf 打印支持。这是一个允许 MCP 用户连接到这些 3D 打印机 API 端点的服务器:
此服务器是一个模型上下文协议(MCP)服务器,用于连接 Claude 与 3D 打印机管理系统。它允许 MCP 通过各种打印机管理系统的 API(如 OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier 和 Bambu Labs 打印机)与 3D 打印机交互。
关于资源使用注意: 此 MCP 服务器包括高级 3D 模型操作功能,当处理大型 STL 文件时可能会占用大量内存。请参阅“限制和考虑”部分以获取有关内存使用和性能的重要信息。
.3mf 文件(通过 MQTT 命令)npm install -g mcp-3d-printer-server
git clone https://github.com/dmontgomery40/mcp-3d-printer-server.git
cd mcp-3d-printer-server
npm install
npm link # 使命令全局可用
您可以使用 Docker 和 Docker Compose 在容器化环境中运行服务器。
.env.example 复制为 .env 并配置您的设置。docker-compose up --build -d
请注意,默认的 Docker 设置无法直接使用主机上的切片器。由于主机和容器之间的操作系统和库差异,直接挂载切片器可执行文件到容器是不可靠的。
推荐的方法是在 Docker 镜像内部安装您首选的切片器。这使得容器自给自足。
为此,您需要修改 Dockerfile。这里是一个概念性的例子,如何添加 PrusaSlicer 或 OrcaSlicer(具体命令可能因切片器及其依赖项以及当前 Alpine 包而异):
# ... 其他 Dockerfile 命令 ...
# 示例:安装 PrusaSlicer 或 OrcaSlicer(根据需要调整命令)
# 检查 Alpine 包存储库(例如,apk add prusaslicer 或 apk add orcaslicer)
# 如果不可用,手动下载并安装(例如,AppImage):
# RUN apk add --no-cache fuse # FUSE 可能需要用于 AppImages
# RUN wget https://example.com/path/to/OrcaSlicer_Linux_Vxxxx.AppImage -O /usr/local/bin/orcaslicer && \
# chmod +x /usr/local/bin/orcaslicer
# 根据需要在 docker-compose.yml 或运行时设置 SLICER_PATH 环境变量
# 示例对于已安装的可执行文件:
ENV SLICER_PATH=/usr/local/bin/orcaslicer
# ... Dockerfile 的其余部分 ...
修改 Dockerfile 后,重新构建您的镜像(docker-compose build)。您还需要确保 .env 文件或 docker-compose.yml 中的 SLICER_PATH 环境变量指向容器内的正确路径(例如,/usr/local/bin/orcaslicer)。同时设置 SLICER_TYPE 为 orcaslicer。
由于切片器种类繁多(PrusaSlicer、OrcaSlicer、Cura 等)和配置的不同,预安装一个切片器可能会使许多用户的镜像变得臃肿。如果某个特定的切片器成为非常普遍的需求,我可以在未来的版本中考虑为其添加官方支持。
在您将运行服务器的目录中创建一个 .env 文件或设置环境变量:
# 认证打印机管理系统所需的 API 密钥
API_KEY=your_api_key_here
# 默认打印机连接设置
PRINTER_HOST=localhost
PRINTER_PORT=80 # 非 Bambu HTTP API 的端口
PRINTER_TYPE=octoprint # 选项:octoprint, klipper, duet, repetier, bambu, prusa, creality
# 可选:临时文件目录
TEMP_DIR=/path/to/temp/dir
# Bambu Labs 特定配置
BAMBU_SERIAL=your_printer_serial # Bambu 必需
BAMBU_TOKEN=your_access_token # Bambu 必需
# 切片器配置(用于 slice_stl 工具)
SLICER_TYPE=prusaslicer # 选项:prusaslicer, cura, slic3r, orcaslicer
SLICER_PATH=/path/to/slicer/executable
SLICER_PROFILE=/path/to/slicer/profile
# 可选:Bambu Studio 用户配置目录路径(用于加载预设)
# 示例 macOS: /Users/your_user/Library/Application Support/BambuStudio/user/YOUR_USER_ID
# 示例 Windows: C:\Users\your_user\AppData\Roaming\BambuStudio\user\YOUR_USER_ID
# 示例 Linux: /home/your_user/.config/BambuStudio/user/YOUR_USER_ID
BAMBU_STUDIO_CONFIG_PATH=
{
"mcpServers": {
"3dprint": {
"command": "mcp-3d-printer-server",
"env": {
"API_KEY": "your_api_key_here",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "octoprint"
}
}
}
}
{
"mcpServers": {
"3dprint": {
"command": "mcp-3d-printer-server",
"env": {
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"BAMBU_SERIAL": "your_printer_serial",
"BAMBU_TOKEN": "your_access_token"
}
}
}
}
OctoPrint 是一个流行的 3D 打印机 Web 界面。它提供了用于控制打印机的 REST API。
Klipper 是一种适用于 3D 打印机的固件,它与 Moonraker API 服务器一起工作。
Duet 是一种用于 3D 打印机的控制板,具有自己的 Web 界面(DuetWebControl)。
Repetier-Server 是一种用于 3D 打印机的主机软件。
Bambu Lab 打印机使用 MQTT 进行状态和控制,并使用 FTP 进行文件操作。
BAMBU_SERIAL 和 BAMBU_TOKEN)要连接到您的 Bambu Lab 打印机,您需要两样东西:
打印机序列号:
访问令牌: