MCP 3D Printer Server

MCP 3D Printer Server

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

操作系统自动化
开发者工具
虚拟化
访问服务器

Tools

scale_stl

Scale an STL model uniformly or along specific axes

rotate_stl

Rotate an STL model around specific axes

translate_stl

Move an STL model along specific axes

modify_stl_section

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

generate_stl_visualization

Generate an SVG visualization of an STL file from multiple angles

get_printer_status

Get the current status of the 3D printer

extend_stl_base

Extend the base of an STL file by a specified amount

slice_stl

Slice an STL file to generate G-code

confirm_temperatures

Confirm temperature settings in a G-code file

process_and_print_stl

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

get_stl_info

Get detailed information about an STL file

README

MCP 3D 打印机服务器

npm version License: GPL-2.0 TypeScript Maintenance PRs Welcome Node.js Version Downloads GitHub stars

<a href="https://glama.ai/mcp/servers/7f6v2enbgk"> <img width="380" height="200" src="https://glama.ai/mcp/servers/7f6v2enbgk/badge" alt="3D Printer Server MCP server" /> </a>

描述

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

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

此服务器是一个模型上下文协议 (MCP) 服务器,用于将 Claude 与 3D 打印机管理系统连接。它允许 Claude 通过各种打印机管理系统(如 OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier 和 Bambu Labs 打印机)的 API 与 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 打印机 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 进行文件操作。

  • 身份验证:需要序列号和访问令牌
  • 要求:打印机必须在同一网络上或启用云连接
  • 兼容: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 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 - 3D 打印机上可用的文件列表
  • printer://{host}/file/{filename} - 3D 打印机上特定文件的内容

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 模型向上移动 5 毫米以在下方创建一个间隙。"
  • "你能否修改此模型的顶部,使其放大 20%?"
  • "分析此 STL 文件并告诉我它的尺寸和详细信息。"
  • "生成此 STL 文件的可视化,以便我可以查看它的外观。"
  • "从不同角度创建我的模型 SVG 可视化。"
  • "使此模型的底座更宽,而不改变其高度。"
  • "使用 PrusaSlicer 切片修改后的 STL 文件。"
  • "确认 G 代码中的温度对于挤出机为 200°C,对于热床为 60°C。"
  • "处理此 STL 文件,使底座长 2 英寸,对其进行切片,然后开始打印,但首先确认温度。"

Bambu Lab 打印机限制

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

  1. 开始打印:开始打印需要 3MF 项目文件路径、gcode 文件名、打印名称和 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 上软件包的当前版本
License: GPL-2.0 此项目已获得 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

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript