3

3D打印管理器

@DMontgomery40/mcp-3D-printer-server
1 Stars 583 次浏览 DMontgomery40 更新于 2026-08-23

通过MCP服务器启用与3D打印机管理系统的交互,支持STL文件操作、切片以及对OctoPrint、Klipper、Duet等打印机的控制。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "3dprint": {
      "command": "mcp-3d-printer-server",
      "env": {
        "BAMBU_SERIAL": "your_printer_serial",
        "BAMBU_TOKEN": "your_access_token",
        "PRINTER_HOST": "your_printer_ip",
        "PRINTER_TYPE": "bambu"
      }
    }
  }
}

该服务需要配置环境变量:API_KEY、BAMBU_SERIAL、BAMBU_TOKEN、PRINTER_HOST、PRINTER_PORT、PRINTER_TYPE、SLICER_PATH、SLICER_PROFILE、SLICER_TYPE、TEMP_DIR

可用工具 (11 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

get_printer_status 6 个参数

Get the current status of the 3D printer

该工具无需必填参数,直接调用即可

extend_stl_base 2 个参数 需填 2 项

Extend the base of an STL file by a specified amount

必填参数:stl_path、extension_inches

slice_stl 4 个参数 需填 1 项

Slice an STL file to generate G-code

必填参数:stl_path

confirm_temperatures 3 个参数 需填 1 项

Confirm temperature settings in a G-code file

必填参数:gcode_path

process_and_print_stl 8 个参数 需填 2 项

Process an STL file (extend base), slice it, confirm temperatures, and start printing

必填参数:stl_path、extension_inches

get_stl_info 1 个参数 需填 1 项

Get detailed information about an STL file

必填参数:stl_path

scale_stl 5 个参数 需填 1 项

Scale an STL model uniformly or along specific axes

必填参数:stl_path

rotate_stl 4 个参数 需填 1 项

Rotate an STL model around specific axes

必填参数:stl_path

translate_stl 4 个参数 需填 1 项

Move an STL model along specific axes

必填参数:stl_path

modify_stl_section 12 个参数 需填 3 项

Apply a specific transformation to a selected section of an STL file

必填参数:stl_path、section、transformation_type

generate_stl_visualization 3 个参数 需填 1 项

Generate an SVG visualization of an STL file from multiple angles

必填参数:stl_path

服务介绍

MCP 3D 打印机服务器

npm 版本

TypeScript
维护状态
欢迎 PR
Node.js 版本
下载量
GitHub 星标

描述

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

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

这个服务器是一个 Model Context Protocol (MCP) 服务器,用于将 Claude 与 3D 打印机管理系统连接起来。它允许 Claude 通过各种打印机管理系统的 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 修改到打印的完整端到端工作流程

安装

前提条件

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

从 npm 安装

npm install -g mcp-3d-printer-server

从源代码安装

git clone https://github.com/yourusername/mcp-3d-printer-server.git
cd mcp-3d-printer-server
npm install
npm link  # Makes the command available globally

配置

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

# Required for authentication with your printer management system
API_KEY=your_api_key_here

# Default printer connection settings
PRINTER_HOST=localhost
PRINTER_PORT=80
PRINTER_TYPE=octoprint  # Options: octoprint, klipper, duet, repetier, bambu

# Optional: Directory for temporary files
TEMP_DIR=/path/to/temp/dir

# Bambu Labs specific configuration
BAMBU_SERIAL=your_printer_serial
BAMBU_TOKEN=your_access_token

# Slicer configuration
SLICER_TYPE=prusaslicer  # Options: prusaslicer, cura, slic3r
SLICER_PATH=/path/to/slicer/executable
SLICER_PROFILE=/path/to/slicer/profile

与 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 打印机网页界面。它提供了用于控制打印机的 REST API。

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

Klipper(通过 Moonraker)

Klipper 是一种与 Moonraker API 服务器配合使用的 3D 打印机固件。

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

Duet

Duet 是一种带有自己网页界面(DuetWebControl)的 3D 打印机控制板。

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

Repetier

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

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

Bambu Labs

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

  • 身份验证:需要序列号和访问令牌
  • 要求:打印机必须在同一个网络上,或已启用云连接
  • 兼容型号:X1C, P1S, P1P, A1 和其他 Bambu Lab 打印机

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

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

  1. 打印机序列号

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

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

注意:如果您的打印机不在同一本地网络上,或者找不到访问令牌,可能需要将打印机固件更新到最新版本以启用局域网模式。

Prusa Connect

Prusa Connect 是 Prusa 自己的基于云的解决方案,用于管理他们的打印机。

  • 默认端口:80 (http) 或 443 (https)
  • 身份验证:需要 API 密钥
  • 兼容型号:Prusa MK4, Prusa Mini, Prusa XL 以及其他带有 Prusa Connect 的 Prusa 打印机

设置 Prusa Connect

  1. 确保您的 Prusa 打印机已更新到最新固件
  2. 将打印机连接到 Wi-Fi 网络
  3. 创建一个 Prusa Connect 账户并注册您的打印机
  4. 从 Prusa Connect 网页界面下的设置 > API 访问生成 API 密钥

Creality Cloud

Creality Cloud 是 Creality 为其打印机提供的管理系统。

  • 默认端口:80(http)或 443(https)
  • 身份验证:需要 Bearer token
  • 兼容设备:Ender 系列、CR 系列以及其他具有网络功能的创想三维打印机

设置创想云

  1. 在您的移动设备上安装创想云应用程序
  2. 创建账户并添加您的打印机
  3. 为您的打印机启用本地网络访问
  4. 从创想云应用中生成一个 token,路径为设置 > 开发者选项

可用工具

STL 操作工具

内存使用警告:以下 STL 操作工具会将整个 3D 模型加载到内存中。对于大型或复杂的 STL 文件(>10MB),这些操作可能会消耗大量内存。在 MCP 环境中使用这些工具时,请注意内存限制。

get_stl_info

获取有关 STL 文件的详细信息,包括尺寸、顶点数和边界框。

{
  "stl_path": "/path/to/file.stl"
}

extend_stl_base

将 STL 文件的底座扩展指定的数量。

{
  "stl_path": "/path/to/file.stl",
  "extension_inches": 2
}

scale_stl

均匀缩放 STL 模型或沿特定轴缩放。

{
  "stl_path": "/path/to/file.stl",
  "scale_factor": 1.5
}

或者对于非均匀缩放:

{
  "stl_path": "/path/to/file.stl",
  "scale_x": 1.2,
  "scale_y": 1.0,
  "scale_z": 1.5
}

rotate_stl

围绕特定轴旋转 STL 模型(以度为单位)。

{
  "stl_path": "/path/to/file.stl",
  "rotate_x": 45,
  "rotate_y": 0,
  "rotate_z": 90
}

translate_stl

沿特定轴移动 STL 模型(以毫米为单位)。

{
  "stl_path": "/path/to/file.stl",
  "translate_x": 10,
  "translate_y": 5,
  "translate_z": 0
}

modify_stl_section

对 STL 文件的选定部分应用特定变换。这允许对模型的特定部分进行详细修改。

{
  "stl_path": "/path/to/file.stl",
  "section": "top",
  "transformation_type": "scale",
  "value_x": 1.5,
  "value_y": 1.5, 
  "value_z": 1.5
}

对于自定义截面范围:

{
  "stl_path": "/path/to/file.stl",
  "section": "custom",
  "transformation_type": "rotate",
  "value_x": 0,
  "value_y": 0, 
  "value_z": 45,
  "custom_min_x": -10,
  "custom_min_y": 0,
  "custom_min_z": -10,
  "custom_max_x": 10,
  "custom_max_y": 20,
  "custom_max_z": 10
}

generate_stl_visualization

从多个角度(正面、侧面、顶部和等距视图)生成 STL 文件的 SVG 可视化。

{
  "stl_path": "/path/to/file.stl",
  "width": 400,
  "height": 400
}

slice_stl

切片 STL 文件以生成 G-code。

{
  "stl_path": "/path/to/file.stl",
  "slicer_type": "prusaslicer",
  "slicer_path": "/path/to/prusaslicer",
  "slicer_profile": "/path/to/profile.ini"
}

confirm_temperatures

确认 G-code 文件中的温度设置。

{
  "gcode_path": "/path/to/file.gcode",
  "extruder_temp": 200,
  "bed_temp": 60
}

process_and_print_stl

处理 STL 文件(扩展底座)、切片、确认温度并开始打印。

{
  "stl_path": "/path/to/file.stl",
  "extension_inches": 2,
  "extruder_temp": 200,
  "bed_temp": 60,
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

打印机控制工具

get_printer_status

获取 3D 打印机的当前状态。

{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

对于 Bambu 打印机:

{
  "host": "192.168.1.100",
  "type": "bambu",
  "bambu_serial": "YOUR_PRINTER_SERIAL",
  "bambu_token": "YOUR_ACCESS_TOKEN"
}

list_printer_files

列出打印机上的可用文件。

{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

upload_gcode

上传 G-code 文件到打印机。

{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY",
  "filename": "my_print.gcode",
  "gcode": "G28\nG1 X100 Y100 Z10 F3000\n...",
  "print": true
}

start_print

开始打印已存在于打印机上的文件。

{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY",
  "filename": "my_print.gcode"
}

cancel_print

取消当前打印任务。

{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

set_printer_temperature

设置打印机组件的温度。

{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY",
  "component": "extruder",
  "temperature": 200
}

可用资源

  • printer://{host}/status - 3D 打印机的当前状态
  • printer://{host}/files - 3D 打印机上的文件列表
  • printer://{host}/file/{filename} - 3D 打印机上特定文件的内容

Claude 的示例命令

以下是一些连接 MCP 服务器后可以给 Claude 的示例命令:

打印机控制

  • "我的3D打印机当前状态如何?"
  • "显示我打印机上的文件列表。"
  • "将此G代码上传到我的打印机:[G-code内容]"
  • "开始打印名为'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 Lab 打印机限制

由于Bambu Lab打印机API的特性,存在一些限制:

  1. 开始打印:开始打印需要3MF项目文件路径、G代码文件名、打印名称和MD5哈希值。此服务器中的简化API尚不完全支持这些功能。

  2. 温度控制:Bambu API没有提供直接设置温度的方法。这需要自定义G代码命令。

  3. 文件管理:文件必须上传到打印机上的"gcodes"目录。

限制和注意事项

内存使用

  • 大型STL文件:处理大型或复杂的STL文件可能会消耗大量内存。在操作过程中,整个STL几何体将被加载到内存中。
  • 多个操作:连续执行多个STL操作(尤其是在大文件上)可能导致内存累积,如果垃圾回收跟不上的话。
  • MCP环境:由于这是作为MCP服务器运行,请注意Claude的MCP环境有内存限制。对非常大的STL文件进行复杂操作可能会导致内存不足问题。

STL操作限制

  • 特定部分修改:特定部分修改功能在较简单的几何形状上效果最佳。复杂的或非流形网格可能会产生意外结果。
  • 底座延长:底座延长算法通过在模型下方添加新的几何体来实现。对于底部复杂的模型,结果可能不够完美。
  • 错误处理:尽管我们已经增加了健壮的错误处理,但某些复杂STL文件的边缘情况仍可能导致问题。

可视化限制

  • SVG 表示:SVG 可视化是一个简化的示意图表示,不是真正的3D渲染。
  • 复杂模型:对于非常复杂的模型,可视化可能无法准确表示所有细节。

性能考虑

  • 切片操作:外部切片过程可能会占用大量 CPU 资源,并且对于复杂模型可能需要相当长的时间。
  • 进度报告:对于大文件,在某些处理阶段,进度更新可能看起来停滞不前。

测试建议

  • 从较小的 STL 文件(< 10MB)开始测试功能
  • 处理大文件时监控内存使用情况
  • 在尝试复杂几何体之前,先在简单几何体上测试修改
  • 对于较大的操作,建议在至少有 4GB 可用 RAM 的系统上运行

徽章

徽章 描述
npm version npm 上当前包的版本
该项目采用 GPL-2.0 许可证
TypeScript 该项目使用 TypeScript 4.9+ 编写
Maintenance 该项目正在积极维护中
PRs Welcome 我们欢迎通过 Pull Requests 进行贡献
Node.js Version 需要 Node.js 18.0.0 或更高版本
Downloads 每月从 npm 下载的数量
GitHub stars 该项目收到的 GitHub 星星数量

许可证

GPL-2.0

相关 MCP 服务