这是一个允许MCP用户连接到这些3D打印机API端点的服务器:
此服务器是一个模型上下文协议(MCP)服务器,用于连接Claude与3D打印机管理系统。它允许Claude通过各种打印机管理系统的API(如OctoPrint、Klipper(通过Moonraker)、Duet、Repetier和Bambu Labs打印机)与3D打印机进行交互。
关于资源使用说明:此MCP服务器包括高级3D模型操作功能,在处理大型STL文件时可能会占用大量内存。请参阅“限制和注意事项”部分以获取有关内存使用和性能的重要信息。
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
{
"mcpServers": {
"3dprint": {
"command": "mcp-3d-printer-server",
"env": {
"API_KEY": "your_api_key_here",
"PRINTER_HOST": "your_printer_ip",
"PRINTER_TYPE": "octoprint"
}
}
}
}
{
"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"
}
}
}
}
OctoPrint是一款流行的3D打印机网络界面。它提供了控制打印机的REST API。
Klipper是一款适用于3D打印机的固件,与Moonraker API服务器一起工作。
Duet是3D打印机的控制板,有自己的网络界面(DuetWebControl)。
Repetier-Server是3D打印机的主机软件。
Bambu Lab打印机使用MQTT进行状态和控制,并使用FTP进行文件操作。
要连接到您的Bambu Lab打印机,您需要两样东西:
打印机序列号:
访问令牌:
注意:如果您的打印机不在同一本地网络上或找不到访问令牌,您可能需要更新打印机的固件到最新版本以启用LAN模式。
Prusa Connect是Prusa自己的基于云的解决方案,用于管理他们的打印机。
Creality Cloud是Creality为其打印机提供的管理系统。
内存使用警告:以下STL操作工具加载整个3D模型到内存中。对于大型或复杂的STL文件(>10MB),这些操作可能会消耗大量内存。在MCP环境中使用这些工具时,请注意内存限制。
获取STL文件的详细信息,包括尺寸、顶点数和边界框。
{
"stl_path": "/path/to/file.stl"
}
扩展STL文件的底座指定的量。
{
"stl_path": "/path/to/file.stl",
"extension_inches": 2
}
沿特定轴均匀或非均匀缩放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
}
绕特定轴旋转STL模型(以度为单位)。
{
"stl_path": "/path/to/file.stl",
"rotate_x": 45,
"rotate_y": 0,
"rotate_z": 90
}
沿特定轴移动STL模型(以毫米为单位)。
{
"stl_path": "/path/to/file.stl",
"translate_x": 10,
"translate_y": 5,
"translate_z": 0
}
对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
}
从多个角度(正面、侧面、顶部和等角视图)生成STL文件的SVG可视化图。
{
"stl_path": "/path/to/file.stl",
"width": 400,
"height": 400
}
切片STL文件以生成G代码。
{
"stl_path": "/path/to/file.stl",
"slicer_type": "prusaslicer",
"slicer_path": "/path/to/prusaslicer",
"slicer_profile": "/path/to/profile.ini"
}
确认G代码文件中的温度设置。
{
"gcode_path": "/path/to/file.gcode",
"extruder_temp": 200,
"bed_temp": 60
}
处理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"
}
获取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"
}
列出打印机上可用的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}
将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
}
开始打印已经存在于打印机上的文件。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"filename": "my_print.gcode"
}
取消当前打印作业。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY"
}
设置打印机组件的温度。
{
"host": "192.168.1.100",
"type": "octoprint",
"api_key": "YOUR_API_KEY",
"component": "extruder",
"temperature": 200
}
printer://{host}/status - 3D打印机的当前状态printer://{host}/files - 打印机上可用的文件列表printer://{host}/file/{filename} - 打印机上特定文件的内容这里是一些示例命令,您可以连接MCP服务器后给Claude:
由于Bambu Lab打印机API的性质,存在一些限制:
启动打印:启动打印需要3MF项目文件路径、G代码文件名、打印名称和MD5哈希值。此服务器中的简化API尚未完全支持这一点。
温度控制:Bambu API不提供直接设置