mcpField
S
Slicewise

Slicewise

本地服务
github.com媒体与设计05 天前更新

关于 Slicewise

Slicewise 是用于操作 Bambu Studio 预设、切片和模型检查的 MCP 服务。它帮助用户评估模型能否打印并核对设置是否生效,但不控制打印机。

主要功能

  1. 01与 GUI 一致的命令行切片
  2. 02展开预设继承链
  3. 03模型可打印性检查
  4. 04测量部件间隙
  5. 05参数说明与故障诊断
  6. 06非破坏性项目编辑

适用场景

  1. 01打印前检查模型
  2. 02核验切片覆盖项和结果
  3. 03查找免组装部件的间隙
  4. 04创建用户预设或支撑修改部件

MCP 相关

向 MCP 客户端提供 16 个 `bambu_` 工具,用于预设管理、切片、模型检查等。它不控制打印机。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"gjlmotea-slicewise-for-bambu-studio": {
"command": "npx",
"args": [
"-y",
"@gjlmotea/slicewise-mcp"
],
"env": {
"BAMBU_MODEL_DIR": "<BAMBU_MODEL_DIR>",
"BAMBU_OUTPUT_DIR": "<BAMBU_OUTPUT_DIR>",
"BAMBU_STUDIO_PATH": "<BAMBU_STUDIO_PATH>",
"BAMBU_DATA_DIR": "<BAMBU_DATA_DIR>",
"BAMBU_SLICE_TIMEOUT_MS": "<BAMBU_SLICE_TIMEOUT_MS>",
"THINGIVERSE_TOKEN": "<THINGIVERSE_TOKEN>"
}
}
}
}
启动命令npx -y @gjlmotea/slicewise-mcp
需要配置的环境变量
BAMBU_MODEL_DIRFolders the model tools may read from, joined with the platform path delimiter (':' on macOS and Linux, ';' on Windows). Model reads are refused when unset
BAMBU_OUTPUT_DIRFolder for sliced and composed 3MF output; also readable by the model tools. Writing tools are refused when unset
BAMBU_STUDIO_PATHBambu Studio executable; resolved from the default install location when unset
BAMBU_DATA_DIRBambu Studio data folder holding system and user presets; resolved per platform when unset
BAMBU_SLICE_TIMEOUT_MSSlicing timeout in milliseconds
THINGIVERSE_TOKEN密钥Thingiverse app token; only the Thingiverse part of model search needs it

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@gjlmotea/slicewise-mcp0.1.0

工具

16

收录的工具列表 · 更新于 5 天前

此工具无需参数。

详细介绍

Slicewise — 面向 Bambu Studio 的打印前决策与审计 MCP 服务

English | 繁體中文

Slicewise:Bambu Studio 打印前检查

https://github.com/user-attachments/assets/76e04c37-36cf-41d4-abff-4d0e62fe6b4f

Slicewise 让 Claude Code、Codex、Gemini CLI 或任何其他 Model Context Protocol 客户端能够使用 Bambu Studio 的预设、切片器和模型检查功能:在打印前判断模型是否会打印失败,决定要更改哪些设置以及原因,然后审计切片结果,查看哪些设置实际生效。

它不会控制打印机。不使用 MQTT、不上传文件、不启动打印。

  • 与 GUI 切片结果一致的命令行切片。 Bambu Studio 的命令行会忽略预设的 inherits,因此从命令行切片内置预设时,会悄无声息地退回内置默认值。Slicewise 会先展开继承链(以及每台打印机的 G-code 模板),然后读取切片后的 3MF,并逐项报告每个覆盖设置是否生效。
  • 切片前检查可打印性。 支持 STL、3MF 和 OBJ(包括 Tinkercad 导出文件):检查超出打印床范围、无法接触打印床的悬空部件、非流形网格、陡峭悬垂、小接触面、高而细的部件、薄壁特征和翘曲风险。
  • 检查部件之间的间隙。 检查打印原位成型机构的最小间隙,帮助你在打印前判断铰链是否会粘连。
  • 参数知识层。 说明设置的作用、单位、合理范围,以及调高或调低设置的影响;支持基于目标的方案(安全、快速、坚固、表面质量、经济)和基于症状的诊断(翘曲、拉丝、大象脚、喷嘴碰撞……)。
  • 非破坏性部件编辑。 创建包含负部件、修改器以及支撑阻挡器/强制器的 Bambu 项目 3MF 文件,完全遵循 Bambu Studio 的存储方式,不涉及几何引擎。
  • 可在 GUI 中显示的用户预设。 仅写入用户配置文件夹;绝不会修改系统预设。

非官方项目。与 Bambu Lab 无关联,也未获其认可或赞助。 工具说明和消息均为英文。bambu_diagnose 和 bambu_plan_settings 也能匹配以中文描述的症状和目标(例如翹邊、省時)。

目录

快速开始

需要 Node.js 22 或更高版本。切片需要在本地安装 Bambu Studio;参数和模型工具无需安装它也能运行。

Claude Code:

claude mcp add slicewise \
  -e BAMBU_MODEL_DIR="$HOME/Desktop/bambu-work" \
  -e BAMBU_OUTPUT_DIR="$HOME/Desktop/bambu-work/out" \
  -- npx -y @gjlmotea/slicewise-mcp

其他客户端(Codex、Gemini CLI、Cursor、Claude Desktop……):

{
  "mcpServers": {
    "slicewise": {
      "command": "npx",
      "args": ["-y", "@gjlmotea/slicewise-mcp"],
      "env": {
        "BAMBU_MODEL_DIR": "/Users/you/Desktop/bambu-work",
        "BAMBU_OUTPUT_DIR": "/Users/you/Desktop/bambu-work/out"
      }
    }
  }
}

然后让 Agent 调用 bambu_get_status:它会显示 Bambu Studio 数据文件夹、是否找到切片器、预设数量、Studio 中当前选定的打印机和耗材,以及模型工具可能读取的文件夹。

macOS 隐私提示。 macOS 限制访问 ~/Desktop、~/Documents 和 ~/Downloads。如果模型工具返回 EPERM,请在“系统设置”中授予 MCP 主机(实际执行文件,例如 claude CLI,而不是 Claude 桌面应用)访问权限并重启它,或者将 BAMBU_MODEL_DIR 指向不受限制的文件夹。

工具

共 16 个工具,名称均以 bambu_ 为前缀。

区域工具功能
参数bambu_plan_settings打印前:设定目标(安全、快速、牢固、表面、经济),并获取按所防止的故障分组的设置;如果提供了模型,还会根据模型几何形状调整设置
bambu_optimize_print_in_place为原位打印部件创建保守的用户流程预设(首层速度较慢、限制外墙速度、减慢悬垂部分的速度;除非另有要求,否则不自动添加裙边)
bambu_describe_parameters参数的含义、单位、范围、调高或调低的代价以及相关设置
bambu_diagnose打印后:根据症状生成按顺序排列的修复建议,每次只更改一项
bambu_resolve_preset展开预设,并显示每个值来自哪一层
bambu_compare_presets比较两个已展开预设之间的差异
bambu_list_presets可选预设(已过滤抽象父预设和 G-code 模板条目)
bambu_save_user_preset写入用户预设,重启后即可在 Studio 中看到
切片bambu_slice展开预设、切片、报告层数、耗时和耗材用量(多色打印时按颜色统计),并审核每一项覆盖设置
模型bambu_inspect_model检查 STL、3MF 或 OBJ 几何信息:三角形数、边界、体积、面积、封闭网格和部件
bambu_check_printability检查尺寸、悬空部件、非流形几何、悬垂、占地面积、长宽比、薄特征和翘曲
bambu_measure_clearance测量 3MF 或 OBJ 中部件之间的最小间隙,并提供补偿建议
bambu_compose_model构建包含负体积、修改器和支撑控制部件的 Bambu 项目 3MF
bambu_inspect_project读取任意 Bambu 项目 3MF 中的对象和部件
搜索bambu_search_models通过官方 API 搜索 Thingiverse;MakerWorld 和 Printables 仅提供搜索链接
状态bambu_get_status数据文件夹、切片器、预设、当前选择和允许的文件夹

为什么展开预设很重要

Bambu Lab 的出厂预设采用四层继承链。叶子预设声明了几十个键,其余键则从上层继承:

0.20mm Standard @BBL X1C  <-  fdm_process_single_0.20  <-  fdm_process_single_common  <-  fdm_process_common

将叶子预设通过 --load-settings 传递给 CLI 时,不会解析 inherits。只有叶子预设自己的键会生效;其他所有设置都会回退到可执行文件的内置默认值,而这些默认值并非 Bambu Lab 的出厂值。在 X1 Carbon 0.4 喷嘴、0.20mm Standard、Bambu PLA Basic 和 20 mm 立方体上测得:

设置原始预设展开后
sparse_infill_density20%(内置默认值)15%(出厂预设)
top_shell_layers45
elefant_foot_compensation00.15
enable_arc_fitting01
brim_width05
打印时间10m 11s8m 45s

这是 bambulab/BambuStudio#1704 的原因(CLI 和 GUI 切片结果不同)。

另外还处理了两个容易踩坑的问题:

  • 打印机 G-code 位于预设之外。 从 Studio 02.07 开始,起始、耗材更换、层更换和结束 G-code 都会在 system/BBL.json 中单独注册为 <preset> template <key> 条目。仅跟随 inherits 最终会得到一个通用起始序列,无法匹配任何 Bambu 打印机。Slicewise 会逐层应用这些模板;在 P2S 0.4 上,生成的 G-code 与 GUI 的逐字节完全一致。
  • CLI 可能会关闭擦料塔。 当所有已加载的耗材预设名称相同时(五个槽位使用不同颜色的 Generic PLA),CLI 会将它们判定为同一卷耗材,并关闭擦料塔。在这种情况下,Slicewise 会传递项目自身的耗材颜色。对于一块四色 P2S 打印板,仅展开预设时,结果为 40.10 g / 2h 6m,且没有擦料塔,G-code 也是通用的;应用模板和颜色后,结果为 43.68 g / 2h 18m,与 GUI 完全一致。

悬空部件检测

一个真实案例:在 Tinkercad 中用方盒搭建的生日蛋糕插牌。腿部止于 z = 50 mm,身体从 z = 51 mm 开始。Bambu Studio 提示“无法在没有支撑的情况下打印悬空对象”,但启用支撑并不是正确的解决办法:支撑会填满 1 mm 的间隙,移除支撑时腿就会断裂。包围盒和悬垂角度看起来都没问题,关键在于连通性。

因此,bambu_check_printability 会:

  1. 按共享顶点将几何体拆分成壳体(也适用于 STL 网格集合);负零件、修改器和支撑阻挡器/强制器不是实体。
  2. 将表面接触或相互穿插的壳体合并为实体。
  3. 使用逐壳体的射线奇偶校验,将被其他壳体完全包围的实体合并起来(对多个重叠壳体组成的整个实体统计交点时,奇数 + 奇数 = 偶数,会错误地判定为“外部”)。
  4. 报告每个未接触热床的实体:其抬升高度、可能应与其连接的实体(优先列出已接触热床的实体)以及间隙。

2 mm 或更小的间隙会被标记为可能的建模接缝:应通过增加一些重叠来修复模型,而不是添加支撑。这只是经验法则,并非绝对准确:捕获球、铰链等原位打印的预留间隙也会落在同一范围内,因此报告会要求你确认设计意图。更宽的间隙属于需要支撑的真实悬垂。

非破坏性部件编辑

Bambu Studio 的负零件、修改器和支撑控制并非网格编辑。它们是在 3MF 中带有 subtype 标签的额外部件:

<part id="2" subtype="negative_part">
  <metadata key="name" value="hole"/>
</part>

因此,bambu_compose_model 不需要布尔运算引擎,也不需要 GUI 自动化。它只接受五种子类型,取自 Bambu Studio 源码中的 ModelVolume::type_to_string():normal_part、negative_part、modifier_part、support_blocker、support_enforcer。此列表有意设为封闭列表。Studio 的读取器会静默地将未知字符串视为实体零件,因此一个字母拼写错误就会把“将其切除”变成“将其作为实体添加”,且不会报错。使用一个顶部带有相同实体的 20 mm 立方体进行测量:不添加部件时,高 20.00 mm;negative_part 时,高 15.00 mm;normal_part 时,高 25.00 mm。

配置

变量默认值含义
BAMBU_MODEL_DIR未设置模型工具可以读取的文件夹,使用平台路径分隔符连接。未设置时,模型工具会拒绝所有路径
BAMBU_OUTPUT_DIR未设置切片和合成后的 3MF 文件的存放位置(也可读取)。未设置时,切片和合成操作会拒绝运行
BAMBU_STUDIO_PATH依平台而定Bambu Studio 可执行文件
BAMBU_DATA_DIR依平台而定Bambu Studio 数据文件夹(系统和用户预设)
BAMBU_SLICE_TIMEOUT_MS300000单次切片的超时时间
THINGIVERSE_TOKEN未设置Thingiverse 应用令牌;没有令牌时,搜索结果只返回链接
平台数据文件夹可执行文件
macOS~/Library/Application Support/BambuStudio/Applications/BambuStudio.app/Contents/MacOS/BambuStudio
Windows%APPDATA%\BambuStudio%ProgramFiles%\Bambu Studio\bambu-studio.exe
Linux~/.config/BambuStudio~/.local/bin/bambu-studio

边界

  • 不控制打印机。 实体设备的操作不可逆且可能很危险,因此我们有意将其排除在范围之外。如有需要,请搭配使用打印机控制 MCP。
  • 仅读取允许的文件夹。 拒绝访问 BAMBU_MODEL_DIR(和输出文件夹)以外的路径,包括 .. 路径遍历和前缀相同的相邻路径(/models-evil 不会通过对 /models 的检查)。
  • 仅写入用户配置文件夹和输出文件夹。 绝不写入系统预设;如果存在同名用户预设,也绝不会在不提示的情况下覆盖。
  • 不把浏览器自动化伪装成 API。 MakerWorld 和 Printables 没有官方公共 API,因此这里只提供搜索链接,不提供抓取的结果。
  • 不猜测。 如果症状未知,bambu_diagnose 会明确说明,并列出它能识别的症状,因为错误猜测可能让情况变得更糟。
  • 不进行破坏性几何操作。 布尔运算的结果交由切片器处理;计算新网格(合并、切割、浮雕文字)应使用 Blender 或 OpenSCAD。
  • 测量间隙需要零件边界。 bambu_measure_clearance 可读取 3MF 和 OBJ;STL 是一整片未分割的三角形集合,因此该工具会说明这一点,而不是返回空报告。
  • 仅读取现有项目,不重写。 bambu_inspect_project 可读取任何 Bambu 项目 3MF;bambu_compose_model 始终会写入新文件。

支持矩阵

状态
macOS + Bambu Studio 02.07已在真实硬件上验证,包括 GUI 对比和端到端切片
原厂预设已使用 X1C、P1S 和 P2S 的 0.4 喷嘴预设进行测试
Windows、Linux已实现默认路径,但尚未在真实安装环境中验证
多喷嘴打印机(H2D…)尚未验证;每个喷嘴的设置均为数组,因此覆盖前请使用 bambu_resolve_preset 检查

欢迎提交 Bug 报告,请注明你的 OS、Studio 版本和打印机型号。

开发

pnpm install
pnpm verify   # typecheck, 226 tests, build, stdio smoke test

冒烟测试使用 fixture 数据文件夹,因此无需 Bambu Studio 即可运行(包括在 CI 中)。node scripts/verify-real-slicer.mjs 会端到端运行真实切片器,并且有意不纳入 verify。

src/
  domain/        pure logic: preset flattening, parameter knowledge, slicing audit, model geometry, 3MF
  ports/         PresetStore, Slicer, ModelCatalog
  adapters/      Bambu Studio CLI, preset store, Thingiverse, hand-off catalogs
  application/   BambuService
  server/        tool registration and schemas

ZIP 读取器和写入器、STL 和 OBJ 解析器以及 3MF 构建器均为手写;运行时依赖只有 MCP SDK 和 zod。

更新关键基准

src/domain/parameters/known-keys.ts 是生成文件:其中包含扁平化 Bambu Studio 配置的 568 个设置键,用于检查覆盖项中的拼写错误(Bambu Studio 会静默忽略未知键)。当 Bambu Studio 版本新增参数时,请重新生成:

node scripts/verify-real-slicer.mjs   # writes a .gcode.3mf
# take the key list from Metadata/project_settings.config in that file and overwrite known-keys.ts

它并未包含每种打印机的所有键:多喷嘴型号和其他型号可能有额外键,因此未知键会作为警告报告,而不是错误。

许可证和商标

MIT。Bambu Lab、Bambu Studio 和 MakerWorld 是 Bambu Lab 的商标。Thingiverse 和 Printables 是其各自所有者的商标。本项目与它们均无关联,也未获得它们的认可。本项目会将 Bambu Studio 的命令行界面作为独立进程运行,不包含任何 Bambu Studio(AGPL-3.0)代码。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。