MCP 3D打印机服务器
✨ What’s New / Significant Updates (as of last session)
- 双重本地交通: 添加了显式
stdio和streamable-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状态: 重构
getStatusBambu订阅MQTT报告并维护实时状态。 - 实施稳健的AMS映射: 替换占位符逻辑;正确解析和使用来自的AMS映射
.3mfMQTT打印命令的slicer配置或用户覆盖。 - 实施
.3mf打印替换: 添加逻辑print_3mf该工具用于处理用户提供的覆盖(例如校准标志)以及可能通过MQTT/g代码进行的常见切片器设置(如果可行)。 - 计算MD5哈希: 添加逻辑来计算并包含MD5哈希值
.3mfMQTT打印命令中的文件(可选,但协议建议)。 - 重构Bambu文件操作: 调查更换
bambu-jsFTP操作(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在容器化环境中运行服务器。
- 确保你已经安装了Docker和Docker Compose。
- 复制
.env.example到.env并配置您的设置。 - 构建并运行容器:
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_TYPE 到 orcaslicer 也。
很抱歉没有提供开箱即用的特定切片器,但鉴于切片器(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执行代码 (人类学)
- 代码模式:为代理提供1000个令牌中的整个API (Cloudflare)
这适用于所有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_SERIAL和BAMBU_TOKEN) - 打印机型号: 必需 (套
BAMBU_MODEL).有效值:p1s,p1p,x1c,x1e,a1,a1mini,h2d。这可确保切片器为您的特定打印机生成正确的G代码。 - 要求:打印机必须在启用开发人员模式和仅局域网模式的同一网络上
- 兼容:X1C、X1E、P1S、P1P、A1、A1 Mini、H2D
查找Bambu打印机的序列号和访问令牌
要连接到Bambu Lab打印机,您需要两件事:
- 打印机序列号:
- 在打印机的背面或底部寻找带有序列号的贴纸(通常以“01P”或“01A”开头,后跟数字/字母)
- 或者,打开Bambu Studio,连接到打印机,转到设备>设备管理,查看打印机信息
- 访问令牌:
- 访问令牌是直接连接到打印机所需的安全码
- 对于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
- 确保您的Prusa打印机已更新到最新固件
- 将打印机连接到Wi-Fi网络
- 创建Prusa Connect帐户并注册打印机
- 在设置>API访问下,从Prusa Connect web界面生成API密钥
Creality云
Creality Cloud是Creality为其打印机提供的管理系统。
- 默认端口:80(http)或443(https)
- 身份验证:需要承载令牌
- 兼容:Ender系列、CR系列和其他具有网络功能的Creality打印机
建立Creality云
- 在您的移动设备上安装Creality Cloud应用程序
- 创建帐户并添加打印机
- 为打印机启用本地网络访问
- 在“设置”>“开发人员选项”下从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的性质,存在一些限制:
- 可打印3MF要求:
print_3mf需要切片3MF,其中至少包含一个Metadata/plate_<n>.gcode这样服务器就可以计算MD5并正确启动作业。 - AMS行为警告: 当前
bambu-js项目文件命令路径始终发送use_ams=true;通过use_ams=false被视为尽最大努力,并附有警告。 - 温度控制路径: 通过G代码命令调度实现温度更新(
M104/M140)通过MQTT,因此有效的行为仍然取决于打印机固件接受度和当前打印机状态。 - 文件传输通道: 文件操作使用Bambu的FTPS路径(端口990),通过
bambu-js。这比普通FTP更安全,但仍然假定受信任的本地网络环境和库管理的TLS行为。 - 直接启动路径范围:
startJob当前目标.gcode打印机存储中的文件;.3mf作业应通过以下方式启动print_3mf因此,元数据和车牌选择得到了处理。 - 状态一致性: 状态显示强制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