感谢FULU和Louis Rossmann
MCP 3D打印机服务器
](https://www.npmjs.com/package/mcp-3d-printer-server)     ](https://nodejs.org/en/download/) ](https://www.npmjs.com/package/mcp-3d-printer-server) ](https://github.com/yourusername/mcp-3d-printer-server)
✨ What's New / Significant Updates (as of last session)
- 双重本地交通: 添加了显式
stdio和streamable-http具有基于环境的传输选择的运行时模式。 - FULU OrcaSlicer bambulab支持: 添加
orcaslicer-bambulab/fulu_orca切片器支持Bambu项目3MF导出,并在未配置切片器时将其设置为默认的Bambu切片器目标。 - 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
目录
- OctoPrint - Klipper (通过 Moonraker) - 二重奏 - 废除 - 班布实验室 - 查找Bambu打印机的序列号和访问令牌 - Bambu通信说明(MQTT和FTP) - Prusa Connect - 设置Prusa Connect - Creality云 - 建立Creality云
- STL操作工具 - 打印机控制工具 - Bambu专用工具
- 内存使用 - STL操作限制 - 可视化限制 - 性能注意事项 - 测试建议
描述
这是一个允许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命令) - Slice Bambu项目与FULU OrcaSlice bambulab合作(
SLICER_TYPE=orcaslicer-bambulab)配置项目切片器后,在Bambu打印之前自动切片未切片的3MF文件 - 检查和探测FULU BambuNetwork运行时(
check_fulu_orca_setup)并默认调用safe FULU桥RPC方法进行诊断和开发(fulu_bambu_network_rpc) - 读取Bambu Studio预设文件(打印机、灯丝、工艺)作为资源
安装
先决条件
- Node.js 18或更高版本
- npm或纱线
从npm安装
npm install -g mcp-3d-printer-server从源代码安装
git 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并配置您的设置。 - 构建并运行容器:
docker-compose up --build -d在Docker中使用切片器
请注意,默认的Docker设置 无法直接使用安装在主机上的切片机。由于主机和容器之间的操作系统和库差异,将切片器可执行文件直接从主机安装到容器中是不可靠的。
建议的方法是 **安装您喜欢的切片机 *里面* Docker镜像**这使得容器自给自足。
为此,您需要修改 Dockerfile。以下是一个概念性示例,说明如何添加PrusaSlicer、OrcaSlicer或FULU OrcaSlicer-bambulab构建(具体命令可能因切片器、其依赖关系和当前Alpine软件包而异):
# ... other Dockerfile commands ...
# Example: Install PrusaSlicer, OrcaSlicer, or FULU OrcaSlicer-bambulab (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).对于启用FULU Bambu的叉子,设置 SLICER_TYPE=orcaslicer-bambulab.
很抱歉没有提供开箱即用的特定切片器,但鉴于切片器(PrusaSlicer、OrcaSlicer、Cura等)和配置的多样性,预安装一个切片器会不必要地使许多用户的图像膨胀。如果某个特定的切片器成为一个非常常见的请求,我当然可以考虑在未来的版本中为其添加官方支持。
配置
创建一个 .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 # 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)
# For Bambu projects, the default is orcaslicer-bambulab unless SLICER_TYPE is set.
SLICER_TYPE=orcaslicer-bambulab # Options: prusaslicer, cura, slic3r, orcaslicer, orcaslicer-bambulab, bambustudio
SLICER_PATH=/path/to/slicer/executable
SLICER_PROFILE=/path/to/slicer/profile
# Optional aliases for FULU OrcaSlicer-bambulab when SLICER_PATH is not set
FULU_ORCA_PATH=/path/to/FULU/OrcaSlicer
ORCASLICER_BAMBULAB_PATH=/path/to/FULU/OrcaSlicer
FULU_ORCA_PLUGIN_DIR=/path/to/FULU/OrcaSlicer.app/Contents/MacOS
ORCASLICER_BAMBULAB_PLUGIN_DIR=/path/to/FULU/OrcaSlicer.app/Contents/MacOS
# Optional FULU BambuNetwork bridge runtime
# macOS default runtime dir:
# /Users/you/Library/Application Support/OrcaSlicer/macos-bridge/runtime
PJARCZAK_MAC_RUNTIME_DIR=
FULU_BAMBU_BRIDGE_COMMAND=
# 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或任何兼容MCP的客户端)。大多数基于JSON的客户端使用 mcpServers 使用命令和env变量输入:
{
"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": "orcaslicer-bambulab",
"SLICER_PATH": "/path/to/FULU/OrcaSlicer",
"FULU_ORCA_PLUGIN_DIR": "/Applications/OrcaSlicer.app/Contents/MacOS"
}
}
}
}对于非Bambu打印机,将Bambu特定的环境变量替换为 API_KEY 以及适当的 PRINTER_TYPE (参见 支持的打印机管理系统).
FULU虎鲸竹
使用 FULU-Foundation/OrcaSlicer-bambulab 通过设置成为一流的Bambu项目切片机:
PRINTER_TYPE=bambu
SLICER_TYPE=orcaslicer-bambulab
SLICER_PATH=/path/to/FULU/OrcaSlicer
FULU_ORCA_PLUGIN_DIR=/path/to/FULU/runtime/payload
BAMBU_MODEL=p1s接受的别名包括 fulu_orca, fulu-orca, orca-studio,以及 orca_bambulab对于Bambu打印机,这是默认的切片器系列 SLICER_TYPE 未设置。
集成的作用:
slice_stl使用FULU/Orca项目CLI形状(--slice 0 --export-3mf)以生产切片Bambu兼容的3MF。print_3mf可以通过FULU OrcaSlicer bambulab自动切片未切片的3MF,然后通过此服务器的Bambu打印路径上传并启动切片项目。check_fulu_orca_setup验证FULU可执行文件、平台运行时负载、设置命令和可选的BambuNetwork网桥握手。fulu_bambu_network_rpc可以调用FULU网桥协议进行诊断和开发。默认情况下允许使用只读方法;突变方法需要allow_mutating_method=true;FULU打印方法仍然需要bambu_model.
什么是刻意明确的:
- 此MCP服务器的现有Bambu打印路径是本地MQTT加FTPS,仍然需要
BAMBU_SERIAL,BAMBU_TOKEN,以及PRINTER_HOST. - FULU的BambuNetwork网桥是一个单独的运行时。MCP可以检查它、探测它并发出受保护的网桥RPC调用,但它不会无声地将打印从本地LAN控制切换到云/BambuNetwork控制。
BAMBU_MODELBambu打印操作仍然是强制性的,因为错误的机器预设会产生危险的G代码。
当前台架测试状态
此集成已针对当前的FULU macOS发布工件和本地Benchy冒烟测试进行了测试。在测试期间发现的MCP侧错误是真实的:Bambu家族项目切片器必须使用Orca/Bambu预设的JSON --load-settings,而不是无效 --load-machine 旗帜。这在这里是固定的。
老班布工作室的退路仍然有效。设置:
SLICER_TYPE=bambustudio
SLICER_PATH=/Applications/BambuStudio.app/Contents/MacOS/BambuStudio通过这种回退,同一台Benchy 3MF成功地通过Bambu Studio的CLI切入了与Bambu兼容的项目3MF。这是FULU平台打包解决的已知好方法。
macOS尚未被证明是绿色的。在这台Mac上,FULU arm64和x86_64 macOS发布包在Benchy测试中遇到了相同的CLI切片问题:一条路径崩溃 SIGSEGV 在OrcaSlicer CLI处理过程中,多次尝试使macOS无法中断 UE 忽略的进程 SIGKILLMCP现在避免假装问题已经解决。 check_fulu_orca_setup 可以检查捆绑包和网桥有效负载,但macOS用户应将FULU CLI切片视为主动反馈领域,直到FULU发布稳定的macOS CLI/运行时组合。
我们需要Windows测试人员。WSL 2设置路径、有效载荷检查和桥接命令形状在此MCP中表示,但完整的Windows路径仍需要来自可以验证的人的真实报告 install_runtime.ps1, verify_runtime.ps1、桥接探测、CLI切片和已知的安全打印工作流程。
我们将继续根据用户和贡献者的反馈进行迭代。请报告操作系统、CPU架构、FULU发布资产名称, check_fulu_orca_setup 结果、切片器命令stderr以及Bambu Studio回退是否适用于同一模型。
FULU运行时按平台设置
FULU README目前表示macOS正在开发中,但源代码树已经提供了macOS Lima运行时脚本和Windows WSL运行时脚本。此MCP知道这些文件布局,并通过以下方式返回确切的命令 check_fulu_orca_setup.
窗户:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重新启动Windows,然后从包含以下内容的目录中运行FULU包脚本 install_runtime.ps1:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\install_runtime.ps1 -PackageDir . -PluginDir .
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\verify_runtime.ps1 -PackageDir . -PluginDir .Linux:
正常安装FULU OrcaSlicer bambulab构建,设置 SLICER_TYPE=orcaslicer-bambulab,和点 SLICER_PATH 在可执行文件中。如果要进行网桥级诊断,请设置 FULU_BAMBU_BRIDGE_COMMAND 到包装 pjarczak_bambu_linux_host.
macOS:
设置应用程序负载目录,然后运行FULU复制到应用程序包中的脚本:
export FULU_ORCA_PLUGIN_DIR="/Applications/OrcaSlicer.app/Contents/MacOS"
bash "$FULU_ORCA_PLUGIN_DIR/install_runtime_macos.sh" -PackageDir "$FULU_ORCA_PLUGIN_DIR" -PluginDir "$FULU_ORCA_PLUGIN_DIR"
bash "$FULU_ORCA_PLUGIN_DIR/verify_runtime_macos.sh" -PackageDir "$FULU_ORCA_PLUGIN_DIR" -PluginDir "$FULU_ORCA_PLUGIN_DIR"默认安装的运行时是:
~/Library/Application Support/OrcaSlicer/macos-bridge/runtime桥接命令形状为:
"/Applications/OrcaSlicer.app/Contents/MacOS/pjarczak-bambu-linux-host-wrapper" "$HOME/Library/Application Support/OrcaSlicer/macos-bridge/runtime/pjarczak_bambu_linux_host"如果你的应用程序被命名 Orca Studio.app 或者住在别的地方,传递它的真实 Contents/MacOS 路径为 plugin_dir 或 FULU_ORCA_PLUGIN_DIR.
通过MCP检查设置
请您的MCP客户致电 check_fulu_orca_setup,或者从代理调用它,参数如下:
{
"platform": "darwin",
"slicer_path": "/Applications/OrcaSlicer.app/Contents/MacOS/OrcaSlicer",
"plugin_dir": "/Applications/OrcaSlicer.app/Contents/MacOS",
"run_bridge_probe": true,
"bridge_command": "\"/Applications/OrcaSlicer.app/Contents/MacOS/pjarczak-bambu-linux-host-wrapper\" \"$HOME/Library/Application Support/OrcaSlicer/macos-bridge/runtime/pjarczak_bambu_linux_host\""
}结果报告缺少有效负载文件、安装/验证命令、要使用的MCP环境值以及启用探测时的网桥握手/能力/运行时信息。
FULU大桥RPC
fulu_bambu_network_rpc 从MCP侧讲FULU网桥帧协议。该协议是带有JSON主体的小端二进制帧,使用以下方法 bridge.handshake, bridge.capabilities, bridge.runtime_info,以及 net.get_user_print_info.
安全诊断示例:
{
"method": "bridge.runtime_info",
"bridge_command": "\"/Applications/OrcaSlicer.app/Contents/MacOS/pjarczak-bambu-linux-host-wrapper\" \"$HOME/Library/Application Support/OrcaSlicer/macos-bridge/runtime/pjarczak_bambu_linux_host\""
}突变方法是有意选择的:
{
"method": "net.start_print",
"allow_mutating_method": true,
"bambu_model": "p1s",
"payload": {
"client_job_id": 1,
"params": {
"dev_id": "YOUR_PRINTER_ID"
}
}
}第二个示例故意不完整,因为真正的BambuNetwork打印调用需要完整的FULU/Bambu打印参数有效载荷。重要的是,MCP公开了网桥,而不会假装可以从本地文件名安全地推断出云印。
此配置的位置取决于您的客户端和操作系统:
| 客户端/作用域 | macOS/Linux位置 | Windows位置 |
|---|---|---|
| 克劳德桌面(macOS/Windows) | ~/Library/Application Support/Claude/claude_desktop_config.json | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Desktop(Linux) | 尚未正式支持本地MCP;Claude Desktop文档仍然列出了即将推出的Linux支持。 | 无 |
| 克劳德代码(项目共享MCP) | .mcp.json 在项目根中 | .mcp.json 在项目根中 |
| 克劳德代码(用户/本地MCP) | ~/.claude.json | %USERPROFILE%\.claude.json |
| 克劳德代码设置(不是MCP服务器定义) | ~/.claude/settings.json | %USERPROFILE%\.claude\settings.json |
| 光标(项目) | .cursor/mcp.json 在项目根中 | .cursor\mcp.json 在项目根中 |
| 光标(全局) | ~/.cursor/mcp.json | %USERPROFILE%\.cursor\mcp.json |
| Codex(用户;CLI、IDE扩展、应用程序) | ~/.codex/config.toml | %USERPROFILE%\.codex\config.toml |
| Codex(项目,仅限受信任的项目) | .codex/config.toml 在项目根中 | .codex\config.toml 在项目根中 |
Codex使用TOML而不是上面的JSON形状。您可以通过以下方式管理MCP服务器 codex mcp,或编辑 config.toml 直接与a [mcp_servers.] 进入。
编辑配置后重新启动客户端。对于Codex,运行 /mcp 或 codex mcp list 确认服务器已加载。
推荐:与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云,请使用 connect.prusa3d.com 随着 PRINTER_PORT=443,或将该方案直接纳入 PRINTER_HOST=https://connect.prusa3d.com。服务器将这两种形式标准化为HTTPS。本地PrusaLink主机继续使用HTTP,除非您提供 https:// 主机或端口 443.
设置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文件的详细信息,包括尺寸、顶点数和边界框。
{
"stl_path": "/path/to/file.stl"
}extend_stl-base
将STL文件的基础扩展指定的量。
{
"stl_path": "/path/to/file.stl",
"extension_inches": 2
}scale_tl
均匀地或沿特定轴缩放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
}合并_权限
合并比指定公差更近的顶点。有助于缩小小间隙,并可以略微简化网格。
{
"stl_path": "/path/to/model.stl",
"tolerance": 0.01 // Optional, default = 0.01mm
}中心模型
平移模型,使其边界框的中心位于世界原点(0,0,0)。
{
"stl_path": "/path/to/model.stl"
}lay_flat
尝试识别模型的最大平面(尚未直接朝上或朝下),并旋转模型,使该面在XY平面(Z=0)上朝下。可用于调整打印模型的方向。
{
"stl_path": "/path/to/model.stl"
}modify_sl_部分
将特定变换应用于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_可视化
从多个角度(正面、侧面、顶部和等轴测视图)生成STL文件的SVG可视化。
{
"stl_path": "/path/to/file.stl",
"width": 400,
"height": 400
}slice_str
切片STL文件以生成G代码。
{
"stl_path": "/path/to/file.stl",
"slicer_type": "orcaslicer",
"slicer_path": "/path/to/orcaslicer",
"slicer_profile": "/path/to/machine.json;/path/to/process.json",
"filament_profile": "/path/to/flat-nylon-filament.json"
}对于OrcaSlicer,服务器使用 --slice 0 --outputdir 并返回重命名后的 plate_1.gcode 输出。单独装载灯丝 filament_profile (--load-filaments)或将其编码 slicer_profile 例如,在管道之后 /path/to/process.json|/path/to/filament.json.
确认温度
确认G代码文件中的温度设置。
{
"gcode_path": "/path/to/file.gcode",
"extruder_temp": 200,
"bed_temp": 60
}process_and_print_str
处理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"
}注: 自动定位以实现最佳打印(最小化支持等)是一项复杂的任务,通常由切片器GUI(如OrcaSlicer或PrusaSlicer)处理,并且不在此服务器中实现。
Click to expand Printer Control Tools
打印机控制工具
get_inter_status
获取3D打印机的当前状态。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}对于Bambu打印机,这目前仅确认MQTT连接。
list_pinter_files
列出打印机上可用的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}对于Bambu打印机,列出 gcodes 通过FTP访问目录。
G代码
将G代码内容或本地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
}对于较大的文件,请传递本地路径。如果 filename 如果省略,打印机文件名默认为basename gcode_path.
{
"host": "192.168.1.100",
"type": "klipper",
"api_key": "YOUR_API_KEY",
"gcode_path": "/path/to/my_print.gcode",
"print": true
}对于Bambu打印机,上传到 gcodes 通过FTP访问目录。无法自动开始打印。
start_print
开始打印打印机上已有的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"filename": "my_print.gcode"
}不建议用于Bambu打印机。 使用 print_3mf Bambu .3mf 文件夹。
cancel_print
取消当前打印作业。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}对于Bambu打印机,发送 stop_print 通过MQTT执行命令。
set_pinter_温度
设置打印机组件的温度。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"component": "extruder",
"temperature": 200
}对于Bambu打印机,这会发送固件G代码温度命令(M104 对于喷嘴, M140 用于床)通过MQTT。
Click to expand Bambu-Specific Tools
Bambu专用工具
check_fulu_orca_setup
检查FULU OrcaSlicer bambulab可执行文件、平台运行时负载、设置命令和可选的BambuNetwork网桥探测。
{
"platform": "darwin",
"slicer_path": "/Applications/OrcaSlicer.app/Contents/MacOS/OrcaSlicer",
"plugin_dir": "/Applications/OrcaSlicer.app/Contents/MacOS",
"run_bridge_probe": true,
"bridge_command": "\"/Applications/OrcaSlicer.app/Contents/MacOS/pjarczak-bambu-linux-host-wrapper\" \"$HOME/Library/Application Support/OrcaSlicer/macos-bridge/runtime/pjarczak_bambu_linux_host\""
}fulu_bambu_network_rpc
调用一个FULU BambuNetwork网桥JSON RPC方法。只读方法,例如 bridge.handshake, bridge.runtime_info,以及 net.get_user_print_info 默认情况下是允许的。可以更改帐户、打印机、云或打印状态的方法需要 allow_mutating_method=true;FULU打印方法也需要 bambu_model.
{
"method": "bridge.handshake",
"bridge_command": "\"/Applications/OrcaSlicer.app/Contents/MacOS/pjarczak-bambu-linux-host-wrapper\" \"$HOME/Library/Application Support/OrcaSlicer/macos-bridge/runtime/pjarczak_bambu_linux_host\""
}打印3mf
上传切片 .3mf 通过FTP将文件发送到Bambu打印机,并通过MQTT命令启动打印作业。如果3MF没有嵌入式板G代码并且配置了项目切片器,服务器可以首先使用FULU OrcaSlicer bambulab或Bambu Studio自动切片。允许覆盖某些打印参数,如AMS映射。
bambu_model 是必需的 --它确保切片器为正确的打印机生成G代码。使用错误的型号可能会导致床撞到喷嘴并损坏打印机。如果工具调用中没有提供 BAMBU_MODEL 如果未在环境中设置,服务器将通过MCP引导交互式询问(如果您的客户端支持)或返回明确的错误。
{
"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",
"slicer_type": "orcaslicer-bambulab",
"slicer_path": "/path/to/FULU/OrcaSlicer",
"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_.gcode这样服务器就可以计算MD5并正确启动作业。未切片的3MF文件可以在以下情况下首先自动切片SLICER_TYPE=orcaslicer-bambulab或SLICER_TYPE=bambustudio已配置。
- AMS行为警告: AMS映射是通过MQTT项目文件命令传递的,但实际行为仍然取决于打印机固件、加载的细丝和切片项目的元数据。
- 温度控制路径: 通过G代码命令调度实现温度更新(
M104/M140)通过MQTT,因此有效的行为仍然取决于打印机固件接受度和当前打印机状态。
- 文件传输通道: 上传使用Bambu的FTPS路径(端口990)直接通过
basic-ftp使用隐式TLS。一些读取/列表操作仍在使用bambu-js助手。
- 直接启动路径范围:
startJob当前目标.gcode打印机存储中的文件;.3mf作业应通过以下方式启动print_3mf因此,元数据和车牌选择得到了处理。
- 状态一致性: 状态显示强制a
pushall尽可能刷新,但所有Bambu模型的完整实时事件流状态语义仍需要更深入的强化。
- FULU Bambu网桥范围: FULU桥通过其自己的运行时和RPC协议公开BambuNetwork功能。此MCP可以检查/探测该运行时并发出受保护的网桥RPC调用,但仅限于本地
print_3mf仍然使用服务器的显式本地MQTT/FTPS路径,除非将来的更改安全地映射了完整的FULU云打印有效负载。
限制和注意事项
内存使用
- 大型STL文件:处理大型或复杂的STL文件会消耗大量内存。在操作过程中,整个STL几何体被加载到内存中。
- 多项操作:如果垃圾回收跟不上,按顺序运行多个STL操作(特别是在大文件上)可能会导致内存累积。
- MCP环境:由于这是作为MCP服务器运行的,请注意Claude的MCP环境有内存限制。对非常大的STL文件进行复杂的操作可能会导致内存不足问题。
STL操作限制
- 章节修改:特定于截面的修改功能在更简单的几何形状上效果最佳。复杂或非流形网格可能会产生意想不到的结果。
- 基础扩展:基础扩展算法通过在模型下方添加新的几何体来工作。对于具有复杂底面的模型,结果可能并不完美。
- 错误处理:虽然我们添加了强大的错误处理,但复杂STL文件中的一些边缘情况仍可能导致问题。
可视化限制
- SVG表示法SVG可视化是一种简化的示意图表示,而不是真正的3D渲染。
- 复杂模型:对于非常复杂的模型,可视化可能无法准确表示所有细节。
性能注意事项
- 切片操作:外部切片器进程可能是CPU密集型的,对于复杂的模型可能需要相当长的时间。
- 进度报告:对于大型文件,进度更新可能会在某些处理阶段出现停滞。
测试建议
- 从较小的STL文件(\<10MB)开始测试功能
- 处理大文件时监控内存使用情况
- 在尝试复杂几何形状之前,先测试简单几何形状的修改
- 考虑在至少有4GB可用RAM的系统上运行,以进行更大的操作
附录:MCP安全注意事项
看 推荐:与codemode mcp一起使用 用于减少大型工具表面的令牌开销。
快速注射:风险和缓解措施
快速注射是使用工具的试剂的一个悬而未决的问题。实际缓解措施:
- 最低权限凭据和短期令牌。
- 严格的模式验证和操作/主机的显式分配列表。
- 破坏性操作的人工确认门。
- 具有资源/时间限制的执行沙盒。
- 默认情况下,将工具输出视为不受信任的输入。
徽章
| 徽章 | 描述 |
|---|---|
| ](https://www.npmjs.com/package/mcp-3d-printer-server) | npm上包的当前版本 |
|  | 该项目根据GPL-2.0获得许可 |
|  | 这个项目是用TypeScript 4.9+编写的 |
|  | 该项目得到了积极维护 |
|  | 我们欢迎通过Pull Requests进行捐款 |
| ](https://nodejs.org/en/download/) | 需要Node.js 18.0.0或更高版本 |
| ](https://www.npmjs.com/package/mcp-3d-printer-server) | 每月从npm下载的次数 |
| ](https://github.com/yourusername/mcp-3d-printer-server) | 该项目获得的GitHub星数 |
许可证
GPL-2.0
