3D打印机服务器

MCP 3D打印机服务器是一个用于连接和管理多种3D打印机系统的服务,支持OctoPrint、Klipper、Duet、Repetier、Bambu Labs等打印机,提供文件管理、打印控制、STL文件处理和切片功能。

作者 By DMontgomery40
本地部署 3D打印 打印机管理
GitHub

MCP 3D打印机服务器

3D Printer Server MCP server

✨ What’s New / Significant Updates (as of last session)

  • 双重本地交通: 添加了显式 stdiostreamable-http 具有基于环境的传输选择的运行时模式。
  • Bambu可靠性合格证: 修复了Bambu参数连接错误,添加了FTP支持的文件操作,改进了状态刷新行为,并实现了实用的命令路径 startJob, setTemperature,以及 print_3mf.
  • 搅拌机桥架工具: 添加 blender_mcp_edit_model 具有模型编辑协作工作流的可选执行模式。
  • 运输行为测试: 为两种传输方式添加了真实行为测试(initialize, tools/list成功+失败 tools/call,原产地拒绝)。
  • Docker现代化: 更新了Docker构建流,使其在没有BuildKit特定功能的情况下工作,并在容器烟雾测试中验证了可流式HTTP初始化。

🗺️ Roadmap / TODO

  • 实现特征奇偶校验: 将OctoPrint、Klipper、Duet、Repetier、Prusa Connect和Creality Cloud的功能(状态详细信息、文件操作、可能的直接打印、预设处理)提升到Bambu实施计划的健壮性水平。
  • 实现完整的Bambu MQTT状态: 重构 getStatus Bambu订阅MQTT报告并维护实时状态。
  • 实施稳健的AMS映射: 替换占位符逻辑;正确解析和使用来自的AMS映射 .3mf MQTT打印命令的slicer配置或用户覆盖。
  • 实施 .3mf 打印替换: 添加逻辑 print_3mf 该工具用于处理用户提供的覆盖(例如校准标志)以及可能通过MQTT/g代码进行的常见切片器设置(如果可行)。
  • 计算MD5哈希: 添加逻辑来计算并包含MD5哈希值 .3mf MQTT打印命令中的文件(可选,但协议建议)。
  • 重构Bambu文件操作: 调查更换 bambu-js FTP操作(getFiles, uploadFile)如果可能/稳定,使用直接MQTT方法,或为FTPS提供支持 bambu-js.
  • 添加预设发现逻辑: 改进预设资源列表(目前基于潜在文件名的列表,如果存在索引文件,可以解析索引文件)。
  • 扩展 .3mf 技术支持: 添加 .3mf 在适用的情况下,支持其他打印机类型的打印。
  • 错误处理和报告: 增强MQTT错误处理和打印进度/完成报告。
  • 测试: 对所有新的Bambu功能进行彻底的运行时测试。

Click to expand Table of Contents

目录

  • 描述

  • 特性

  • 安装

  • 先决条件

  • 从npm安装

  • 从源码安装

  • 使用Docker运行

  • 在Docker中使用切片器

  • 配置

  • 用法

  • 支持的打印机管理系统

  • OctoPrint

  • Klipper (通过 Moonraker)

  • 二重奏

  • 废除

  • 班布实验室

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

  • Bambu通信说明(MQTT和FTP)

  • Prusa Connect

  • 设置Prusa Connect

  • Creality云

  • 建立Creality云

  • 可用工具

  • STL操作工具

  • 打印机控制工具

  • Bambu专用工具

  • 可用资源

  • 打印机资源

  • Bambu预设资源

  • LLM命令示例

  • Bambu实验室打印机限制

  • 限制和注意事项

  • 内存使用

  • STL操作限制

  • 可视化限制

  • 性能注意事项

  • 测试建议

  • 附录:MCP安全注意事项

  • 徽章

  • 许可证

描述

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

  • OctoPrint
  • 克利珀(Moonraker)
  • 二重奏
  • 废除
  • 班布实验室
  • Prusa Connect
  • Creality/Ender

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

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

特性

  • 获取打印机状态(温度、打印进度等)

  • 列出打印机上的文件

  • 将G代码文件上传到打印机

  • 启动、取消和监视打印作业

  • 设置打印机温度

  • 高级STL文件操作:

  • 延长底座以获得更好的附着力

  • 均匀缩放模型或沿特定轴缩放模型

  • 围绕任意轴旋转模型

  • 翻译(移动)模型

  • 修改STL文件的特定部分(顶部、底部、中心或自定义)

  • 具有详细模型信息的全面STL分析

  • 生成STL文件的多角度SVG可视化

  • 长时间操作的实时进度报告

  • 使用详细诊断进行错误处理

  • 切片STL文件以生成G代码

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

  • 从STL修改到打印的完整端到端工作流程

  • 打印 .3mf 直接在Bambu Lab打印机上的文件(通过MQTT命令)

  • 读取Bambu Studio预设文件(打印机、灯丝、工艺)作为资源

安装

先决条件

  • Node.js 18或更高版本
  • npm或纱线

从npm安装

BASH``` 1npm install -g mcp-3d-printer-server


### 从源码安装


BASH```
1
2
3
4git clone https://github.com/dmontgomery40/mcp-3d-printer-server.git
cd mcp-3d-printer-server
npm install
npm link  # Makes the command available globally

使用Docker运行

您还可以使用Docker和Docker Compose在容器化环境中运行服务器。

  1. 确保你已经安装了Docker和Docker Compose。
  2. 复制 .env.example.env 并配置您的设置。
  3. 构建并运行容器:

BASH``` 1docker-compose up —build -d



#### 在Docker中使用切片器


请注意,默认的Docker设置 **无法直接使用安装在主机上的切片机**。由于主机和容器之间的操作系统和库差异,将切片器可执行文件直接从主机安装到容器中是不可靠的。


建议的方法是 **安装您喜欢的切片机 *里面* Docker镜像**这使得容器自给自足。


为此,您需要修改 `Dockerfile`。以下是一个概念性示例,说明如何添加PrusaSlicer或OrcaSlicer(具体命令可能因切片器、其依赖关系和当前Alpine软件包而异):


DOCKERFILE```
1
2
3
4
5
6
7
8
9
10
11# ... other Dockerfile commands ...
# Example: Install PrusaSlicer or OrcaSlicer (adjust command as needed)
# Check Alpine package repositories first (e.g., apk add prusaslicer or apk add orcaslicer)
# If not available, download and install manually (e.g., AppImage):
# RUN apk add --no-cache fuse # FUSE might be needed for AppImages
# RUN wget https://example.com/path/to/OrcaSlicer_Linux_Vxxxx.AppImage -O /usr/local/bin/orcaslicer && \
#     chmod +x /usr/local/bin/orcaslicer
# Set the SLICER_PATH env var accordingly in docker-compose.yml or when running
# Example for installed executable:
ENV SLICER_PATH=/usr/local/bin/orcaslicer 
# ... rest of Dockerfile ...

修改后 Dockerfile,重建您的图像(docker-compose build).您还需要确保 SLICER_PATH 您的环境变量 .env 文件或 docker-compose.yml 指向正确的路径 集装箱内 (例如。, /usr/local/bin/orcaslicer).集 SLICER_TYPEorcaslicer 也。

很抱歉没有提供开箱即用的特定切片器,但鉴于切片器(PrusaSlicer、OrcaSlicer、Cura等)和配置的多样性,预安装一个切片器会不必要地使许多用户的图像膨胀。如果某个特定的切片器成为一个非常常见的请求,我当然可以考虑在未来的版本中为其添加官方支持。

配置

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

ENV``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33# Required for authentication with your printer management system API_KEY=your_api_key_here

Default printer connection settings

PRINTER_HOST=localhost PRINTER_PORT=80 # Port for non-Bambu HTTP APIs PRINTER_TYPE=octoprint # Options: octoprint, klipper, duet, repetier, bambu, prusa, creality

Optional: Directory for temporary files

TEMP_DIR=/path/to/temp/dir

Bambu Labs specific configuration

BAMBU_SERIAL=your_printer_serial # REQUIRED for Bambu BAMBU_TOKEN=your_access_token # REQUIRED for Bambu BAMBU_MODEL=p1s # REQUIRED for Bambu: p1s, p1p, x1c, x1e, a1, a1mini, h2d BED_TYPE=textured_plate # Bed plate: textured_plate, cool_plate, engineering_plate, hot_plate NOZZLE_DIAMETER=0.4 # Nozzle diameter in mm (default: 0.4)

Slicer configuration (for slice_stl tool)

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

Optional: Path to Bambu Studio user config dir (for loading presets)

Example macOS: /Users/your_user/Library/Application Support/BambuStudio/user/YOUR_USER_ID

Example Windows: C:\Users\your_user\AppData\Roaming\BambuStudio\user\YOUR_USER_ID

Example Linux: /home/your_user/.config/BambuStudio/user/YOUR_USER_ID

BAMBU_STUDIO_CONFIG_PATH=

MCP transport configuration

MCP_TRANSPORT=stdio # Options: stdio, streamable-http MCP_HTTP_HOST=127.0.0.1 MCP_HTTP_PORT=3000 MCP_HTTP_PATH=/mcp MCP_HTTP_STATEFUL=true MCP_HTTP_JSON_RESPONSE=true MCP_HTTP_ALLOWED_ORIGINS=http://localhost

Optional bridge command for blender_mcp_edit_model execute=true mode

BLENDER_MCP_BRIDGE_COMMAND=


## 用法


将此服务器添加到MCP客户端的配置中(Claude Desktop、Claude Code、Cursor、Codex CLI或任何与MCP兼容的客户端)。配置格式在任何地方都是一样的—— `mcpServers` 使用命令和env变量输入:


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
  "mcpServers": {
    "3dprint": {
      "command": "npx",
      "args": ["-y", "mcp-3d-printer-server"],
      "env": {
        "PRINTER_HOST": "your_printer_ip",
        "PRINTER_TYPE": "bambu",
        "BAMBU_SERIAL": "your_printer_serial",
        "BAMBU_TOKEN": "your_access_token",
        "BAMBU_MODEL": "p1s",
        "SLICER_TYPE": "bambustudio",
        "SLICER_PATH": "/Applications/BambuStudio.app/Contents/MacOS/BambuStudio"
      }
    }
  }
}

对于非Bambu打印机,将Bambu特定的环境变量替换为 API_KEY 以及适当的 PRINTER_TYPE (参见 支持的打印机管理系统).

此配置的位置取决于您的客户端:

客户端配置位置
克劳德桌面(macOS)~/Library/Application Support/Claude/claude_desktop_config.json
克劳德桌面(Windows)%APPDATA%\Claude\claude_desktop_config.json
克劳德代码(项目).mcp.json 在项目根中
克劳德代码(全球)~/.claude/settings.json
光标偏好中的光标MCP设置
Codex CLI根据Codex文档配置MCP

编辑配置后重新启动客户端。

推荐:与codemode mcp一起使用

对于任何具有大型工具表面的MCP服务器,将其包裹在后面 编码模式mcp 大大减少了令牌的使用。codemode允许代理针对双工具接口编写代码,而不是将每个工具定义都暴露给模型(search()execute()),只按需加载所需的工具。

Anthropic和Cloudflare独立证明了这种模式可以将MCP代币成本降低高达98%:

这适用于所有MCP服务器,而不仅仅是这台。

支持的打印机管理系统

OctoPrint

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

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

Klipper (通过 Moonraker)

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

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

二重奏

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

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

废除

Repetier Server是3D打印机的主机软件。

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

班布实验室

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

  • 身份验证:需要序列号和访问令牌(设置 BAMBU_SERIALBAMBU_TOKEN)
  • 打印机型号: 必需 (套 BAMBU_MODEL).有效值: p1s, p1p, x1c, x1e, a1, a1mini, h2d。这可确保切片器为您的特定打印机生成正确的G代码。
  • 要求:打印机必须在启用开发人员模式和仅局域网模式的同一网络上
  • 兼容:X1C、X1E、P1S、P1P、A1、A1 Mini、H2D

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

要连接到Bambu Lab打印机,您需要两件事:

  1. 打印机序列号:
  • 在打印机的背面或底部寻找带有序列号的贴纸(通常以“01P”或“01A”开头,后跟数字/字母)
  • 或者,打开Bambu Studio,连接到打印机,转到设备>设备管理,查看打印机信息
  1. 访问令牌:
  • 访问令牌是直接连接到打印机所需的安全码
  • 对于P1系列打印机:转到触摸屏,选择设置>网络>局域网模式,您将看到访问代码
  • 对于X1系列打印机:转到触摸屏,选择设置>网络>局域网模式,然后启用局域网模式以查看访问代码
  • 对于A1 Mini:使用Bambu Handy应用程序连接到打印机,然后转到“设置”>“网络”>“局域网模式”

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

Bambu通信说明(MQTT和FTP)

  • MQTT: 该服务器使用基于社区发现(例如。, OpenBambuAPI)发送启动打印和取消作业等命令。
  • FTP: 文件列表和上传目前依赖于打印机上运行的FTP服务器(通过 bambu-js 图书馆助手)。 注: 此FTP连接可能是 不安全(普通FTP) 基于当前图书馆的限制。使用时要注意网络安全。

Prusa Connect

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

  • 默认端口:80(http)或443(https)
  • 身份验证:需要API密钥
  • 兼容:普鲁萨MK4、普鲁萨Mini、普鲁萨XL和其他带普鲁萨连接的普鲁萨打印机

设置Prusa Connect

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

Creality云

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

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

建立Creality云

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

可用工具

Click to expand STL Manipulation Tools

STL操作工具

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

get_sl_info

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

JSON``` 1 2 3{ “stl_path”: “/path/to/file.stl” }


#### extend_stl-base


将STL文件的基础扩展指定的量。


JSON```
1
2
3
4{
  "stl_path": "/path/to/file.stl",
  "extension_inches": 2
}

scale_tl

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

JSON``` 1 2 3 4{ “stl_path”: “/path/to/file.stl”, “scale_factor”: 1.5 }


或者对于非均匀缩放:


JSON```
1
2
3
4
5
6{
  "stl_path": "/path/to/file.stl",
  "scale_x": 1.2,
  "scale_y": 1.0,
  "scale_z": 1.5
}

rotate_stl

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

JSON``` 1 2 3 4 5 6{ “stl_path”: “/path/to/file.stl”, “rotate_x”: 45, “rotate_y”: 0, “rotate_z”: 90 }


#### translate_stl


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


JSON```
1
2
3
4
5
6{
  "stl_path": "/path/to/file.stl",
  "translate_x": 10,
  "translate_y": 5,
  "translate_z": 0
}

合并_权限

合并比指定公差更近的顶点。有助于缩小小间隙,并可以略微简化网格。

JSON``` 1 2 3 4{ “stl_path”: “/path/to/model.stl”, “tolerance”: 0.01 // Optional, default = 0.01mm }


#### 中心模型


平移模型,使其边界框的中心位于世界原点(0,0,0)。


JSON```
1
2
3{
  "stl_path": "/path/to/model.stl"
}

lay_flat

尝试识别模型的最大平面(尚未直接朝上或朝下),并旋转模型,使该面在XY平面(Z=0)上朝下。可用于调整打印模型的方向。

JSON``` 1 2 3{ “stl_path”: “/path/to/model.stl” }


#### modify_sl_部分


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


JSON```
1
2
3
4
5
6
7
8{
  "stl_path": "/path/to/file.stl",
  "section": "top",
  "transformation_type": "scale",
  "value_x": 1.5,
  "value_y": 1.5, 
  "value_z": 1.5
}

对于自定义截面边界:

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14{ “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_可视化


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


JSON```
1
2
3
4
5{
  "stl_path": "/path/to/file.stl",
  "width": 400,
  "height": 400
}

slice_str

切片STL文件以生成G代码。

JSON``` 1 2 3 4 5 6{ “stl_path”: “/path/to/file.stl”, “slicer_type”: “prusaslicer”, “slicer_path”: “/path/to/prusaslicer”, “slicer_profile”: “/path/to/profile.ini” }


#### 确认温度


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


JSON```
1
2
3
4
5{
  "gcode_path": "/path/to/file.gcode",
  "extruder_temp": 200,
  "bed_temp": 60
}

process_and_print_str

处理STL文件(扩展库),对其进行切片,确认温度,然后开始打印。

JSON``` 1 2 3 4 5 6 7 8 9{ “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” }


**注:** 自动定位以实现最佳打印(最小化支持等)是一项复杂的任务,通常由切片器GUI(如OrcaSlicer或PrusaSlicer)处理,并且不在此服务器中实现。




Click to expand Printer Control Tools
### 打印机控制工具


#### get_inter_status


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


JSON```
1
2
3
4
5{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

对于Bambu打印机,这目前仅确认MQTT连接。

list_pinter_files

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

JSON``` 1 2 3 4 5{ “host”: “192.168.1.100”, “type”: “octoprint”, “api_key”: “YOUR_API_KEY” }


对于Bambu打印机,列出 `gcodes` 通过FTP访问目录。


#### G代码


将G代码文件上传到打印机。


JSON```
1
2
3
4
5
6
7
8{
  "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
}

对于Bambu打印机,上传到 gcodes 通过FTP访问目录。无法自动开始打印。

start_print

开始打印打印机上已有的文件。

JSON``` 1 2 3 4 5 6{ “host”: “192.168.1.100”, “type”: “octoprint”, “api_key”: “YOUR_API_KEY”, “filename”: “my_print.gcode” }


**不建议用于Bambu打印机。** 使用 `print_3mf` Bambu `.3mf` 文件夹。


#### cancel_print


取消当前打印作业。


JSON```
1
2
3
4
5{
  "host": "192.168.1.100",
  "type": "octoprint",
  "api_key": "YOUR_API_KEY"
}

对于Bambu打印机,发送 stop_print 通过MQTT执行命令。

set_pinter_温度

设置打印机组件的温度。

JSON``` 1 2 3 4 5 6 7{ “host”: “192.168.1.100”, “type”: “octoprint”, “api_key”: “YOUR_API_KEY”, “component”: “extruder”, “temperature”: 200 }


**Bambu打印机不支持** 通过直接MQTT命令。




Click to expand Bambu-Specific Tools
### Bambu专用工具


#### 打印3mf


上传a `.3mf` 通过FTP将文件发送到Bambu打印机,并通过MQTT命令启动打印作业。允许覆盖某些打印参数,如AMS映射。


**`bambu_model` 是必需的** --它确保切片器为正确的打印机生成G代码。使用错误的型号可能会导致床撞到喷嘴并损坏打印机。如果工具调用中没有提供 `BAMBU_MODEL` 如果未在环境中设置,服务器将通过MCP引导交互式询问(如果您的客户端支持)或返回明确的错误。


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14{
  "three_mf_path": "/path/to/your_model.3mf",
  "bambu_model": "p1s",
  "bed_type": "textured_plate",
  "host": "your_bambu_ip",
  "bambu_serial": "YOUR_SERIAL",
  "bambu_token": "YOUR_TOKEN",
  "use_ams": true,
  "ams_mapping": [0, 1, 2, 3],
  "bed_leveling": true,
  "flow_calibration": false,
  "vibration_calibration": false,
  "timelapse": false
}

注: 打印机的MQTT命令不支持通过此工具覆盖切片器设置,如层高或温度。在生成之前应用这些更改 .3mf 文件。

可用资源

Click to expand Printer Resources

打印机资源

  • printer://{host}/status -3D打印机的当前状态(目前仅限于Bambu)
  • printer://{host}/files -3D打印机上可用的文件列表(Bambu的FTP)
  • printer://{host}/file/{filename} -特定G代码文件的内容(仅检查Bambu是否存在)

Click to expand Bambu Preset Resources

Bambu预设资源

如果 BAMBU_STUDIO_CONFIG_PATH 环境变量设置为Bambu Studio用户设置目录,您可以读取保存的预设。

  • preset://bambu/machine/{preset_name} -读取机器预设文件(例如。, Bambu Lab P1S 0.4 nozzle.json)
  • preset://bambu/filament/{preset_name} -读取灯丝预设文件(例如。, Generic PLA.json)
  • preset://bambu/process/{preset_name} -读取进程预设文件(例如。, 0.20mm Standard @BBL P1S.json)

示例用法: “阅读我的Bambu工艺预设内容,名为‘0.16mm Optimal@BBL P1S’” (克劳德将调用ReadResource preset://bambu/process/0.16mm%20Optimal%20%40BBL%20P1S)

Claude的命令示例

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

打印机控制

  • “我的3D打印机的当前状态如何?”
  • “显示打印机上的文件列表。”
  • “将此G代码上传到我的打印机:[G代码内容]”
  • “开始打印名为’benchy.gcode’的文件。”
  • “取消当前打印作业。”
  • “将挤出机温度设置为200°C。”
  • “将床温设置为60°C。”

STL操作和打印

  • “取这个STL文件,将底部扩展2英寸,然后发送到切片机,在我的打印机中排队。”
  • “将model.stl的底部延长1.5英寸。”
  • “将此STL文件均匀缩放150%。”
  • “缩放模型.stl,使其宽度增加一倍,但高度保持不变。”
  • “将此模型绕Z轴旋转90度。”
  • “将此STL模型向上移动5mm,在下面创建一个间隙。”
  • “你能只修改这个模型的顶部,使其大20%吗?”
  • “分析这个STL文件,告诉我它的尺寸和细节。”
  • “生成这个STL文件的可视化,这样我就可以看到它的样子。”
  • “从不同角度创建我的模型的SVG可视化。”
  • “在不改变高度的情况下,将此模型的底座加宽。”
  • “使用PrusaSlicer对修改后的STL文件进行切片。”
  • “确认G代码中挤出机的温度为200°C,床层的温度为60°C。”
  • 处理这个STL文件,将底座加长2英寸,将其切片,然后开始打印,但要先确认温度
  • “打印 ~/Downloads/my_model.3mf 在Bambu打印机上。”
  • “上传 ~/Desktop/calibration_cube.3mf 使用AMS插槽0和2连接到Bambu打印机,并关闭床身调平功能。”
  • “取消我的Bambu P1S上的打印作业。”
  • “我的Bambu灯丝预设‘通用PETG’中的设置是什么?”
  • “显示我的Bambu流程预设。”

Bambu实验室打印机限制

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

  1. 可打印3MF要求: print_3mf 需要切片3MF,其中至少包含一个 Metadata/plate_<n>.gcode 这样服务器就可以计算MD5并正确启动作业。
  2. AMS行为警告: 当前 bambu-js 项目文件命令路径始终发送 use_ams=true;通过 use_ams=false 被视为尽最大努力,并附有警告。
  3. 温度控制路径: 通过G代码命令调度实现温度更新(M104/M140)通过MQTT,因此有效的行为仍然取决于打印机固件接受度和当前打印机状态。
  4. 文件传输通道: 文件操作使用Bambu的FTPS路径(端口990),通过 bambu-js。这比普通FTP更安全,但仍然假定受信任的本地网络环境和库管理的TLS行为。
  5. 直接启动路径范围: startJob 当前目标 .gcode 打印机存储中的文件; .3mf 作业应通过以下方式启动 print_3mf 因此,元数据和车牌选择得到了处理。
  6. 状态一致性: 状态显示强制a pushall 尽可能刷新,但所有Bambu模型的完整实时事件流状态语义仍需要更深入的强化。

限制和注意事项

内存使用

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

STL操作限制

  • 章节修改:特定于截面的修改功能在更简单的几何形状上效果最佳。复杂或非流形网格可能会产生意想不到的结果。
  • 基础扩展:基础扩展算法通过在模型下方添加新的几何体来工作。对于具有复杂底面的模型,结果可能并不完美。
  • 错误处理:虽然我们添加了强大的错误处理,但复杂STL文件中的一些边缘情况仍可能导致问题。

可视化限制

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

性能注意事项

  • 切片操作:外部切片器进程可能是CPU密集型的,对于复杂的模型可能需要相当长的时间。
  • 进度报告:对于大型文件,进度更新可能会在某些处理阶段出现停滞。

测试建议

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

附录:MCP安全注意事项

看 推荐:与codemode mcp一起使用 用于减少大型工具表面的令牌开销。

快速注射:风险和缓解措施

快速注射是使用工具的试剂的一个悬而未决的问题。实际缓解措施:

  • 最低权限凭据和短期令牌。
  • 严格的模式验证和操作/主机的显式分配列表。
  • 破坏性操作的人工确认门。
  • 具有资源/时间限制的执行沙盒。
  • 默认情况下,将工具输出视为不受信任的输入。

徽章

徽章描述
npm上包的当前版本
该项目根据GPL-2.0获得许可
这个项目是用TypeScript 4.9+编写的
该项目得到了积极维护
我们欢迎通过Pull Requests进行捐款
需要Node.js 18.0.0或更高版本
每月从npm下载的次数
该项目获得的GitHub星数

许可证

GPL-2.0