首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
3D打印管理器2026-10-23672分享添加福利群:解决AI开发者的「MCP实战痛点」
通过MCP服务器启用与3D打印机管理系统的交互,支持STL文件操作、切片以及对OctoPrint、Klipper、Duet等打印机的控制。
By DMontgomery40
2026-10-23672
github
详情内容

MCP 3D 打印机服务器

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

3D 打印机服务器 MCP 服务器
✨ 最新更新 / 重要更新(截至上次会话)
  • Bambu .3mf 打印: 添加了专门用于 Bambu Lab 打印机的 print_3mf 工具。该工具上传 .3mf 文件并通过 MQTT 直接发送打印命令,基于 OpenBambuAPI 规范。
  • 直接 MQTT 通信(Bambu): 重构了 Bambu 命令处理(print_3mf、cancelJob),以使用直接 MQTT(TLS 端口 8883),而不是仅依赖 bambu-js 发送命令。
  • .3mf 文件解析: 实现了解析器(src/3mf_parser.ts),用于读取 .3mf 文件中的元数据和 Bambu 特定的切片器设置(来自 project_settings.config)。
  • Bambu 预设资源: 添加了对读取 Bambu Studio 预设文件(machine、filament、process)作为 MCP 资源的支持(例如,preset://bambu/process/MyPreset),前提是设置了 BAMBU_STUDIO_CONFIG_PATH。
  • OrcaSlicer 集成: 添加了通过 OrcaSlicer 命令行界面使用 slice_stl 工具的支持。
  • 新的 STL 操作工具: 添加了 merge_vertices、center_model 和 lay_flat 工具,用于使用 three.js 进行基本的模型准备。
  • 配置更新: 添加了 BAMBU_STUDIO_CONFIG_PATH 环境变量,用于加载预设。
  • FTP 使用说明: 在文档中承认,Bambu 的文件操作目前使用可能不安全的 FTP,通过 bambu-js 实现。
🗺️ 路线图 / 待办事项
  • 实现功能对等: 将 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 文件操作: 研究是否可以用直接 MQTT 方法替换 bambu-js 的 FTP 操作(getFiles、uploadFile),如果可能/稳定,或者为 bambu-js 贡献 FTPS 支持。
  • 添加预设发现逻辑: 改进预设资源列表(当前基于潜在文件名列出,如果存在索引文件,可以解析索引文件)。
  • 扩展 .3mf 支持: 在其他适用的打印机类型中添加 .3mf 打印支持。
  • 错误处理与报告: 增强 MQTT 错误处理和打印进度/完成报告。
  • 测试: 对所有新的 Bambu 功能进行全面的运行时测试。
点击展开目录

目录

描述

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

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

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

资源使用说明:此 MCP 服务器包含高级的 3D 模型操作功能,在处理大型 STL 文件时可能会占用大量内存。请参阅“限制与注意事项”部分,了解有关内存使用和性能的重要信息。

功能

  • 获取打印机状态(温度、打印进度等)
  • 列出打印机上的文件
  • 上传 G-code 文件到打印机
  • 启动、取消和监控打印任务
  • 设置打印机温度
  • 高级 STL 文件操作:
    • 扩展底座以增强附着力
    • 沿特定轴缩放模型
    • 绕任意轴旋转模型
    • 平移(移动)模型
    • 修改 STL 文件的特定部分(顶部、底部、中心或自定义部分)
  • 全面的 STL 分析,提供详细的模型信息
  • 生成多角度 SVG 可视化 STL 文件
  • 实时进度报告,适用于长时间操作
  • 错误处理,提供详细的诊断信息
  • 切片 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_TYPE 设置为 orcaslicer。

很抱歉没有默认包含特定的切片器,但鉴于可用的切片器种类繁多(PrusaSlicer、OrcaSlicer、Cura 等)以及可用的配置,预安装一个切片器会不必要地增加镜像的体积。如果某个切片器成为非常常见的需求,我肯定会在未来的版本中考虑添加官方支持。

配置

在您将运行服务器的目录中创建一个 .env 文件,或设置环境变量:

# 与打印机管理系统进行身份验证所需的
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_SERIAL 和 BAMBU_TOKEN)
  • 要求:打印机必须在同一网络或启用云连接
  • 兼容:X1C、P1S、P1P、A1 和其他 Bambu Lab 打印机

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

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

  1. 打印机序列号:

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

    • 访问令牌是直接连接到您的打印机所需的安全代码
    • 对于 P1 系列打印机:转到触摸屏,选择设置 > 网络 > LAN 模式,您将看到访问代码
    • 对于 X1 系列打印机:转到触摸屏,选择设置 > 网络 > LAN 模式,并启用 LAN 模式以查看访问代码
    • 对于 A1 Mini:使用 Bambu Handy 应用程序连接到您的打印机,然后转到设置 > 网络 > LAN 模式

注意:如果您的打印机不在同一本地网络或您找不到访问令牌,您可能需要将打印

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档