MCP 3D Printer Server
镜子 (jìng zi)
MCP-Mirror
README
MCP 3D 打印机服务器
<a href="https://glama.ai/mcp/servers/7f6v2enbgk"> <img width="380" height="200" src="https://glama.ai/mcp/servers/7f6v2enbgk/badge" alt="3D Printer Server MCP server" /> </a>
描述
这是一个服务器,允许 MCP 用户连接到以下 3D 打印机的 API 端点:
- OctoPrint
- Klipper (Moonraker)
- Duet
- Repetier
- Bambu Labs
- Prusa Connect
- Creality/Ender
此服务器是一个模型上下文协议 (MCP) 服务器,用于将 Claude 与 3D 打印机管理系统连接。它允许 Claude 通过各种打印机管理系统(如 OctoPrint、Klipper(通过 Moonraker)、Duet、Repetier 和 Bambu Labs 打印机)的 API 与 3D 打印机交互。
资源使用注意事项:此 MCP 服务器包含高级 3D 模型操作功能,在处理大型 STL 文件时可能会占用大量内存。请参阅“限制和注意事项”部分,了解有关内存使用和性能的重要信息。
功能
- 获取打印机状态(温度、打印进度等)
- 列出打印机上的文件
- 将 G 代码文件上传到打印机
- 启动、取消和监控打印作业
- 设置打印机温度
- 高级 STL 文件操作:
- 扩展底座以获得更好的附着力
- 均匀地或沿特定轴缩放模型
- 绕任意轴旋转模型
- 平移(移动)模型
- 修改 STL 文件的特定部分(顶部、底部、中心或自定义)
- 具有详细模型信息的全面 STL 分析
- 生成 STL 文件的多角度 SVG 可视化
- 长时间运行的实时进度报告
- 具有详细诊断信息的错误处理
- 切片 STL 文件以生成 G 代码
- 确认 G 代码文件中的温度设置
- 从 STL 修改到打印的完整端到端工作流程
安装
前提条件
- Node.js 18 或更高版本
- npm 或 yarn
从 npm 安装
npm install -g mcp-3d-printer-server
从源代码安装
git clone https://github.com/yourusername/mcp-3d-printer-server.git
cd mcp-3d-printer-server
npm install
npm link # 使命令在全局可用
配置
在您运行服务器的目录中创建一个 .env
文件或设置环境变量:
# 与您的打印机管理系统进行身份验证所必需
API_KEY=your_api_key_here
# 默认打印机连接设置
PRINTER_HOST=localhost
PRINTER_PORT=80
PRINTER_TYPE=octoprint # 选项:octoprint、klipper、duet、repetier、bambu
# 可选:临时文件目录
TEMP_DIR=/path/to/temp/dir
# Bambu Labs 特定配置
BAMBU_SERIAL=your_printer_serial
BAMBU_TOKEN=your_access_token
# 切片器配置
SLICER_TYPE=prusaslicer # 选项:prusaslicer、cura、slic3r
SLICER_PATH=/path/to/slicer/executable
SLICER_PROFILE=/path/to/slicer/profile
与 Claude Desktop 一起使用
- 编辑您的 Claude Desktop 配置文件:
{
"mcpServers": {
"3dprint": {
"command": "mcp-3d-printer-server",
"env": {
"API_KEY": "your_api_key_here",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "octoprint"
}
}
}
}
- 对于 Bambu Labs 打印机:
{
"mcpServers": {
"3dprint": {
"command": "mcp-3d-printer-server",
"env": {
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "bambu",
"BAMBU_SERIAL": "your_printer_serial",
"BAMBU_TOKEN": "your_access_token"
}
}
}
}
- 重新启动 Claude Desktop
- 通过 Claude 连接到您的打印机
支持的打印机管理系统
OctoPrint
OctoPrint 是一个流行的 3D 打印机 Web 界面。它提供了一个 REST API 来控制打印机。
- 默认端口:80 (http) 或 443 (https)
- 身份验证:需要 API 密钥
Klipper(通过 Moonraker)
Klipper 是一个 3D 打印机固件,与 Moonraker API 服务器一起工作。
- 默认端口:7125
- 身份验证:取决于您的 Moonraker 配置
Duet
Duet 是一个 3D 打印机控制板,具有自己的 Web 界面 (DuetWebControl)。
- 默认端口:80 (http) 或 443 (https)
- 身份验证:取决于您的 Duet 配置
Repetier
Repetier-Server 是一个 3D 打印机主机软件。
- 默认端口:3344
- 身份验证:需要 API 密钥
Bambu Labs
Bambu Lab 打印机使用 MQTT 进行状态和控制,使用 FTP 进行文件操作。
- 身份验证:需要序列号和访问令牌
- 要求:打印机必须在同一网络上或启用云连接
- 兼容:X1C、P1S、P1P、A1 和其他 Bambu Lab 打印机
查找您的 Bambu 打印机的序列号和访问令牌
要连接到您的 Bambu Lab 打印机,您需要两件事:
-
打印机序列号:
- 在打印机的背面或底部寻找带有序列号的贴纸(通常以“01P”或“01A”开头,后跟数字/字母)
- 或者,打开 Bambu Studio,连接到您的打印机,转到设备 > 设备管理,然后查看您的打印机信息
-
访问令牌:
- 访问令牌是直接连接到您的打印机所需的安全代码
- 对于 P1 系列打印机:转到触摸屏,选择设置 > 网络 > 局域网模式,您将看到访问代码
- 对于 X1 系列打印机:转到触摸屏,选择设置 > 网络 > 局域网模式,然后启用局域网模式以查看访问代码
- 对于 A1 Mini:使用 Bambu Handy 应用程序连接到您的打印机,然后转到设置 > 网络 > 局域网模式
注意:如果您的打印机不在同一本地网络上或者您找不到访问令牌,您可能需要将打印机的固件更新到最新版本以启用局域网模式。
Prusa Connect
Prusa Connect 是 Prusa 自己的基于云的解决方案,用于管理他们的打印机。
- 默认端口:80 (http) 或 443 (https)
- 身份验证:需要 API 密钥
- 兼容:Prusa MK4、Prusa Mini、Prusa XL 和其他带有 Prusa Connect 的 Prusa 打印机
设置 Prusa Connect
- 确保您的 Prusa 打印机已更新到最新固件
- 将您的打印机连接到您的 Wi-Fi 网络
- 创建一个 Prusa Connect 帐户并注册您的打印机
- 从 Prusa Connect Web 界面中的设置 > API 访问生成 API 密钥
Creality Cloud
Creality Cloud 是 Creality 打印机的管理系统。
- 默认端口:80 (http) 或 443 (https)
- 身份验证:需要 Bearer 令牌
- 兼容:Ender 系列、CR 系列和其他具有网络功能的 Creality 打印机
设置 Creality Cloud
- 在您的移动设备上安装 Creality Cloud 应用程序
- 创建一个帐户并添加您的打印机
- 为您的打印机启用本地网络访问
- 从 Creality Cloud 应用程序中的设置 > 开发者选项生成令牌
可用工具
STL 操作工具
内存使用警告:以下 STL 操作工具将整个 3D 模型加载到内存中。对于大型或复杂的 STL 文件(>10MB),这些操作可能会消耗大量内存。在 MCP 环境中使用这些工具时,请注意内存限制。
get_stl_info
获取有关 STL 文件的详细信息,包括尺寸、顶点计数和边界框。
{
"stl_path": "/path/to/file.stl"
}
extend_stl_base
将 STL 文件的底座扩展指定的量。
{
"stl_path": "/path/to/file.stl",
"extension_inches": 2
}
scale_stl
均匀地或沿特定轴缩放 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
}
modify_stl_section
将特定变换应用于 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_visualization
从多个角度(正面、侧面、顶部和等距视图)生成 STL 文件的 SVG 可视化。
{
"stl_path": "/path/to/file.stl",
"width": 400,
"height": 400
}
slice_stl
切片 STL 文件以生成 G 代码。
{
"stl_path": "/path/to/file.stl",
"slicer_type": "prusaslicer",
"slicer_path": "/path/to/prusaslicer",
"slicer_profile": "/path/to/profile.ini"
}
confirm_temperatures
确认 G 代码文件中的温度设置。
{
"gcode_path": "/path/to/file.gcode",
"extruder_temp": 200,
"bed_temp": 60
}
process_and_print_stl
处理 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"
}
打印机控制工具
get_printer_status
获取 3D 打印机的当前状态。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}
对于 Bambu 打印机:
{
"host": "192.168.1.100",
"type": "bambu",
"bambu_serial": "YOUR_PRINTER_SERIAL",
"bambu_token": "YOUR_ACCESS_TOKEN"
}
list_printer_files
列出打印机上可用的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}
upload_gcode
将 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
}
start_print
开始打印已在打印机上的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"filename": "my_print.gcode"
}
cancel_print
取消当前的打印作业。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}
set_printer_temperature
设置打印机组件的温度。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"component": "extruder",
"temperature": 200
}
可用资源
printer://{host}/status
- 3D 打印机的当前状态printer://{host}/files
- 3D 打印机上可用的文件列表printer://{host}/file/{filename}
- 3D 打印机上特定文件的内容
Claude 的示例命令
以下是一些在连接 MCP 服务器后可以给 Claude 的示例命令:
打印机控制
- "我的 3D 打印机的当前状态是什么?"
- "显示我的打印机上的文件列表。"
- "将此 G 代码上传到我的打印机:[G 代码内容]"
- "开始打印名为 'benchy.gcode' 的文件。"
- "取消当前的打印作业。"
- "将挤出机温度设置为 200°C。"
- "将热床温度设置为 60°C。"
STL 操作和打印
- "获取此 STL 文件并将底座扩展 2 英寸,然后发送到切片器并在我的打印机中排队。"
- "将 model.stl 的底座扩展 1.5 英寸。"
- "将此 STL 文件均匀缩放 150%。"
- "缩放 model.stl 使其宽度是原来的两倍,但保持相同的高度。"
- "将此模型绕 Z 轴旋转 90 度。"
- "将此 STL 模型向上移动 5 毫米以在下方创建一个间隙。"
- "你能否修改此模型的顶部,使其放大 20%?"
- "分析此 STL 文件并告诉我它的尺寸和详细信息。"
- "生成此 STL 文件的可视化,以便我可以查看它的外观。"
- "从不同角度创建我的模型 SVG 可视化。"
- "使此模型的底座更宽,而不改变其高度。"
- "使用 PrusaSlicer 切片修改后的 STL 文件。"
- "确认 G 代码中的温度对于挤出机为 200°C,对于热床为 60°C。"
- "处理此 STL 文件,使底座长 2 英寸,对其进行切片,然后开始打印,但首先确认温度。"
Bambu Lab 打印机限制
由于 Bambu Lab 打印机 API 的性质,存在一些限制:
-
开始打印:开始打印需要 3MF 项目文件路径、gcode 文件名、打印名称和 MD5 哈希。此服务器中的简化 API 尚未完全支持此功能。
-
温度控制:Bambu API 不提供直接设置温度的方法。这将需要自定义 G 代码命令。
-
文件管理:文件必须上传到打印机上的“gcodes”目录。
限制和注意事项
内存使用
- 大型 STL 文件:处理大型或复杂的 STL 文件可能会消耗大量内存。在操作期间,整个 STL 几何体都会加载到内存中。
- 多个操作:按顺序运行多个 STL 操作(尤其是在大型文件上)可能会导致内存累积,如果垃圾回收跟不上。
- MCP 环境:由于它作为 MCP 服务器运行,请注意 Claude 的 MCP 环境具有内存限制。对非常大的 STL 文件进行复杂操作可能会导致内存不足问题。
STL 操作限制
- 部分修改:特定于部分的修改功能最适用于更简单的几何体。复杂或非流形网格可能会产生意外结果。
- 底座扩展:底座扩展算法通过在模型下方添加新的几何体来工作。对于具有复杂底面的模型,结果可能并不完美。
- 错误处理:虽然我们添加了强大的错误处理,但复杂 STL 文件中的某些边缘情况仍可能导致问题。
可视化限制
- SVG 表示:SVG 可视化是简化的示意图表示,而不是真正的 3D 渲染。
- 复杂模型:对于非常复杂的模型,可视化可能无法准确表示所有细节。
性能注意事项
- 切片操作:外部切片器进程可能会占用大量 CPU,并且对于复杂模型可能需要相当长的时间。
- 进度报告:对于大型文件,进度更新可能会在某些处理阶段停滞。
测试建议
- 从较小的 STL 文件(< 10MB)开始测试功能
- 在处理大型文件时监控内存使用情况
- 在尝试复杂几何体之前,先测试简单几何体的修改
- 考虑在具有至少 4GB 可用 RAM 的系统上运行以进行更大的操作
徽章
徽章 | 描述 |
---|---|
npm 上软件包的当前版本 | |
此项目已获得 GPL-2.0 许可 | |
此项目是用 TypeScript 4.9+ 编写的 | |
此项目正在积极维护 | |
我们欢迎通过 Pull Requests 贡献 | |
需要 Node.js 18.0.0 或更高版本 | |
每月从 npm 下载的次数 | |
此项目收到的 GitHub 星星数 |
许可证
GPL-2.0
推荐服务器
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

Nefino MCP Server
为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。
Vectorize
将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。
Mathematica Documentation MCP server
一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。
kb-mcp-server
一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。
Research MCP Server
这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

Cryo MCP Server
一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。