返回市场
mcp-3d打印机服务器

mcp-3d打印机服务器

作者:DMontgomery40117 星标更新:2025-06-26

项目介绍

技术文档摘要

MCP 3D打印机服务器

npm 版本 许可证: GPL-2.0 TypeScript 维护状态 欢迎贡献 Node.js 版本 下载量 GitHub Stars

<a href="https://glama.ai/mcp/servers/7f6v2enbgk"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=2607843622,2173062803&fm=3081&app=3081&f=PNG?w=760&h=400" alt="3D 打印机服务器 MCP 服务器" /> </a> <details> <summary><strong>✨ 最新更新 / 重大更新(截至上次会话)</strong></summary>
  • Bambu .3mf 打印: 增加了专门针对 Bambu Lab 打印机的 print_3mf 工具。该工具上传 .3mf 文件并通过基于 OpenBambuAPI 规范的 MQTT 发送打印命令。
  • 直接 MQTT 通信(Bambu): 对 Bambu 命令处理(print_3mfcancelJob)进行了重构,使用直接 MQTT(TLS 端口 8883),而不是仅依赖于 bambu-js 发送命令。
  • .3mf 文件解析: 实现了一个解析器(src/3mf_parser.ts),用于读取 .3mf 文件中的元数据和 Bambu 特定切片设置(来自 project_settings.config)。
  • Bambu 预设资源: 如果设置了 BAMBU_STUDIO_CONFIG_PATH,则支持读取 Bambu Studio 预设文件(machinefilamentprocess)作为 MCP 资源(例如,preset://bambu/process/MyPreset)。
  • OrcaSlicer 集成: 支持通过其命令行界面使用 OrcaSlicer 进行 slice_stl 工具。
  • 新的 STL 操作工具: 添加了 merge_verticescenter_modellay_flat 工具,用于使用 three.js 进行基本模型准备。
  • 配置更新: 添加了 BAMBU_STUDIO_CONFIG_PATH 环境变量以加载预设。
  • FTP 使用说明: 在文档中指出,Bambu 的当前文件操作使用 bambu-js 提供的潜在不安全的 FTP。
</details> <details> <summary><strong>🗺️ 路线图 / 待办事项</strong></summary>
  • 实现功能对等: 将 OctoPrint、Klipper、Duet、Repetier、Prusa Connect 和 Creality Cloud 的功能(状态详情、文件操作、直接打印、预设处理)提升到与 Bambu 实现计划的稳健性水平。
  • 实现完整的 Bambu MQTT 状态: 对 Bambu 的 getStatus 进行重构,订阅 MQTT 报告并维持实时状态。
  • 实现稳健的 AMS 映射: 替换占位符逻辑;正确解析并使用 .3mf 切片配置或用户覆盖的 AMS 映射进行 MQTT 打印命令。
  • 实现 .3mf 打印覆盖:print_3mf 工具中添加逻辑,处理用户提供的覆盖(如校准标志),并在可行的情况下通过 MQTT/G-code 处理常见的切片设置。
  • 计算 MD5 哈希: 添加逻辑以计算并包含 .3mf 文件的 MD5 哈希在 MQTT 打印命令中(可选但协议推荐)。
  • 重构 Bambu 文件操作: 探索替换 bambu-js FTP 操作(getFilesuploadFile)为直接 MQTT 方法,如果可能且稳定,或者为 bambu-js 贡献 FTPS 支持。
  • 添加预设发现逻辑: 改进预设资源列表(目前基于潜在文件名列出,如果存在可以解析索引文件)。
  • 扩展 .3mf 支持: 在适用的情况下增加其他打印机类型的 .3mf 打印支持。
  • 错误处理及报告: 增强 MQTT 错误处理及打印进度/完成情况的报告。
  • 测试: 对所有新的 Bambu 功能进行全面运行时测试。
</details> <details> <summary>点击展开目录</summary>

目录

</details>

描述

这是一个允许 MCP 用户连接到这些 3D 打印机 API 端点的服务器:

  • OctoPrint
  • Klipper(Moonraker)
  • Duet
  • Repetier
  • Bambu Labs
  • Prusa Connect
  • Creality/Ender

此服务器是一个模型上下文协议(MCP)服务器,用于连接 Claude 与 3D 打印机管理系统。它允许 MCP 通过各种打印机管理系统的 API(如 OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier 和 Bambu Labs 打印机)与 3D 打印机交互。

关于资源使用注意: 此 MCP 服务器包括高级 3D 模型操作功能,当处理大型 STL 文件时可能会占用大量内存。请参阅“限制和考虑”部分以获取有关内存使用和性能的重要信息。

特性

  • 获取打印机状态(温度、打印进度等)
  • 列出打印机上的文件
  • 向打印机上传 G-code 文件
  • 开始、取消和监控打印作业
  • 设置打印机温度
  • 高级 STL 文件操作:
    • 延伸底座以获得更好的附着力
    • 沿特定轴均匀或非均匀缩放模型
    • 绕任何轴旋转模型
    • 移动(平移)模型
    • 修改 STL 文件的特定部分(顶部、底部、中心或自定义)
  • 全面的 STL 分析,提供详细的模型信息
  • 生成多角度的 STL 文件 SVG 可视化
  • 长时间操作的实时进度报告
  • 详细诊断的错误处理
  • 切片 STL 文件以生成 G-code
  • 确认 G-code 文件中的温度设置
  • 从 STL 修改到打印的完整端到端工作流程
  • 直接在 Bambu Lab 打印机上打印 .3mf 文件(通过 MQTT 命令)
  • 读取 Bambu Studio 预设文件(打印机、耗材、过程)作为资源

安装

前提条件

  • Node.js 18 或更高版本
  • npm 或 yarn

从 npm 安装

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 和 Docker Compose 在容器化环境中运行服务器。

  1. 确保已安装 Docker 和 Docker Compose。
  2. .env.example 复制为 .env 并配置您的设置。
  3. 构建并运行容器:
    docker-compose up --build -d
    

使用 Docker 的切片器

请注意,默认的 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_TYPEorcaslicer

由于切片器种类繁多(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=

与 Claude Desktop 的使用

  1. 编辑您的 Claude Desktop 配置文件:
{
  "mcpServers": {
    "3dprint": {
      "command": "mcp-3d-printer-server",
      "env": {
        "API_KEY": "your_api_key_here",
        "PRINTER_HOST": "your_printer_ip",
        "PRINTER_TYPE": "octoprint"
      }
    }
  }
}
  1. 对于 Bambu Labs 打印机:
{
  "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"
      }
    }
  }
}
  1. 重启 Claude Desktop
  2. 通过 Claude 连接到您的打印机

支持的打印机管理系统

OctoPrint

OctoPrint 是一个流行的 3D 打印机 Web 界面。它提供了用于控制打印机的 REST API。

  • 默认端口:80(http)或 443(https)
  • 认证:需要 API 密钥

Klipper(通过 Moonraker)

Klipper 是一种适用于 3D 打印机的固件,它与 Moonraker API 服务器一起工作。

  • 默认端口:7125
  • 认证:取决于您的 Moonraker 配置

Duet

Duet 是一种用于 3D 打印机的控制板,具有自己的 Web 界面(DuetWebControl)。

  • 默认端口:80(http)或 443(https)
  • 认证:取决于您的 Duet 配置

Repetier

Repetier-Server 是一种用于 3D 打印机的主机软件。

  • 默认端口:3344
  • 认证:需要 API 密钥

Bambu Labs

Bambu Lab 打印机使用 MQTT 进行状态和控制,并使用 FTP 进行文件操作。

  • 认证:需要打印机序列号和访问令牌(设置 BAMBU_SERIALBAMBU_TOKEN
  • 要求:打印机必须在同一网络上或启用云连接
  • 兼容:X1C、P1S、P1P、A1 和其他 Bambu Lab 打印机

查找您的 Bambu 打印机的序列号和访问令牌

要连接到您的 Bambu Lab 打印机,您需要两样东西:

  1. 打印机序列号

    • 查看打印机背面或底部的贴纸上的序列号(通常以“01P”或“01A”开头,后跟数字/字母)
    • 或者,打开 Bambu Studio,连接到您的打印机,转到设备 > 设备管理,查看您的打印机信息
  2. 访问令牌

    • 访问令牌是连接到您的打印机所需的密钥
    • 对于 P1 系列打印机:转到触摸屏,选择设置 > 网络 > LAN 模式,您将看到访问码
    • 对于 X1 系列打印机:转到触摸