← 返回目录
M

MCP 3D Printer Server

社区
通过 MCP 连接并控制主流 3D 打印机,支持 STL/3MF 编辑、切片与打印。
GitHub 源仓库 ↗
★ 233 Stars 分类 · 其他 非常热门
53FMRS · D

该服务器把 MCP 客户端与多品牌 3D 打印机管理系统打通,覆盖状态查询、文件管理、打印控制和相当完整的 STL 编辑、切片与可视化能力,并对 Bambu Lab 提供 3MF 打印、FULU OrcaSlicer-bambulab 集成与桥接诊断工具。它由社区维护而非厂商官方,采用 GPL-2.0 许可,支持 stdio 与 streamable-http 本地传输。适合希望用自然语言驱动打印流程的用户,但需要提供打印机凭据与局域网访问权限,STL 大文件处理存在内存压力,Bambu 的 FTP 传输与机型预设配置存在实际风险,部分功能(如 Bambu 实时状态和 FULU macOS 切片)仍有已知限制。

可靠性
9/20
安全与权限
8/20
维护活跃度
11/20
文档质量
14/20
安装易用性
11/20
查看 FMRS 评分方法 →

这是一个 Model Context Protocol(MCP)服务器,用于把 MCP 客户端连接到多种 3D 打印机管理系统:OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier、Bambu Lab、Prusa Connect 以及 Creality Cloud。它支持查询打印机状态与温度、列出打印机上的文件、上传 G-code、启动/取消打印任务、设置温度,并提供较完整的 STL 操作能力:缩放、旋转、平移、底座延伸、合并顶点、居中、自动平放、局部区域修改、信息分析以及多角度 SVG 可视化。它还可用外部切片器把 STL 切片为 G-code、校验 G-code 中的温度设置,并能把切好的 3MF 通过 FTP 上传并在 Bambu Lab 打印机上通过 MQTT 启动打印;在配置了项目切片器时,可先用 FULU OrcaSlicer-bambulab 或 Bambu Studio 对未切片 3MF 自动切片。Bambu 集成还提供 FULU 运行时环境检测(check_fulu_orca_setup)与受保护的 FULU BambuNetwork 桥接 RPC 调用(fulu_bambu_network_rpc),以及读取 Bambu Studio 预设资源。服务器支持 stdio 与 streamable-http 两种本地传输方式,需要 Node.js 18 或更高版本,采用 GPL-2.0 许可。

工具能力

get_stl_info
获取 STL 文件的详细信息,包括尺寸、顶点数与包围盒。
extend_stl_base
按指定量延伸 STL 模型的底座。
scale_stl
对 STL 模型进行等比或按轴缩放。
rotate_stl
绕指定轴旋转 STL 模型(单位为度)。
translate_stl
沿指定轴平移 STL 模型(单位为毫米)。
merge_vertices
合并距离小于给定容差的顶点,有助于封闭小缝隙。
center_model
平移模型,使其包围盒中心位于世界原点 (0,0,0)。
lay_flat
尝试找出模型最大的平面,并将其旋转到 XY 平面朝下(Z=0),便于打印摆放。
modify_stl_section
对 STL 文件的指定区域(顶部、底部、中心或自定义范围)应用缩放、旋转等变换。
generate_stl_visualization
生成 STL 文件的多角度 SVG 可视化(正视、侧视、俯视和等轴测视图)。
slice_stl
使用外部切片器将 STL 文件切片生成 G-code。
confirm_temperatures
确认 G-code 文件中的温度设置。
process_and_print_stl
处理 STL(延伸底座)、切片、确认温度并开始打印的端到端流程。
get_printer_status
获取 3D 打印机的当前状态(温度、打印进度等)。
list_printer_files
列出打印机上可用的文件。
upload_gcode
上传 G-code 内容或本地 G-code 文件路径到打印机。
start_print
开始打印打印机上已有的文件。
cancel_print
取消当前打印任务。
set_printer_temperature
设置打印机某个部件的温度。
check_fulu_orca_setup
检查 FULU OrcaSlicer-bambulab 可执行文件、平台运行时负载、安装命令,并可选择探测 BambuNetwork 桥接。
fulu_bambu_network_rpc
调用一个 FULU BambuNetwork 桥接 JSON RPC 方法;只读方法默认允许,会改变状态的方法需显式允许,打印方法还需指定 bambu_model。
print_3mf
通过 FTP 上传已切片的 .3mf 文件,并通过 MQTT 命令在 Bambu 打印机上启动打印;必要时可先自动切片。
blender_mcp_edit_model
Blender 桥接工具,支持可选的执行模式,用于模型编辑协作流程。

安装接入

  1. 确认已安装 Node.js 18 或更高版本。
  2. 全局安装:npm install -g mcp-3d-printer-server;或从源码安装:git clone 仓库后执行 npm install 与 npm link。
  3. 在运行服务器的目录创建 .env 文件或设置环境变量(API_KEY、PRINTER_HOST、PRINTER_PORT、PRINTER_TYPE 等;Bambu 打印机需额外设置 BAMBU_SERIAL、BAMBU_TOKEN、BAMBU_MODEL)。
  4. 在 MCP 客户端配置中添加 mcpServers 条目,command 使用 npx,args 为 ["-y", "mcp-3d-printer-server"],env 中填入打印机连接参数。
  5. 重启客户端(Codex 可运行 /mcp 或 codex mcp list 确认加载)。
  6. 也可使用 Docker 与 Docker Compose 运行:复制 .env.example 为 .env 后执行 docker-compose up --build -d;切片器建议安装在容器内部,而不是挂载宿主机可执行文件。
claude_desktop_config.json
{
  "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"
      }
    }
  }
}

选型与风险

适合谁

  • 拥有 OctoPrint、Klipper、Duet、Repetier、Bambu Lab、Prusa 或 Creality 打印机的用户
  • 希望通过 MCP 客户端用自然语言完成打印与模型处理流程的用户
  • 需要端到端“修改 STL → 切片 → 打印”工作流的技术用户
  • 使用 FULU OrcaSlicer-bambulab 或 Bambu Studio 作为项目切片器的 Bambu 用户

不适合谁

  • 没有任何受支持打印机或打印机管理系统的用户
  • 不希望向服务器提供打印机凭据(API key、访问令牌、序列号)的用户
  • 期望在 MCP 中直接修改切片器层高、温度等切片参数的用户(需在生成 3MF 前完成)
  • 期望获得完整实时事件流式 Bambu 状态语义的用户(当前状态读取仍有限制)
  • 未启用开发者模式与仅局域网模式、或打印机不在同一网络的 Bambu 用户

所需权限

  • 打印机管理系统的 API key 或 Bearer token
  • Bambu Lab 的序列号(BAMBU_SERIAL)与访问令牌(BAMBU_TOKEN)
  • 对打印机所在局域网的网络访问(含 Bambu 的 MQTT 8883 端口与 FTPS 990 端口)
  • 对本地文件系统的读写访问(读写 STL/G-code/3MF 文件与临时目录)
  • 调用外部切片器可执行文件(SLICER_PATH)以及可选的 FULU 桥接命令
  • 可选的 MCP_ALLOW_EXECUTABLE_ARG=1,用于允许单次调用指定本地可执行文件

风险与副作用

  • STL 操作会把完整模型载入内存,处理大文件(如大于 10MB)可能导致内存不足
  • Bambu 文件操作用的 FTP 连接可能是未加密的普通 FTP,存在网络窃听风险
  • 错误的 Bambu 机型预设(bambu_model)可能生成危险 G-code,导致喷嘴与热床碰撞并损坏打印机
  • 允许单次调用传入可执行文件路径(MCP_ALLOW_EXECUTABLE_ARG)会让不受信任的输入选择本地运行的程序,应仅在可信诊断时开启
  • 工具输出应视为不可信输入,存在提示注入风险,破坏性操作建议加人工确认
  • 凭据以环境变量形式保存在客户端配置中,一旦泄露会影响打印机控制权

常见排障

  1. 确认 Node.js 版本不低于 18
  2. 检查 PRINTER_HOST、PRINTER_PORT、PRINTER_TYPE 以及 API_KEY/令牌是否正确
  3. Bambu 用户确认已设置 BAMBU_SERIAL、BAMBU_TOKEN、BAMBU_MODEL,且打印机开启开发者模式与仅局域网模式
  4. 确认打印机与运行服务器的机器在同一局域网内
  5. 切片失败时检查 SLICER_TYPE、SLICER_PATH 以及切片器命令的 stderr 输出
  6. 使用 FULU OrcaSlicer-bambulab 时先调用 check_fulu_orca_setup 检查运行时负载与安装命令
  7. macOS 上 FULU CLI 切片可能崩溃或产生无法中断的进程,可改用 SLICER_TYPE=bambustudio 作为已知可行回退
  8. 若探针或切片工具报出可执行文件参数错误,检查是否设置了 MCP_ALLOW_EXECUTABLE_ARG
  9. 确认客户端配置文件位置正确并在修改后重启客户端

使用场景

用自然语言查询打印机状态、温度和打印进度
列出、上传并管理打印机上的 G-code 文件
对 STL 模型执行缩放、旋转、平移、底座延伸等修改
对 STL 进行切片并校验 G-code 温度
在 Bambu Lab 打印机上打印已切片的 3MF 文件
生成 STL 模型的多角度 SVG 可视化
读取 Bambu Studio 的机器、耗材和工艺预设

支持客户端

Claude Desktop完整支持
Claude Code完整支持
Cursor完整支持
Codex完整支持