返回市场
德蒙哥马利40_mcp-3D打印机服务器

德蒙哥马利40_mcp-3D打印机服务器

作者:MCP-Mirror13 星标更新:2025-05-14

项目介绍

MCP 3D打印机服务器

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

<a href="https://glama.ai/mcp/servers/7f6v2enbgk"> <img width="380" height="200" src="https://gips2.baidu.com/it/u=2214982748,2807222626&fm=3081&app=3081&f=PNG?w=760&h=400" alt="3D 打印机服务器 MCP 服务器" /> </a>

描述

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

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

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

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

功能

  • 获取打印机状态(温度、打印进度等)
  • 列出打印机上的文件
  • 将G代码文件上传到打印机
  • 开始、取消和监控打印作业
  • 设置打印机温度
  • 高级STL文件操作:
    • 延伸底座以获得更好的粘附性
    • 沿特定轴均匀或非均匀缩放模型
    • 绕任何轴旋转模型
    • 移动(平移)模型
    • 修改STL文件的特定部分(顶部、底部、中心或自定义)
  • 全面的STL分析,提供详细的模型信息
  • 生成多角度的STL文件SVG可视化图
  • 长时间操作的实时进度报告
  • 错误处理及详细诊断
  • 切片STL文件以生成G代码
  • 确认G代码文件中的温度设置
  • 完整的工作流程,从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  # 使命令全局可用

配置

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

# 用于与您的打印机管理系统进行身份验证
API_KEY=your_api_key_here

# 默认打印机连接设置
PRINTER_HOST=localhost
PRINTER_PORT=80
PRINTER_TYPE=octoprint  # 选项:octoprint, klipper, duet, repetier, bambu

# 可选:临时文件目录
TEMP_DIR=/path/to/temp/dir

# Bambu Labs特定配置
BAMBU_SERIAL=your_printer_serial
BAMBU_TOKEN=your_access_token

# 切片器配置
SLICER_TYPE=prusaslicer  # 选项: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是一款适用于3D打印机的固件,与Moonraker API服务器一起工作。

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

Duet

Duet是3D打印机的控制板,有自己的网络界面(DuetWebControl)。

  • 默认端口: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系列打印机:进入触摸屏,选择设置 > 网络 > LAN模式,您会看到访问代码
    • 对于X1系列打印机:进入触摸屏,选择设置 > 网络 > LAN模式,启用LAN模式以查看访问代码
    • 对于A1 Mini:使用Bambu Handy应用程序连接到您的打印机,然后转到设置 > 网络 > LAN模式

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

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 Web界面的设置 > API访问中生成一个API密钥

Creality Cloud

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

  • 默认端口:80(http)或443(https)
  • 身份验证:需要Bearer令牌
  • 兼容:Ender系列、CR系列及其他具有网络功能的Creality打印机

设置Creality Cloud

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

可用工具

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代码。

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

confirm_temperatures

确认G代码文件中的温度设置。

{
  "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代码文件上传到打印机。

{
  "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 - 打印机上可用的文件列表
  • printer://{host}/file/{filename} - 打印机上特定文件的内容

示例命令给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模型向上移动5mm以在其下方创建间隙。”
  • “你能修改这个模型的顶部部分使其增大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不提供直接设置