MCP 3D Printer Server

by DMontgomery40
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Allows Claude to connect with Bambu Lab 3D printers to get printer status, manage files, upload G-code files, and monitor printing through their MQTT and FTP interfaces. Compatible with X1C, P1S, P1P, A1, and other Bambu Lab printers.

  • Allows Claude to connect with Creality/Ender 3D printers through the Creality Cloud management system to control and monitor Ender series, CR series, and other Creality printers with network capabilities.

  • Allows Claude to interact with OctoPrint-managed 3D printers to get printer status, list and upload files, start/cancel print jobs, and set temperatures through OctoPrint's REST API.

MCP 3D 프린터 서버

  • Bambu .3mf 인쇄: Bambu Lab 프린터 전용 print_3mf 도구를 추가했습니다. 이 도구는 .3mf 파일을 업로드하고 OpenBambuAPI 사양에 따라 MQTT를 통해 인쇄 명령을 직접 전송합니다.
  • 직접 MQTT 통신(Bambu): 명령에 대해 bambu-js 에만 의존하는 대신 직접 MQTT(TLS 포트 8883)를 사용하도록 Bambu 명령 처리( print_3mf , cancelJob )를 리팩토링했습니다.
  • .3mf 파일 구문 분석: .3mf 파일 내에서 메타데이터와 Bambu 특정 슬라이서 설정( project_settings.config 에서)을 읽는 파서( src/3mf_parser.ts )를 구현했습니다.
  • Bambu 사전 설정 리소스: BAMBU_STUDIO_CONFIG_PATH 가 설정된 경우 Bambu Studio 사전 설정 파일( machine , filament , process )을 MCP 리소스(예: preset://bambu/process/MyPreset )로 읽을 수 있는 지원이 추가되었습니다.
  • OrcaSlicer 통합: slice_stl 도구에 대한 명령줄 인터페이스를 통해 OrcaSlicer를 사용할 수 있도록 지원이 추가되었습니다.
  • 새로운 STL 조작 도구: three.js 사용하여 기본 모델을 준비할 수 있는 merge_vertices , center_model , lay_flat 도구가 추가되었습니다.
  • 구성 업데이트: 사전 설정 로딩을 위한 BAMBU_STUDIO_CONFIG_PATH 환경 변수가 추가되었습니다.
  • FTP 사용 참고 사항: Bambu의 파일 작업은 현재 bambu-js 를 통해 보안되지 않은 FTP를 사용한다는 사실이 문서에 명시되어 있습니다.
  • 기능 동등성 달성: OctoPrint, Klipper, Duet, Repetier, Prusa Connect, Creality Cloud의 기능(상태 세부 정보, 파일 작업, 가능한 경우 직접 인쇄, 사전 설정 처리)을 Bambu 구현을 위해 계획된 견고성 수준까지 끌어올립니다.
  • Bambu MQTT 상태 전체 구현: Bambu가 MQTT 보고서를 구독하고 실시간 상태를 유지할 수 있도록 getStatus 리팩토링합니다.
  • 강력한 AMS 매핑을 구현합니다. 플레이스홀더 논리를 교체하고 .3mf 슬라이서 구성이나 MQTT 인쇄 명령에 대한 사용자 재정의에서 AMS 매핑을 올바르게 구문 분석하여 사용합니다.
  • .3mf 인쇄 재정의 구현: MQTT/G 코드를 통해 가능한 경우 사용자가 제공한 재정의(예: 보정 플래그) 및 일반적인 슬라이서 설정을 처리하기 위해 print_3mf 도구에 로직을 추가합니다.
  • MD5 해시 계산: MQTT 인쇄 명령에 .3mf 파일의 MD5 해시를 계산하고 포함하는 논리를 추가합니다(선택 사항이지만 프로토콜에서는 권장).
  • Bambu 파일 작업 리팩토링: 가능하거나 안정적이라면 bambu-js FTP 작업( getFiles , uploadFile )을 직접 MQTT 메서드로 바꾸는 것을 조사하거나, bambu-js 에 FTPS 지원을 기여합니다.
  • 사전 설정 검색 논리 추가: 사전 설정 리소스 목록을 개선합니다(현재는 잠재적인 파일 이름을 기반으로 나열하지만, 인덱스 파일이 있으면 구문 분석할 수 있음).
  • .3mf 지원 확장: 해당되는 경우 다른 프린터 유형에 대한 .3mf 인쇄 지원을 추가합니다.
  • 오류 처리 및 보고: MQTT 오류 처리 및 인쇄 진행률/완료 보고를 개선합니다.
  • 테스트: 모든 새로운 Bambu 기능에 대해 철저한 런타임 테스트를 수행합니다.

목차

설명

이는 MCP 사용자가 다음 3D 프린터의 API 엔드포인트에 연결할 수 있도록 해주는 서버입니다.

  • 옥토프린트
  • 클리퍼(문레이커)
  • 이중주
  • 레피티에
  • 뱀부 랩스
  • 프루사 커넥트
  • 크리리얼리티/엔더

이 서버는 Claude와 3D 프린터 관리 시스템을 연결하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. MCP는 OctoPrint, Klipper(Moonraker를 통해 제공), Duet, Repetier, Bambu Labs 프린터 등 다양한 프린터 관리 시스템의 API를 통해 3D 프린터와 상호 작용할 수 있습니다.

리소스 사용 관련 참고 사항 : 이 MCP 서버에는 대용량 STL 파일 작업 시 메모리 사용량이 증가할 수 있는 고급 3D 모델 조작 기능이 포함되어 있습니다. 메모리 사용 및 성능에 대한 중요 정보는 "제한 사항 및 고려 사항" 섹션을 참조하십시오.

특징

  • 프린터 상태(온도, 인쇄 진행률 등)를 가져옵니다.
  • 프린터에 있는 파일 나열
  • G-코드 파일을 프린터에 업로드
  • 인쇄 작업 시작, 취소 및 모니터링
  • 프린터 온도 설정
  • 고급 STL 파일 조작:
    • 더 나은 접착력을 위해 베이스를 확장하세요
    • 모델을 균일하게 또는 특정 축을 따라 확장
    • 모든 축을 중심으로 모델 회전
    • 모델 번역(이동)
    • STL 파일의 특정 섹션(상단, 하단, 중앙 또는 사용자 정의)을 수정합니다.
  • 자세한 모델 정보를 포함한 포괄적인 STL 분석
  • STL 파일의 다중 각도 SVG 시각화 생성
  • 장기 작업에 대한 실시간 진행 상황 보고
  • 자세한 진단을 통한 오류 처리
  • STL 파일을 슬라이스하여 G 코드 생성
  • G-코드 파일에서 온도 설정 확인
  • STL 수정부터 인쇄까지 완벽한 엔드투엔드 워크플로
  • Bambu Lab 프린터에서 .3mf 파일을 직접 인쇄합니다(MQTT 명령을 통해)
  • Bambu Studio 사전 설정 파일(프린터, 필라멘트, 프로세스)을 리소스로 읽습니다.

설치

필수 조건

  • Node.js 18 이상
  • npm 또는 yarn

npm에서 설치

지엑스피1

소스에서 설치

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를 추가하는 방법의 개념적인 예입니다(특정 명령은 슬라이서, 종속성 및 현재 Alpine 패키지에 따라 다를 수 있음).

# ... other Dockerfile commands ... # Example: Install PrusaSlicer or OrcaSlicer (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 ). 또한 .env 파일이나 docker-compose.yml 파일의 SLICER_PATH 환경 변수가 컨테이너 내부의 올바른 경로(예: /usr/local/bin/orcaslicer )를 가리키는지 확인해야 합니다. SLICER_TYPEorcaslicer 로 설정합니다.

특정 슬라이서를 기본으로 포함하지 못해 죄송합니다. 하지만 다양한 슬라이서(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 # Slicer configuration (for slice_stl tool) SLICER_TYPE=prusaslicer # Options: prusaslicer, cura, slic3r, orcaslicer SLICER_PATH=/path/to/slicer/executable SLICER_PROFILE=/path/to/slicer/profile # 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=

Claude Desktop과 함께 사용

  1. Claude Desktop 구성 파일을 편집하세요.
{ "mcpServers": { "3dprint": { "command": "mcp-3d-printer-server", "env": { "API_KEY": "your_api_key_here", "PRINTER_HOST": "your_printer_ip", "PRINTER_TYPE": "octoprint" } } } }
  1. 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" } } } }
  1. Claude Desktop을 다시 시작하세요
  2. Claude를 통해 프린터에 연결하세요

지원되는 프린터 관리 시스템

옥토프린트

OctoPrint는 3D 프린터용 인기 웹 인터페이스입니다. 프린터 제어를 위한 REST API를 제공합니다.

  • 기본 포트: 80(http) 또는 443(https)
  • 인증: API 키가 필요합니다

클리퍼(Moonraker를 통해)

Klipper는 Moonraker API 서버와 함께 작동하는 3D 프린터용 펌웨어입니다.

  • 기본 포트: 7125
  • 인증: Moonraker 구성에 따라 다릅니다.

이중주

Duet은 자체 웹 인터페이스(DuetWebControl)를 갖춘 3D 프린터용 제어판입니다.

  • 기본 포트: 80(http) 또는 443(https)
  • 인증: Duet 구성에 따라 다릅니다.

레피티에

Repetier-Server는 3D 프린터용 호스트 소프트웨어입니다.

  • 기본 포트: 3344
  • 인증: API 키가 필요합니다

뱀부 랩스

Bambu Lab 프린터는 상태 및 제어를 위해 MQTT를 사용하고 파일 작업에는 FTP를 사용합니다.

  • 인증: 일련 번호 및 액세스 토큰이 필요합니다( BAMBU_SERIALBAMBU_TOKEN 설정)
  • 요구 사항: 프린터는 동일한 네트워크에 있어야 하거나 클라우드 연결이 활성화되어야 합니다.
  • 호환 가능: X1C, P1S, P1P, A1 및 기타 Bambu Lab 프린터

Bambu 프린터의 일련 번호 및 액세스 토큰 찾기

Bambu Lab 프린터에 연결하려면 다음 두 가지가 필요합니다.

  1. 프린터 일련번호 :
    • 프린터 뒷면이나 바닥에서 일련 번호가 적힌 스티커를 찾아보세요(일반적으로 "01P" 또는 "01A"로 시작하고 그 뒤에 숫자/문자가 붙습니다)
    • 또는 Bambu Studio를 열고 프린터에 연결한 다음 장치 > 장치 관리로 이동하여 프린터 정보를 확인하세요.
  2. 액세스 토큰 :
    • 액세스 토큰은 프린터에 직접 연결하는 데 필요한 보안 코드입니다.
    • P1 시리즈 프린터의 경우: 터치스크린으로 이동하여 설정 > 네트워크 > LAN 모드를 선택하면 액세스 코드가 표시됩니다.
    • X1 시리즈 프린터의 경우: 터치스크린으로 이동하여 설정 > 네트워크 > LAN 모드를 선택하고 LAN 모드를 활성화하여 액세스 코드를 확인하세요.
    • A1 Mini의 경우: Bambu Handy 앱을 사용하여 프린터에 연결한 다음 설정 > 네트워크 > LAN 모드로 이동합니다.

참고 : 프린터가 동일한 로컬 네트워크에 없거나 액세스 토큰을 찾을 수 없는 경우 LAN 모드를 활성화하려면 프린터 펌웨어를 최신 버전으로 업데이트해야 할 수 있습니다.

Bambu 커뮤니케이션 노트(MQTT 및 FTP)

  • MQTT: 이 서버는 커뮤니티 조사 결과(예: OpenBambuAPI )를 바탕으로 로컬 MQTT 프로토콜(포트 8883, TLS)을 사용하여 인쇄 시작 및 작업 취소와 같은 명령을 전송합니다.
  • FTP: 파일 목록 작성 및 업로드는 현재 프린터에서 실행되는 FTP 서버( bambu-js 라이브러리 도우미를 통해)에 의존합니다. 참고: 이 FTP 연결은 현재 라이브러리 제한에 따라 보안되지 않을 수 있습니다(일반 FTP) . 네트워크 보안에 유의하여 사용하세요.

프루사 커넥트

Prusa Connect는 Prusa가 프린터를 관리하기 위해 개발한 클라우드 기반 솔루션입니다.

  • 기본 포트: 80(http) 또는 443(https)
  • 인증: API 키가 필요합니다
  • 호환 가능: Prusa MK4, Prusa Mini, Prusa XL 및 Prusa Connect가 있는 기타 Prusa 프린터

Prusa Connect 설정

  1. Prusa 프린터가 최신 펌웨어로 업데이트되었는지 확인하세요.
  2. 프린터를 Wi-Fi 네트워크에 연결하세요
  3. Prusa Connect 계정을 만들고 프린터를 등록하세요
  4. 설정 > API 액세스에서 Prusa Connect 웹 인터페이스에서 API 키를 생성합니다.

크리얼리티 클라우드

Creality Cloud는 Creality의 프린터 관리 시스템입니다.

  • 기본 포트: 80(http) 또는 443(https)
  • 인증: 베어러 토큰이 필요합니다.
  • 호환 가능: Ender 시리즈, CR 시리즈 및 네트워크 기능이 있는 기타 Creality 프린터

Creality Cloud 설정

  1. 모바일 기기에 Creality Cloud 앱을 설치하세요
  2. 계정을 만들고 프린터를 추가하세요
  3. 프린터에 대한 로컬 네트워크 액세스를 활성화하세요
  4. 설정 > 개발자 옵션에서 Creality Cloud 앱에서 토큰을 생성합니다.

사용 가능한 도구

STL 조작 도구

메모리 사용량 경고 : 다음 STL 조작 도구는 전체 3D 모델을 메모리에 로드합니다. 10MB 이상의 크고 복잡한 STL 파일의 경우 이러한 작업은 상당한 메모리를 소모할 수 있습니다. MCP 환경에서 이러한 도구를 사용할 때는 메모리 제약에 유의하십시오.

get_stl_info

크기, 정점 수, 경계 상자 등 STL 파일에 대한 자세한 정보를 얻으세요.

{ "stl_path": "/path/to/file.stl" }

stl_base 확장

STL 파일의 기본을 지정된 양만큼 확장합니다.

{ "stl_path": "/path/to/file.stl", "extension_inches": 2 }

스케일_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 }

회전_stl

STL 모델을 특정 축(도)을 중심으로 회전합니다.

{ "stl_path": "/path/to/file.stl", "rotate_x": 45, "rotate_y": 0, "rotate_z": 90 }

번역_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" }

평평하게 놓다

모델의 가장 큰 평면(이미 위나 아래를 향하지 않는 평면)을 찾고, 이 면이 XY 평면(Z=0)에서 아래쪽을 향하도록 모델을 회전해 보세요. 인쇄할 모델의 방향을 지정하는 데 유용합니다.

{ "stl_path": "/path/to/model.stl" }

수정_stl_섹션

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_시각화

다양한 각도(정면, 측면, 상단, 등각 투영 뷰)에서 STL 파일의 SVG 시각화를 생성합니다.

{ "stl_path": "/path/to/file.stl", "width": 400, "height": 400 }

슬라이스_stl

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 파일을 처리(베이스 확장)하고, 슬라이스하고, 온도를 확인한 후 인쇄를 시작합니다.

{ "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)에서 처리하는 복잡한 작업이며 이 서버에는 구현되어 있지 않습니다.

프린터 제어 도구

프린터 상태 가져오기

3D 프린터의 현재 상태를 알아보세요.

{ "host": "192.168.1.100", "type": "octoprint", "api_key": "YOUR_API_KEY" }

Bambu 프린터의 경우 현재 MQTT 연결만 확인합니다.

프린터 파일 목록

프린터에서 사용 가능한 파일을 나열합니다.

{ "host": "192.168.1.100", "type": "octoprint", "api_key": "YOUR_API_KEY" }

Bambu 프린터의 경우 FTP를 통해 gcodes 디렉토리에 있는 파일을 나열합니다.

업로드_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 }

Bambu 프린터의 경우 FTP를 통해 gcodes 디렉터리에 업로드합니다. 자동으로 인쇄를 시작할 수 없습니다.

시작_인쇄

이미 프린터에 있는 파일의 인쇄를 시작합니다.

{ "host": "192.168.1.100", "type": "octoprint", "api_key": "YOUR_API_KEY", "filename": "my_print.gcode" }

Bambu 프린터에는 권장하지 않습니다. Bambu .3mf 파일에는 print_3mf 사용하세요.

인쇄 취소

현재 인쇄 작업을 취소합니다.

{ "host": "192.168.1.100", "type": "octoprint", "api_key": "YOUR_API_KEY" }

Bambu 프린터의 경우 MQTT를 통해 stop_print 명령을 전송합니다.

프린터 온도 설정

프린터 구성 요소의 온도를 설정합니다.

{ "host": "192.168.1.100", "type": "octoprint", "api_key": "YOUR_API_KEY", "component": "extruder", "temperature": 200 }

Bambu 프린터에서는 직접 MQTT 명령을 통해 지원되지 않습니다 .

대나무 전용 도구

FTP를 통해 .3mf 파일을 Bambu 프린터에 업로드하고 MQTT 명령을 통해 인쇄 작업을 시작합니다. AMS 매핑과 같은 일부 인쇄 매개변수를 재정의할 수 있습니다.

{ "three_mf_path": "/path/to/your_model.3mf", "host": "your_bambu_ip", // Optional if default is set "bambu_serial": "YOUR_SERIAL", // Optional if default is set "bambu_token": "YOUR_TOKEN", // Optional if default is set // Optional Overrides: "use_ams": true, // Default: true "ams_mapping": [0, 1, 2, 3], // Array of AMS slot indices to use "bed_leveling": true, // Default: true "flow_calibration": false, // Default: false "vibration_calibration": false, // Default: false "timelapse": false // Default: false }

참고: 이 도구를 사용하여 레이어 높이나 온도와 같은 슬라이서 설정을 재정의하는 것은 프린터의 MQTT 명령에서 지원되지 않습니다. .3mf 파일을 생성하기 전에 변경 사항을 적용하세요.

사용 가능한 리소스

프린터 리소스

  • printer://{host}/status - 3D 프린터의 현재 상태(현재 Bambu에서는 제한됨)
  • printer://{host}/files - 3D 프린터에서 사용 가능한 파일 목록(Bambu의 경우 FTP)
  • printer://{host}/file/{filename} - 특정 G-코드 파일의 내용(Bambu에 대해서만 존재 여부를 확인)

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 )

사용 예: "0.16mm Optimal @BBL P1S라는 이름의 Bambu 프로세스 사전 설정 내용을 읽어보세요"(Claude는 readResource를 preset://bambu/process/0.16mm Optimal @BBL P1S 로 호출합니다)

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 모델을 5mm 위로 옮겨서 아래에 틈을 만드세요."
  • "이 모델의 상단 부분만 수정해서 20% 더 크게 만들 수 있나요?"
  • "이 STL 파일을 분석해서 치수와 세부 정보를 알려주세요."
  • "이 STL 파일의 시각화를 생성해서 어떻게 보이는지 확인해 주세요."
  • "다양한 각도에서 모델의 SVG 시각화를 만듭니다."
  • "높이를 바꾸지 않고 이 모델의 바닥을 더 넓게 만들어 보세요."
  • "PrusaSlicer를 사용하여 수정된 STL 파일을 슬라이스합니다."
  • "압출기의 G-코드 온도가 200°C, 베드의 온도가 60°C인지 확인하세요."
  • "이 STL 파일을 처리하고, 밑부분을 2인치 더 길게 만들고, 잘라낸 다음 인쇄를 시작하세요. 하지만 먼저 온도를 확인하세요."
  • "Bambu 프린터에서 ~/Downloads/my_model.3mf 인쇄하세요."
  • "AMS 슬롯 0과 2를 사용하여 ~/Desktop/calibration_cube.3mf Bambu 프린터에 업로드하고 베드 레벨링을 끕니다."
  • "Bambu P1S에서 인쇄 작업을 취소해 주세요."
  • "Bambu 필라멘트 사전 설정 '일반 PETG'의 설정은 무엇입니까?"
  • "Bambu 프로세스 사전 설정을 보여주세요."

Bambu Lab 프린터 제한 사항

Bambu Lab 프린터 API의 특성상 몇 가지 제한 사항이 있습니다.

  1. 인쇄 시작 : 인쇄를 시작하려면 3MF 프로젝트 파일 경로, GCode 파일 이름, 인쇄 이름, MD5 해시 정보가 필요합니다. 이 서버의 간소화된 API는 아직 이 기능을 완전히 지원하지 않습니다.
  2. 온도 제어 : Bambu API는 온도를 설정하는 직접적인 방법을 제공하지 않습니다. 이를 위해서는 사용자 지정 G 코드 명령이 필요합니다.
  3. 파일 관리 : 파일은 프린터의 "gcodes" 디렉토리에 업로드해야 합니다.
  4. FTP 보안: 파일 작업은 현재 보안이 적용되지 않은 프린터의 FTP 서버(일반 FTP)를 사용합니다.
  5. 매개변수 재정의: MQTT project_file 명령에서 지원하는 매개변수(예: AMS 사용, 보정 플래그)만 print_3mf 도구를 통해 재정의할 수 있습니다. 레이어 높이나 온도와 같은 슬라이서 설정은 인쇄 시 이 명령을 통해 변경할 수 없습니다.
  6. 상태 업데이트: MQTT를 통한 실시간 전체 상태 모니터링은 추가 구현이 필요합니다.

제한 사항 및 고려 사항

메모리 사용량

  • 대용량 STL 파일 : 대용량 또는 복잡한 STL 파일을 처리할 경우 상당한 메모리를 소모할 수 있습니다. 작업 중 전체 STL 지오메트리가 메모리에 로드됩니다.
  • 여러 작업 : 여러 STL 작업을 순서대로 실행하면(특히 대용량 파일의 경우) 가비지 수집이 따라가지 못해 메모리가 누적될 수 있습니다.
  • MCP 환경 : Claude의 MCP 환경은 MCP 서버로 실행되므로 메모리 제약이 있다는 점에 유의하십시오. 매우 큰 STL 파일에 대한 복잡한 작업은 메모리 부족 문제를 일으킬 수 있습니다.

STL 조작 제한

  • 단면 수정 : 단면별 수정 기능은 단순한 지오메트리에 가장 적합합니다. 복잡하거나 비다양체 메시는 예상치 못한 결과를 초래할 수 있습니다.
  • 기본 확장 : 기본 확장 알고리즘은 모델 아래에 새로운 지오메트리를 추가하는 방식으로 작동합니다. 하부가 복잡한 모델의 경우 결과가 완벽하지 않을 수 있습니다.
  • 오류 처리 : 강력한 오류 처리 기능을 추가했지만 복잡한 STL 파일의 일부 예외적인 경우는 여전히 문제를 일으킬 수 있습니다.

시각화 제한 사항

  • SVG 표현 : SVG 시각화는 진정한 3D 렌더링이 아닌 단순화된 도식적 표현입니다.
  • 복잡한 모델 : 매우 복잡한 모델의 경우 시각화를 통해 모든 세부 정보를 정확하게 표현하지 못할 수 있습니다.

성능 고려 사항

  • 슬라이싱 작업 : 외부 슬라이서 프로세스는 CPU를 많이 사용하며 복잡한 모델의 경우 상당한 시간이 걸릴 수 있습니다.
  • 진행 상황 보고 : 대용량 파일의 경우 특정 처리 단계에서 진행 상황 업데이트가 중단된 것처럼 보일 수 있습니다.

테스트 권장 사항

  • 기능 테스트를 위해 더 작은 STL 파일(< 10MB)로 시작하세요.
  • 대용량 파일을 처리할 때 메모리 사용량을 모니터링합니다.
  • 복잡한 형상을 시도하기 전에 간단한 형상에 대한 수정을 테스트하세요.
  • 대규모 작업의 경우 최소 4GB의 사용 가능한 RAM이 있는 시스템에서 실행하는 것을 고려하세요.

배지

배지설명
npm의 패키지의 현재 버전
이 프로젝트는 GPL-2.0 라이선스를 받았습니다.
이 프로젝트는 TypeScript 4.9+로 작성되었습니다.
이 프로젝트는 활발하게 유지 관리되고 있습니다
Pull Request를 통한 기여를 환영합니다.
Node.js 18.0.0 이상이 필요합니다.
npm에서 월별 다운로드 수
이 프로젝트가 받은 GitHub 별 수

특허

GPL-2.0

ID: 7f6v2enbgk