Token导航 LogoToken导航TokenDH.com
MCP 3D Printer Server logo
设计创作未说明官方级别未说明来源级核验

MCP 3D Printer Server

MCP Server

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

工具数

15

提示词数

0

GitHub Stars

188

资源数

0
JavaScriptClaude开源Claude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

DMontgomery40

提供方

DMontgomery40

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

感谢FULU和Louis Rossmann

MCP 3D打印机服务器

](https://www.npmjs.com/package/mcp-3d-printer-server) ![License: GPL-2.0](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) ![TypeScript](https://www.typescriptlang.org/) ![Maintenance](https://github.com/yourusername/mcp-3d-printer-server/graphs/commit-activity) ![PRs Welcome](https://makeapullrequest.com) ](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)

  • 双重本地交通: 添加了显式 stdiostreamable-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状态: 重构 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

目录

- 先决条件 - - 从源代码安装 - -

- OctoPrint - Klipper (通过 Moonraker) - 二重奏 - 废除 - 班布实验室 - 查找Bambu打印机的序列号和访问令牌 - Bambu通信说明(MQTT和FTP) - Prusa Connect - 设置Prusa Connect - Creality云 - 建立Creality云

- STL操作工具 - 打印机控制工具 - Bambu专用工具

- 打印机资源 - 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在容器化环境中运行服务器。

  1. 确保你已经安装了Docker和Docker Compose。
  2. 复制 .env.example.env 并配置您的设置。
  3. 构建并运行容器:
   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_MODEL Bambu打印操作仍然是强制性的,因为错误的机器预设会产生危险的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_dirFULU_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,运行 /mcpcodex mcp list 确认服务器已加载。

推荐:与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云,请使用 connect.prusa3d.com 随着 PRINTER_PORT=443,或将该方案直接纳入 PRINTER_HOST=https://connect.prusa3d.com。服务器将这两种形式标准化为HTTPS。本地PrusaLink主机继续使用HTTP,除非您提供 https:// 主机或端口 443.

设置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文件的详细信息,包括尺寸、顶点数和边界框。

{
  "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的性质,存在一些限制:

  1. 可打印3MF要求: print_3mf 最终需要一个切片3MF,其中至少包含一个 Metadata/plate_.gcode 这样服务器就可以计算MD5并正确启动作业。未切片的3MF文件可以在以下情况下首先自动切片 SLICER_TYPE=orcaslicer-bambulabSLICER_TYPE=bambustudio 已配置。
  1. AMS行为警告: AMS映射是通过MQTT项目文件命令传递的,但实际行为仍然取决于打印机固件、加载的细丝和切片项目的元数据。
  1. 温度控制路径: 通过G代码命令调度实现温度更新(M104/M140)通过MQTT,因此有效的行为仍然取决于打印机固件接受度和当前打印机状态。
  1. 文件传输通道: 上传使用Bambu的FTPS路径(端口990)直接通过 basic-ftp 使用隐式TLS。一些读取/列表操作仍在使用 bambu-js 助手。
  1. 直接启动路径范围: startJob 当前目标 .gcode 打印机存储中的文件; .3mf 作业应通过以下方式启动 print_3mf 因此,元数据和车牌选择得到了处理。
  1. 状态一致性: 状态显示强制a pushall 尽可能刷新,但所有Bambu模型的完整实时事件流状态语义仍需要更深入的强化。
  1. 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上包的当前版本
![License: GPL-2.0](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)该项目根据GPL-2.0获得许可
![TypeScript](https://www.typescriptlang.org/)这个项目是用TypeScript 4.9+编写的
![Maintenance](https://github.com/yourusername/mcp-3d-printer-server/graphs/commit-activity)该项目得到了积极维护
![PRs Welcome](https://makeapullrequest.com)我们欢迎通过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

目录标签

目录标签

JavaScriptClaude开源3D打印本地部署打印机控制STL操作Bambu支持

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

15

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP