Skip to main content
Glama
DMontgomery40

MCP 3D Printer Server

MCP 3D 프린터 서버

npm 버전 라이센스: GPL-2.0 타입스크립트 유지 홍보 담당자 환영 Node.js 버전 다운로드 GitHub 별점

  • 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 기능에 대해 철저한 런타임 테스트를 수행합니다.

목차

Related MCP server: printd

설명

이는 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_TYPE 도 orcaslicer 로 설정합니다.

특정 슬라이서를 기본으로 포함하지 못해 죄송합니다. 하지만 다양한 슬라이서(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_SERIAL 및 BAMBU_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 명령을 통해 지원되지 않습니다 .

대나무 전용 도구

print_3mf

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%20Optimal%20%40BBL%20P1S 로 호출합니다)

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 버전

npm의 패키지의 현재 버전

라이센스: GPL-2.0

이 프로젝트는 GPL-2.0 라이선스를 받았습니다.

타입스크립트

이 프로젝트는 TypeScript 4.9+로 작성되었습니다.

유지

이 프로젝트는 활발하게 유지 관리되고 있습니다

홍보 담당자 환영

Pull Request를 통한 기여를 환영합니다.

Node.js 버전

Node.js 18.0.0 이상이 필요합니다.

다운로드

npm에서 월별 다운로드 수

GitHub 별점

이 프로젝트가 받은 GitHub 별 수

특허

GPL-2.0

Available Tools

30 tools
blender_mcp_callA

Call a discovered tool on the configured Blender MCP server, preserving its full MCP content and errors. Discover tool schemas with blender_mcp_status first; execute_blender_code accepts Python code and user_prompt. Calls can modify the active Blender scene and are never automatically retried.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNoArguments matching the remote tool's discovered input schema. Preserve the user's own words in user_prompt when the remote tool requests it.
tool_nameYesExact name advertised by Blender MCP, such as get_scene_info or execute_blender_code.
timeout_msNoTotal connection, discovery, and tool deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers the key traits: 'Calls can modify the active Blender scene and are never automatically retried.' That mutation warning and no-retry disclosure are exactly the safety context an agent needs. It omits auth/permission or concurrency details, so not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and the discovery prerequisite. Each sentence carries information, though the mid-sentence mention of execute_blender_code's parameters is slightly tangential to the tool's own purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by stating it preserves 'its full MCP content and errors.' Combined with the mutation and no-retry disclosures and a documented timeout default, an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents tool_name, arguments, and timeout_ms. The description only lightly augments this, noting that execute_blender_code accepts Python code and user_prompt. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Call a discovered tool on the configured Blender MCP server.' It names the sibling it depends on (blender_mcp_status) and clarifies the proxy nature of the tool, distinguishing it from the actual Blender tools it dispatches to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear prerequisite flow: 'Discover tool schemas with blender_mcp_status first,' and names a concrete example (execute_blender_code). It does not, however, explain when to prefer this over blender_mcp_edit_model, leaving one sibling relationship implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

blender_mcp_edit_modelA

Import, edit, and export a local STL through standard Blender MCP with verified output and existing scene objects preserved. Requires a shared local filesystem and Blender Object Mode. Also supports a separately configured legacy executable bridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
executeNoApply edits and export (true) or validate and return the prepared request without connecting (false, default).
stl_pathYesPath to the local STL file
operationsYesOrdered operations: decimate:<ratio greater than 0 and at most 1>, remesh:<positive voxel size in STL units>, boolean_union:<STL path>. Legacy custom bridges define their own operations.
timeout_msNoTotal Blender request deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000.
output_pathNoNew local STL output path for standard MCP editing; defaults to a unique model-edited-<id>.stl beside the input. Its parent must exist and existing files are never overwritten. Reuse the preview's output_path when executing that plan.
user_promptNoThe user's own words describing the edit, passed unchanged to Blender MCP.
bridge_commandNoLegacy custom bridge executable override, not a standard MCP command. Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it delivers real behavioral claims: output is verified, existing scene objects are preserved, and a shared filesystem plus Object Mode are required. It stops short of stating reversibility or permission/auth implications, but the preservation and requirement disclosures are substantive beyond anything structured data provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded with the core action and pipeline before the requirements and the optional bridge. Every clause (verified output, scene preservation, prerequisites, legacy bridge) carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 7-parameter mutation tool with no output schema, the description covers purpose, prerequisites, side-effect profile, and the alternate bridge path. It does not clarify the difference between standard and bridge execution or what 'verified output' concretely means, which is a modest remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all seven parameters in detail (execute, output_path defaults, timeout, operations syntax). The description adds only the bridge concept, so the baseline 3 for schema-dominant definitions is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific three-part verb (import, edit, export) on a concrete resource (a local STL) through a named mechanism (standard Blender MCP). An agent can separate it from blender_mcp_export_stl (export only) and blender_mcp_call (generic) without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Prerequisites are stated (shared local filesystem, Blender Object Mode) and the legacy-bridge path is flagged, which is useful context. However, it never states when to prefer this tool over siblings like blender_mcp_call or blender_mcp_export_stl, or when the bridge path applies, so usage remains implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

blender_mcp_export_stlA

Export named objects from the live Blender scene to a new, verified STL for slicing. Writes world-space geometry with modifiers applied, without changing the scene, selection, or mode, and reports triangle count and bounding-box dimensions from the written file. Use this after editing or modelling through blender_mcp_call; Blender MCP's own export_scene writes GLB/FBX only. Requires standard Blender MCP and a shared local filesystem.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoMultiply coordinates before writing (default 1). Slicers read STL units as millimetres, so use 1000 for a scene modelled in metres.
timeout_msNoTotal Blender request deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000.
output_pathYesNew local .stl path. Its parent must exist; existing files are never overwritten.
user_promptNoThe user's own words, passed unchanged to Blender MCP.
object_namesYesBlender object names to export together as one STL (mesh, curve, surface, metaball, or text objects).
apply_modifiersNoExport the evaluated geometry with modifiers applied (default true).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: world-space geometry, modifiers applied, no mutation of scene/selection/mode, and a verification step reporting triangle count and bounding-box dimensions from the written file. This is exactly the side-effect profile an agent needs for a write-to-disk tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the action and its guarantees, followed by usage routing and prerequisites. No filler and nothing that repeats structured fields verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the absence of an output schema, the description states what the caller gets back (triangle count and bounding-box dimensions) and covers prerequisites and non-destructive behaviour. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented, including the mm-vs-metres scale rationale and the no-overwrite rule for output_path. The description adds no parameter meaning beyond that, which is the expected baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('export named objects from the live Blender scene to a new, verified STL') and explicitly distinguishes itself from the sibling export path by noting that Blender MCP's own export_scene writes GLB/FBX only. An agent can select it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('use this after editing or modelling through blender_mcp_call') and names the alternative that does not do this job. Prerequisites (standard Blender MCP, shared local filesystem) are also stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

blender_mcp_statusA

Inspect Blender MCP configuration or connect and discover the remote server's tools. Lists tool names and summaries; pass tool_names for the full input schemas of the tools you will call. Connecting does not edit the scene; use get_scene_info through blender_mcp_call to check the Blender addon.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectNoInitialize the configured stdio MCP server and discover its tools (default false).
timeout_msNoTotal connection and discovery deadline in milliseconds; defaults to BLENDER_MCP_TIMEOUT_MS or 120000.
tool_namesNoReturn full input schemas for these discovered tools, such as ["execute_blender_code"].
include_schemasNoReturn every discovered tool's full definition (large; default false).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does reasonably well: it states 'Connecting does not edit the scene' (a safety-relevant clarification), warns that include_schemas is large, and the schema documents the timeout default. It does not cover auth or failure behavior, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core capability, then the tool_names behavior, then the safety note and sibling pointer. Little waste, though the parenthetical 'large' warning and the closing routing note slightly crowd the structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param, no-output-schema, no-annotation discovery tool, the description covers both operating modes, the schema-fetching path, the large-payload warning, and the correct sibling for scene checks. Only deeper behavioral detail (error handling, discovery limits) is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents connect, timeout_ms, tool_names, and include_schemas with defaults and bounds. The description adds the intent behind tool_names ('the tools you will call') but no syntax or format detail beyond the schema, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (Blender MCP configuration / remote server tools) and the two distinct actions: inspect config or connect and discover tools. It is clearly distinguishable from blender_mcp_call, but the dual-mode framing (inspect vs. connect) makes the primary purpose slightly less crisp than a single-verb statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage direction: 'pass tool_names for the full input schemas of the tools you will call' and 'use get_scene_info through blender_mcp_call to check the Blender addon,' routing the agent to a sibling for scene verification. Absent is explicit when-not-to-use guidance, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_printC

Cancel the current print job

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHostname or IP address of the printer (default: value from env)
portNoPort of the printer API (default: value from env)
typeNoType of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env)
api_keyNoAPI key for authentication (default: value from env)
bambu_tokenNoAccess token for Bambu Lab printers (default: value from env)
bambu_serialNoSerial number for Bambu Lab printers (default: value from env)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It does not state that cancellation is destructive and non-resumable, whether it aborts an in-progress print or just clears the queue, or what authentication/permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler. It is efficient, though its brevity is partly under-specification rather than disciplined economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations, no output schema, and six connection parameters silently defaulting from environment variables, the description is too thin. It should at minimum say the cancel is irreversible and note that host/type/api_key default from env.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all six parameters are optional with env fallbacks, so the schema already documents everything. The description adds no parameter-level meaning beyond that, which warrants the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Cancel) and resource (the current print job), which is enough to distinguish it from siblings like start_print or process_and_print_stl. It does not explicitly call out cross-printer scope, but the core action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no reference to alternatives such as get_printer_status to confirm an active job before cancelling. The agent must infer all of this from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

center_modelB

Translate the model so its geometric center is at the origin (0,0,0).

ParametersJSON Schema
NameRequiredDescriptionDefault
stl_pathYesPath to the STL file to center.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool translates the model, but does not state whether it modifies the file in place, returns a new file, requires write permissions, or what side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that specifies the operation and the target result with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description adequately conveys the core action. However, without annotations or an output schema, it leaves open important behavioral details such as whether the original STL is modified or a new file is produced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single stl_path parameter is fully documented in the schema. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Translate') and states the exact geometric outcome: centering the model at the origin (0,0,0). It is clear what the tool does, though it does not explicitly differentiate itself from the sibling translate_stl tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as translate_stl, nor any prerequisites or exclusions. Usage is only implied by the outcome described.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_fulu_orca_setupC

Inspect a FULU OrcaSlicer-bambulab install, platform runtime payload, setup commands, and optionally probe the BambuNetwork bridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNoPlatform to inspect. Defaults to the current Node.js platform.
plugin_dirNoDirectory containing the FULU Bambu runtime payload; on macOS this is usually OrcaSlicer.app/Contents/MacOS. When run_bridge_probe=true, requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here.
runtime_dirNoInstalled runtime directory. On macOS this defaults to ~/Library/Application Support/OrcaSlicer/macos-bridge/runtime. When run_bridge_probe=true, requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here.
slicer_pathNoPath to the FULU OrcaSlicer executable. Defaults from SLICER_PATH/FULU_ORCA_PATH. When run_bridge_probe=true, requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here.
bridge_commandNoCommand that starts the FULU BambuNetwork bridge host for probing. Read from FULU_BAMBU_BRIDGE_COMMAND by default; requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here.
probe_timeout_msNoBridge probe timeout in milliseconds (default: 5000).
run_bridge_probeNoWhen true, sends bridge.handshake, bridge.capabilities, and bridge.runtime_info to the bridge host.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden, and it does not disclose that run_bridge_probe spawns a bridge host process, that bridge_command is an executable that will be launched, or that some inputs are gated behind MCP_ALLOW_EXECUTABLE_ARG=1 (that constraint appears only in the schema). It also says nothing about side effects or environment requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the inspection targets and appends the optional probe last. No filler, though the packing of five distinct concerns into one clause makes it slightly harder to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter diagnostic tool with no annotations and no output schema, the description should convey what the inspection returns and what the optional probe yields, but it stops at naming the targets. An agent cannot predict the shape or content of the result, leaving a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven parameters (including the enum platform and the executable-gated paths) are already fully documented in the schema, setting the baseline at 3. The description adds no parameter-level meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb (inspect) and specific resources (FULU OrcaSlicer-bambulab install, runtime payload, setup commands, BambuNetwork bridge), so an agent knows this is a diagnostic/inspection tool. It does not explicitly distinguish itself from the related sibling fulu_bambu_network_rpc, which is the only differentiation gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use or when-not-to-use guidance and names no alternatives. The only usage signal is the word 'optionally probe', which hints at a conditional mode but never says when an agent should enable it versus run a plain inspection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_temperaturesA

Report every heater target in a G-code file (S and R forms, tool-addressed, RepRapFirmware G10/M568 and Klipper SET_HEATER_TEMPERATURE). An expected temperature matches only when it equals the file's highest target. Read-only; printing tools enforce their own safety gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
bed_tempNoExpected highest bed target
gcode_pathYesPath to the G-code file
extruder_tempNoExpected highest nozzle target

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does disclose the key trait: it is read-only and does not itself gate printing, since printing tools enforce their own safety. It also defines the match rule (equality with the file's highest target). It does not say what is returned or what happens when a temperature fails to match, which matters for a verification tool with no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and resource, with no filler. The parenthetical enumeration of G-code forms is dense but each item is load-bearing for correct parsing expectations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers input semantics and scope well, but with no output schema and no return-value description, an agent cannot know whether a mismatch is reported as a boolean, an error, or a list of differing targets. For a confirmation/verification tool that gap is material.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it explains that bed_temp/extruder_temp match only when equal to the file's highest target, which is a non-obvious semantic the bare 'Expected highest bed target' wording does not convey. It also clarifies that targets are gathered from multiple G-code dialects, explaining why a single expected value is compared against many reported targets.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (report) and resource (every heater target in a G-code file), and enumerates the exact G-code forms covered (S/R, tool-addressed, RepRapFirmware G10/M568, Klipper SET_HEATER_TEMPERATURE). This clearly separates it from siblings like set_printer_temperature (which mutates) and get_printer_status (which reads live state, not a file).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a pre-flight verification use case and notes that 'printing tools enforce their own safety gate,' which frames when this check belongs in a workflow. However, it never explicitly says when to use this versus get_printer_status or set_printer_temperature, nor what to do on a mismatch, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extend_stl_baseC

Extend the base of an STL file by a specified amount

ParametersJSON Schema
NameRequiredDescriptionDefault
stl_pathYesPath to the STL file to modify
extension_inchesYesAmount to extend the base in inches

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden for a mutation tool. It does not say whether the file is modified in place or a new file is written, whether the original is overwritten, what happens on failure, or what the response contains — all important for a destructive file edit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence with the action and target front-loaded and zero wasted words. It is perhaps too terse given what is left unsaid, but nothing in it is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter file-mutating tool with no annotations and no output schema, the description omits the essentials: in-place vs. new-file behavior, return value, and error conditions. An agent could call it but cannot predict the side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: stl_path ("Path to the STL file to modify") and extension_inches ("Amount to extend the base in inches") are both self-documenting, including units. The description's "by a specified amount" adds nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ("Extend") and a specific target region ("the base of an STL file"), which is clearer than the generic sibling names like modify_stl_section or translate_stl. However, it does nothing to distinguish itself from related STL-geometry siblings (scale_stl, rotate_stl, center_model, lay_flat), so an agent must infer the boundary on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to use this rather than scale_stl, translate_stl, or modify_stl_section, no prerequisites (e.g., does the model need a flat base?), and no exclusions. The agent is left to guess how this differs from other geometry-editing tools in the list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fulu_bambu_network_rpcA

Advanced FULU bridge RPC for BambuNetwork diagnostics and development. Read-only methods are allowed by default. Agent/session setup methods require allow_mutating_method=true. Raw print methods, printer messages, file transfers and unknown methods are refused because they would bypass the print safety gate; use print_3mf for checked printing.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesFULU bridge method, e.g. bridge.handshake, bridge.runtime_info, net.get_user_print_info, net.start_print.
payloadNoJSON payload sent to the FULU bridge method.
timeout_msNoBridge request timeout in milliseconds (default: 5000).
bambu_modelNoInformational only. Raw FULU print RPC methods are disabled; use print_3mf.
bridge_commandNoCommand that starts the FULU BambuNetwork bridge host. Defaults to FULU_BAMBU_BRIDGE_COMMAND; requires MCP_ALLOW_EXECUTABLE_ARG=1 to be accepted here.
allow_mutating_methodNoRequired for the allowlisted agent/session setup methods. It never enables print, printer-message, or unknown methods.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the default read-only posture, the mutating-method opt-in flag, the refusal class, and the reason (bypassing the print safety gate). It omits return/error behavior and timeout implications, but the safety semantics are unusually well communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what the tool is, then the gating rules, then the refusal and alternative. Every sentence carries information; no filler or repeated schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter passthrough with a free-form payload and no output schema, the description covers the safety model well but does not describe what an RPC call returns, how failures surface, or how to choose among the many allowed bridge methods beyond the schema's examples. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents method, payload, timeout_ms, bambu_model, bridge_command and allow_mutating_method. The description adds one genuinely useful nuance — that allow_mutating_method never enables print, printer-message or unknown methods — but otherwise restates schema-level guidance, fitting the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (FULU BambuNetwork bridge RPC) used for diagnostics and development, and distinguishes its scope from print-oriented siblings by explicitly excluding raw print methods. The verb is generic (a passthrough RPC), so it is not a perfect verb+resource pair, but an agent can tell it apart from print_3mf and check_fulu_orca_setup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditional routing: read-only methods allowed by default, agent/session setup methods require allow_mutating_method=true, and print/message/file-transfer/unknown methods are refused. It also names the correct alternative (print_3mf) for checked printing. It stops short of saying which diagnostic scenarios warrant calling this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_stl_visualizationB

Generate an SVG visualization of an STL file from multiple angles

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoWidth of each view in pixels (default: 300)
heightNoHeight of each view in pixels (default: 300)
stl_pathYesPath to the STL file

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the output format (SVG) and that multiple angles are rendered, but says nothing about whether files are written to disk or returned inline, what the angle set is, dependencies (e.g., a rendering library), or performance limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; every clause (generate, SVG, STL file, multiple angles) carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description should say what the caller gets back (returned SVG content vs. written file paths) and roughly which views are rendered. The input side is fully covered by the schema, but the output side of the contract is not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: stl_path, width, and height are all documented in the schema, including defaults. The description adds no parameter meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Generate) and resource (SVG visualization of an STL file) with the scope 'from multiple angles'. It is clearly distinguished from siblings like get_stl_info or blender_mcp_export_stl by the output artifact, though it never names a sibling to route against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus alternatives such as get_stl_info, blender_mcp_export_stl, or slice_stl. The agent must infer the use case (visual inspection) on its own, and no exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_printer_statusC

Get the current status of the 3D printer

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHostname or IP address of the printer (default: value from env)
portNoPort of the printer API (default: value from env)
typeNoType of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env)
api_keyNoAPI key for authentication (default: value from env)
bambu_tokenNoAccess token for Bambu Lab printers (default: value from env)
bambu_serialNoSerial number for Bambu Lab printers (default: value from env)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about authentication requirements, network behavior, failure modes, or whether it is a safe read operation. It discloses no behavior beyond the bare action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is efficient, though its brevity is partly the source of the definition's gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six connection parameters, no annotations, and no output schema, the description should explain what status information is returned and any connection/auth expectations. As written it is too thin for the tool's configured surface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (host, port, type, api_key, bambu_token, bambu_serial) are already documented, including that they default from env. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (current status of the 3D printer), so the action is unambiguous. It does not differentiate from siblings such as list_printer_files or get_slice_settings, which also read printer state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives, and no prerequisites (e.g. needing a configured host or API key). Usage is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_slice_settingsA

Inspect slicer settings in a 3MF template or JSON/config profile without slicing (layer height, infill, walls, supports, brim, bed, printer, filaments).

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathNoPath to a 3MF, extracted project_settings.config, or slicer profile JSON.
template_dirNoTemplate directory override when resolving template_name.
template_nameNoNamed template from the local registry; used when source_path is omitted.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose that this is a non-mutating inspection ('without slicing') and enumerates the setting categories returned (layer height, infill, walls, supports, brim, bed, printer, filaments), which partially compensates for the missing output schema. It says nothing about permissions, error behavior, or resolution precedence between source_path and template_name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb and resource first, followed by an efficient parenthetical field list. No filler, though the parenthetical is long enough that it slightly competes with the core claim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter, zero-required read tool with no output schema, listing the returned setting categories goes a long way toward filling the return-value gap, and the schema covers source alternatives. The remaining gap is the precedence/interaction between source_path and template_name, which is only documented per-parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters and their source-resolution semantics. The description's mention of '3MF template or JSON/config profile' loosely maps to source_path and template_name but adds no format or precedence detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (inspect), a specific resource (slicer settings), and enumerates the source formats and the fields covered. The phrase 'without slicing' implicitly separates it from the sibling slicing tools (slice_stl, slice_with_template), though it never names them, so sibling differentiation is present but not explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without slicing' hints at the use case (read settings before committing to a slice), but there is no explicit when-to-use statement, no when-not-to-use, and no named alternative. Usage must be inferred from the contrast with the slicing siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stl_infoC

Get detailed information about an STL file

ParametersJSON Schema
NameRequiredDescriptionDefault
stl_pathYesPath to the STL file

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Detailed information' is undefined — it does not say whether this returns geometry stats, dimensions, triangle counts, or file metadata, nor whether it is a pure read with no side effects. The safety/behavior profile is left entirely implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with zero padding, front-loaded with the verb. It is efficient, though its brevity is partly the cause of the gaps elsewhere rather than true economy of expression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully-documented parameter and no output schema, the description is minimally adequate, but 'detailed information' gives the agent no expectation of the return payload for a tool whose entire value is the response shape. It should at least hint at what fields come back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the single stl_path parameter is documented as 'Path to the STL file'), so the schema does the heavy lifting. The description adds no format, path-style, or validation detail beyond that, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('STL file') with the qualifier 'detailed information', so the agent knows this is a metadata/inspection read. However, it does not distinguish itself from neighbors like generate_stl_visualization or slice_stl, which also consume an STL file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the many other STL-related siblings, nor any prerequisites (e.g., that the file must exist on the server). The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lay_flatB

Attempt to rotate the model so its largest flat face lies on the XY plane (Z=0).

ParametersJSON Schema
NameRequiredDescriptionDefault
stl_pathYesPath to the STL file to lay flat.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose one genuine behavioral trait: 'attempt' signals this is best-effort and may not succeed. However, it says nothing about whether the STL is modified in place or a new file/geometry is returned, nor about failure behavior, which are the key traits for a mutation-style tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence that states the action and the target geometry with no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter geometry operation with no output schema and no annotations, the description explains the transformation adequately but leaves the agent unsure about persistence (in-place vs. return value) and failure modes, which matter for calling it correctly in a pipeline with slice_stl/print steps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single stl_path parameter, so the schema already documents it fully. The description adds only the geometric goal, not any additional parameter meaning; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (rotate) plus the exact geometric outcome (largest flat face onto the XY plane at Z=0), which clearly separates it from the generic rotate_stl sibling even though it does not name that sibling. The only gap is the lack of an explicit contrast with rotate_stl/translate_stl/center_model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to prefer this over rotate_stl or center_model, no stated prerequisites (e.g., mesh must be watertight or have a detectable flat face), and no note about what happens if no flat face exists. The agent must infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_printer_filesC

List files available on the 3D printer

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHostname or IP address of the printer (default: value from env)
portNoPort of the printer API (default: value from env)
typeNoType of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env)
api_keyNoAPI key for authentication (default: value from env)
bambu_tokenNoAccess token for Bambu Lab printers (default: value from env)
bambu_serialNoSerial number for Bambu Lab printers (default: value from env)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a safe read operation by using 'List,' but does not state authentication requirements, pagination behavior, output format, or any side effects. This is a notable gap for a printer-integration tool with six connection parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero wasted words. It is appropriately sized for the stated purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a listing tool with six optional connection parameters and no output schema, the description should explain what is returned or how the file list is structured. It also omits any mention of default environment configuration or authentication. The schema covers inputs, but the description is incomplete about behavior and results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds no parameter meaning beyond what the schema provides, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'List files available on the 3D printer.' It distinguishes the operation from other printer actions, but does not differentiate itself from siblings such as get_printer_status or upload_gcode beyond the obvious file-listing scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no mention of prerequisites, and no named alternatives. The phrase 'files available' implies a listing context, but the agent must infer when this tool is appropriate versus other printer-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesA

List saved slicing templates (.3mf, .json, .config) in the local template registry directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_dirNoTemplate directory override. Defaults to BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the source location and which file extensions are enumerated, which is useful, but says nothing about the return shape (names vs. paths), recursion, ordering, or behavior when the directory is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the parenthetical file types and the directory scope following. Nothing wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-required-parameter read tool, the description covers what is listed and where. Since there is no output schema, a brief note on the return format would have closed the last gap, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 100% schema description coverage, including its default resolution order (BAMBU_TEMPLATE_DIR, then ~/Sync/bambu/templates), so the schema already does the heavy lifting. The description's mention of the "local template registry directory" lightly reinforces that, but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear specific verb (List) plus resource (saved slicing templates), with the file types (.3mf, .json, .config) and the scope (local template registry directory) spelled out. It is readily distinguishable from the write-oriented siblings save_template and slice_with_template, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and by the presence of save_template/slice_with_template as siblings, but the description states no when-to-use condition, no prerequisite (e.g. registry directory must exist), and no alternative to prefer. Adequate but leaves selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

merge_verticesB

Merge vertices in an STL file that are closer than the specified tolerance.

ParametersJSON Schema
NameRequiredDescriptionDefault
stl_pathYesPath to the STL file to modify.
toleranceNoMaximum distance between vertices to merge (in mm, default: 0.01).

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies mutation but never states that the file is modified in place, whether the original is preserved, what happens on failure, or how vertices are matched; only the tolerance semantics are conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; the operation, target, and merge criterion are all stated up front.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with a fully documented schema and no output schema, the description is close to sufficient. However, as an unannotated mutation tool it should disclose that it rewrites the STL in place and any file-state assumptions, which it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (stl_path, tolerance) are already documented with units and default. The description's mention of 'closer than the specified tolerance' reinforces the filtering semantics but adds nothing beyond the schema's baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (merge) and resource (vertices in an STL file) with the qualifying condition (closer than the specified tolerance), which is enough to distinguish it from siblings like scale_stl or rotate_stl. It stops short of explicitly contrasting with any sibling, so a 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to reach for this tool versus alternatives such as modify_stl_section or the blender_mcp_* editing tools, nor any mention of prerequisites like an existing valid STL file. The purpose is implied but selection context is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

modify_stl_sectionC

Apply a specific transformation to a selected section of an STL file

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionYesSection to modify: 'top', 'bottom', 'center', or custom bounds
value_xNoTransformation value for X axis
value_yNoTransformation value for Y axis
value_zNoTransformation value for Z axis
stl_pathYesPath to the STL file
custom_max_xNoMaximum X for custom section bounds
custom_max_yNoMaximum Y for custom section bounds
custom_max_zNoMaximum Z for custom section bounds
custom_min_xNoMinimum X for custom section bounds
custom_min_yNoMinimum Y for custom section bounds
custom_min_zNoMinimum Z for custom section bounds
transformation_typeYesType of transformation to apply

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it only implies a write operation via 'Apply'. It does not say whether the file is modified in place, whether the original is overwritten, what happens to geometry outside the section, what units or coordinate system apply, or how errors are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It communicates the core action immediately and does not bury the purpose in extra text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 12 parameters, two enums, no annotations, and no output schema, the description is incomplete. It does not explain how to interpret the transformation values, when custom bounds apply, file-side effects, or expected outcomes, leaving the agent heavily dependent on the schema and trial-and-error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema documents all parameters including enums for section and transformation_type, axis values, and custom bounds. The description adds no parameter meaning beyond what the schema already provides, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Apply'), a specific resource ('STL file'), and a specific scope ('selected section'), which distinguishes it from whole-file siblings like scale_stl, rotate_stl, and translate_stl. However, it does not explicitly name those alternatives, so it falls short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives, when to choose section-based modification versus whole-file transforms, or prerequisites such as valid STL paths or coordinate-system expectations. Usage is only implied by the phrase 'selected section'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_and_print_stlA

Process an STL file (extend base), slice it, and start printing through the same checked print gate as upload_gcode/print_3mf. Expected temperatures are enforced: a mismatch refuses before upload.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHostname or IP address of the printer (default: value from env)
portNoPort of the printer API (default: value from env)
typeNoType of printer management system (default: value from env)
api_keyNoAPI key for authentication (default: value from env)
bed_tempNoExpected highest bed target in the sliced G-code (S and R forms). Printing stops before upload if it differs.
bed_typeNoBed/plate type installed on the printer (default: textured_plate).
materialNoDeclared filament material when the sliced G-code has no filament_type metadata. Must not contradict the file.
stl_pathYesPath to the STL file to process
bambu_modelNoBambu Lab printer model. Required for Bambu print operations.
nozzle_typeNoInstalled Bambu nozzle material used when slicing (default: BAMBU_NOZZLE_TYPE, else the preset's stock nozzle). The print gate compares it with the printer's report.
slicer_pathNoPath to the slicer executable (default: value from env). Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1.
slicer_typeNoType of slicer to use. Use orcaslicer-bambulab for FULU OrcaSlicer-bambulab.
extruder_tempNoExpected highest nozzle target in the sliced G-code (S and R forms, every tool). Printing stops before upload if it differs.
slicer_profileNoProfile to use for slicing (default: value from env). OrcaSlicer also accepts machine/process profiles separated with ';', optionally followed by '|filament.json'.
nozzle_diameterNoNozzle diameter in mm (default: 0.4).
extension_inchesYesAmount to extend the base in inches
filament_profileNoOrcaSlicer filament profile path loaded with --load-filaments (default: FILAMENT_PROFILE/SLICER_FILAMENT_PROFILE env).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the temperature-enforcement gate and that a mismatch refuses before upload, and 'start printing' signals a mutating, possibly irreversible action. However, it omits auth requirements, what happens on slicer failure, or the host/api_key defaulting behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the core action chain front-loaded and the enforcement caveat second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter mutation tool with no annotations and no output schema, the description covers the pipeline and the print gate but says nothing about return values, failure modes beyond temperature mismatch, or the relationship to the several sibling STL-modification tools. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 17 parameters are already documented in the schema. The description adds only the 'extend base' hint tied to extension_inches and reinforces the temperature-check semantics already in bed_temp/extruder_temp descriptions. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific multi-step operation — extend the STL base, slice, and print — and anchors it against siblings by referencing the same checked print gate used by upload_gcode/print_3mf. An agent can distinguish it from slice_stl or start_print, though the 'extend base' phrasing is terse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The pipeline nature implies usage (one call instead of slice_stl followed by start_print) but no explicit when/when-not guidance is given. The reference to the shared print gate hints at why this exists, but the agent must infer the alternative paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rotate_stlC

Rotate an STL model around specific axes

ParametersJSON Schema
NameRequiredDescriptionDefault
rotate_xNoRotation around X-axis in degrees
rotate_yNoRotation around Y-axis in degrees
rotate_zNoRotation around Z-axis in degrees
stl_pathYesPath to the STL file

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not disclose whether the rotation mutates the file in place or returns a new model, whether the original is preserved, or whether there are constraints on rotation values. For a mutation tool with zero annotation coverage this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no wasted words, but it is arguably terse to the point of under-specification rather than optimally structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Parameters are fully covered by the schema and no output schema exists, so the description needn't explain returns. However, as a mutation tool with no annotations it should disclose the in-place-vs-new-model behavior, which it omits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter (rotate_x/y/z in degrees, stl_path) is already documented in the schema. The description adds nothing beyond that, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (rotate) and resource (STL model), which distinguishes it from siblings like scale_stl and translate_stl. The phrase 'around specific axes' is somewhat redundant since the schema names the axes, but the core purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus scale_stl, translate_stl, or modify_stl_section, and no prerequisites or context about the STL manipulation workflow. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_templateB

Copy a .3mf, .json, or .config file into the local template registry under a template name.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathYesLocal .3mf, .json, or .config file to save as a template.
template_dirNoTemplate directory override. Defaults to BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates.
template_nameNoTemplate name. Defaults to the source filename without extension.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Copy' usefully implies the source file is preserved rather than moved, but nothing is said about overwriting an existing template name, error behavior for unsupported formats, or permissions — significant gaps for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler; the action, the accepted formats, and the destination registry are all front-loaded. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, single-required-parameter local file operation with fully documented parameters and no output schema, the description is nearly sufficient. The only missing piece is collision/overwrite semantics for an existing template name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains source_path, template_dir (including the BAMBU_TEMPLATE_DIR default), and template_name (filename-derived default). The description adds no syntax or defaulting detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (Copy) and a specific resource (into the local template registry) and names the accepted file types (.3mf, .json, .config). It is clearly distinct from siblings like list_templates or slice_with_template, though it does not explicitly name a sibling to contrast against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as slice_with_template (which presumably consumes saved templates). The agent must infer that this is the way to persist a template before slicing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scale_stlB

Scale an STL model uniformly or along specific axes

ParametersJSON Schema
NameRequiredDescriptionDefault
scale_xNoX-axis scaling factor (overrides scale_factor for X axis)
scale_yNoY-axis scaling factor (overrides scale_factor for Y axis)
scale_zNoZ-axis scaling factor (overrides scale_factor for Z axis)
stl_pathYesPath to the STL file
scale_factorNoUniform scaling factor to apply

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and falls short: it does not say whether the STL is scaled in place or written to a new file, whether the original is destroyed, or whether scaling is reversible. For a mutation tool with zero annotation coverage this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tightly written sentence with the core operation front-loaded and no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Parameters are fully covered by the schema and no output schema exists, so return values need not be explained. However, for an unannotated 5-parameter mutation tool, the description should at least clarify output/destination behavior to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents scale_factor vs scale_x/y/z and the override behavior. The description's 'uniformly or along specific axes' adds conceptual framing but no syntax, range, or default details beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Scale) and resource (STL model) plus the two supported modes (uniform or per-axis). It is clearly distinguishable from siblings like rotate_stl and translate_stl, which perform different transforms on the same resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus rotate_stl, translate_stl, or modify_stl_section, and no prerequisites or preconditions mentioned. The uniform-vs-per-axis distinction is really parameter semantics rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_printer_temperatureA

Set the temperature of a printer component. Temperature 0 switches a heater off and is never gated. Positive targets are validated before connecting, limited by independent hardware and material ceilings, require a ready printer and a human confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHostname or IP address of the printer (default: value from env)
portNoPort of the printer API (default: value from env)
typeNoType of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env)
api_keyNoAPI key for authentication (default: value from env)
materialNoDeclared material at the nozzle (for example PLA, PETG, ABS). Required for positive nozzle heating, including non-RFID spools.
componentYesPrinter component to heat, such as extruder or bed.
bambu_modelNoBambu printer model; required for positive Bambu heating unless BAMBU_MODEL is configured. Checked against the live printer.
bambu_tokenNoAccess token for Bambu Lab printers (default: value from env)
temperatureYesTarget temperature in Celsius: a finite number >= 0. 0 switches the heater off.
bambu_serialNoSerial number for Bambu Lab printers (default: value from env)
nozzle_diameterNoInstalled Bambu nozzle diameter in mm for nozzle heating (default: NOZZLE_DIAMETER or 0.4). Checked against the live printer.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: it discloses pre-connection validation, independent hardware and material ceilings, the ready-printer requirement, and a human-confirmation gate. It stops short of covering auth/permissions behavior, which would be the remaining gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no filler, and the most important branch (0 = off, ungated) is front-loaded ahead of the positive-target constraints. Efficient and well-ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no annotations and no output schema, the description conveys the key behavioral contract (validation, ceilings, confirmation) that an agent needs. It is nearly complete, missing only auth/permission expectations and explicit sibling routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 11 parameters, including that 0 turns the heater off. The description adds gating semantics around temperature values but largely restates what the schema field descriptions already provide, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Set the temperature of a printer component") and even names the component concept. It is clear what the tool does, but it never names the obvious sibling (confirm_temperatures) or otherwise differentiates itself from related temperature tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives real usage conditions – temperature 0 is never gated, positive targets require a ready printer and a human confirmation – which tells the agent when a call will succeed. However, it never names alternatives such as confirm_temperatures or get_printer_status, so routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slice_stlB

Slice an STL or 3MF file to generate G-code or a sliced 3MF. For Bambu-compatible CLI slicing (bambustudio, orcaslicer-bambulab, or orcaslicer with bambu_model), the exact bambu_model/nozzle machine preset from the selected slicer installation is required, profile inheritance is resolved before the CLI runs, and the result must contain plate G-code. Failures stop with the slicer's exit status and output.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoBambu-compatible slicing: uniform scale factor applied before slicing (1.0 = original size).
orientNoBambu-compatible slicing: auto-orient for printability (--orient).
rotateNoBambu-compatible slicing: Z-axis rotation in degrees before slicing.
arrangeNoBambu-compatible slicing: auto-arrange objects on the plate (--arrange). Set false to keep an existing layout.
bed_typeNoBambu-compatible slicing: build plate type (default: BED_TYPE or textured_plate).
min_saveNoBambu-compatible slicing: write a smaller output 3MF (--min-save).
rotate_xNoBambu-compatible slicing: X-axis rotation in degrees before slicing.
rotate_yNoBambu-compatible slicing: Y-axis rotation in degrees before slicing.
stl_pathYesPath to the STL or 3MF file to slice
uptodateNoBambu-compatible slicing: refresh 3MF preset configs to the installed slicer version (--uptodate).
bambu_modelNoBambu Lab printer model. Required for bambustudio and orcaslicer-bambulab (elicited or read from BAMBU_MODEL when omitted); passing it with orcaslicer selects the Bambu-compatible path. The installed slicer must contain the exact model/nozzle preset.
nozzle_typeNoBambu-compatible slicing: the hotend nozzle material installed on the printer (default: BAMBU_NOZZLE_TYPE, else the model preset's stock nozzle, usually stainless_steel; X1C/X1E presets use hardened_steel). Printing compares it with the printer's reported nozzle.
repetitionsNoBambu-compatible slicing: print N identical copies (--repetitions).
slice_plateNoBambu-compatible slicing: plate number to slice; 0 slices all plates (default).
slicer_pathNoPath to the slicer executable (default: value from env). Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1.
slicer_typeNoType of slicer to use (prusaslicer, cura, slic3r, orcaslicer, orcaslicer-bambulab, bambustudio). Use orcaslicer-bambulab for the FULU fork. bambustudio and orcaslicer-bambulab (and orcaslicer with bambu_model) export a sliced 3MF.
skip_objectsNoBambu-compatible slicing: comma-separated object indices to skip, e.g. '3,5,10'.
template_dirNoTemplate directory override when resolving template_name (default: BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates).
clone_objectsNoBambu-compatible slicing: comma-separated clone counts per object index, e.g. '1,3,1,10'.
ensure_on_bedNoBambu-compatible slicing: lower floating models onto the bed (--ensure-on-bed).
template_nameNoNamed template from the local registry (see list_templates); resolves to its file.
allow_mix_tempNoBambu-compatible slicing: allow filaments with different temperature requirements on one plate.
load_filamentsNoBambu-compatible slicing: filament profile JSON paths in slot order, ';'-separated. One profile applies to every project slot; otherwise supply one per slot.
slicer_profileNoProfile to use for slicing (default: SLICER_PROFILE env). Bambu-compatible slicing: one process profile JSON (the machine preset comes from bambu_model). Generic OrcaSlicer: machine/process profiles separated with ';', optionally followed by '|filament.json'.
nozzle_diameterNoNozzle diameter in mm (default: NOZZLE_DIAMETER or 0.4). Selects the '<model> <diameter> nozzle' machine preset.
enable_timelapseNoBambu-compatible slicing: insert timelapse parking moves (--enable-timelapse).
filament_coloursNoBambu-compatible slicing: one #RRGGBB per filament slot, ';'-separated. Defaults to the input 3MF's colours, then each profile's colour.
filament_profileNoFilament profile path(s), ';'-separated in slot order, loaded with --load-filaments (default: FILAMENT_PROFILE/SLICER_FILAMENT_PROFILE env). Alias of load_filaments.
load_filament_idsNoBambu-compatible slicing: comma-separated filament IDs mapping load_filaments to objects, e.g. '1,2,3,1'.
template_3mf_pathNoBambu-compatible slicing: 3MF or profile whose embedded slicer settings are reused as the process profile (default: BAMBU_TEMPLATE_3MF_PATH). An explicit slicer_profile takes precedence.
skip_modified_gcodesNoBambu-compatible slicing: ignore custom G-code embedded in an input 3MF (--skip-modified-gcodes).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose meaningful traits: the exact bambu_model/nozzle preset requirement, profile inheritance ordering, the plate-G-code requirement, and that failures surface the slicer's exit status. It omits, however, where output is written, what is returned, and the behavior of the non-Bambu slicing path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the remaining text is dense but meaningful, covering the Bambu-specific preconditions in two efficient sentences. No filler or repetition of the schema is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 31-parameter tool with no annotations and no output schema, the description covers the Bambu path well but is thin on the generic path and on return/output destinations. It also never routes the agent between this and the closely related slice_with_template sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 31 parameters and the baseline is 3. The description adds the machine-preset semantics behind bambu_model/nozzle, but no per-parameter syntax beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource ('Slice an STL or 3MF file') and names the outputs (G-code or sliced 3MF). It does not, however, differentiate itself from the sibling slice_with_template, which an agent would need to distinguish this tool from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly conditions behavior on slicer type (Bambu-compatible path via bambustudio/orcaslicer-bambulab/orcaslicer+bambu_model), which is useful routing context. But it never states when to choose this tool over slice_with_template or process_and_print_stl, so alternatives are left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

slice_with_templateA

Slice an STL or 3MF with a named template from the local template registry (BAMBU_TEMPLATE_DIR). The template supplies process settings; the machine preset still comes from bambu_model and nozzle_diameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoBambu-compatible slicing: uniform scale factor applied before slicing (1.0 = original size).
orientNoBambu-compatible slicing: auto-orient for printability (--orient).
rotateNoBambu-compatible slicing: Z-axis rotation in degrees before slicing.
arrangeNoBambu-compatible slicing: auto-arrange objects on the plate (--arrange). Set false to keep an existing layout.
bed_typeNoBambu-compatible slicing: build plate type (default: BED_TYPE or textured_plate).
min_saveNoBambu-compatible slicing: write a smaller output 3MF (--min-save).
rotate_xNoBambu-compatible slicing: X-axis rotation in degrees before slicing.
rotate_yNoBambu-compatible slicing: Y-axis rotation in degrees before slicing.
stl_pathYesPath to the STL or 3MF file to slice
uptodateNoBambu-compatible slicing: refresh 3MF preset configs to the installed slicer version (--uptodate).
bambu_modelNoBambu Lab printer model. Required for bambustudio and orcaslicer-bambulab (elicited or read from BAMBU_MODEL when omitted); passing it with orcaslicer selects the Bambu-compatible path. The installed slicer must contain the exact model/nozzle preset.
nozzle_typeNoBambu-compatible slicing: the hotend nozzle material installed on the printer (default: BAMBU_NOZZLE_TYPE, else the model preset's stock nozzle, usually stainless_steel; X1C/X1E presets use hardened_steel). Printing compares it with the printer's reported nozzle.
repetitionsNoBambu-compatible slicing: print N identical copies (--repetitions).
slice_plateNoBambu-compatible slicing: plate number to slice; 0 slices all plates (default).
slicer_pathNoPath to the slicer executable (default: value from env). Per-call overrides require MCP_ALLOW_EXECUTABLE_ARG=1.
slicer_typeNoType of slicer to use (prusaslicer, cura, slic3r, orcaslicer, orcaslicer-bambulab, bambustudio). Use orcaslicer-bambulab for the FULU fork. bambustudio and orcaslicer-bambulab (and orcaslicer with bambu_model) export a sliced 3MF.
skip_objectsNoBambu-compatible slicing: comma-separated object indices to skip, e.g. '3,5,10'.
template_dirNoTemplate directory override when resolving template_name (default: BAMBU_TEMPLATE_DIR or ~/Sync/bambu/templates).
clone_objectsNoBambu-compatible slicing: comma-separated clone counts per object index, e.g. '1,3,1,10'.
ensure_on_bedNoBambu-compatible slicing: lower floating models onto the bed (--ensure-on-bed).
template_nameYesNamed template from the local registry (required).
allow_mix_tempNoBambu-compatible slicing: allow filaments with different temperature requirements on one plate.
load_filamentsNoBambu-compatible slicing: filament profile JSON paths in slot order, ';'-separated. One profile applies to every project slot; otherwise supply one per slot.
slicer_profileNoExplicit process profile that overrides the named template only when provided in this call.
nozzle_diameterNoNozzle diameter in mm (default: NOZZLE_DIAMETER or 0.4). Selects the '<model> <diameter> nozzle' machine preset.
enable_timelapseNoBambu-compatible slicing: insert timelapse parking moves (--enable-timelapse).
filament_coloursNoBambu-compatible slicing: one #RRGGBB per filament slot, ';'-separated. Defaults to the input 3MF's colours, then each profile's colour.
filament_profileNoFilament profile path(s), ';'-separated in slot order, loaded with --load-filaments (default: FILAMENT_PROFILE/SLICER_FILAMENT_PROFILE env). Alias of load_filaments.
load_filament_idsNoBambu-compatible slicing: comma-separated filament IDs mapping load_filaments to objects, e.g. '1,2,3,1'.
template_3mf_pathNoBambu-compatible slicing: 3MF or profile whose embedded slicer settings are reused as the process profile (default: BAMBU_TEMPLATE_3MF_PATH). An explicit slicer_profile takes precedence.
skip_modified_gcodesNoBambu-compatible slicing: ignore custom G-code embedded in an input 3MF (--skip-modified-gcodes).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It usefully reveals that the template registry is resolved from BAMBU_TEMPLATE_DIR and that machine settings come from separate parameters, but says nothing about the output artifact, write location, or failure behavior of a slicing run.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and scope, then the settings-precedence detail. No filler, no repetition of enum values or defaults already in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 31-parameter tool with no output schema, the description is lean but leaves gaps: it does not say what is produced (sliced 3MF vs G-code), where it is written, or how a missing/invalid template is surfaced. The rich schema compensates for most parameter ambiguity, so this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented and the baseline is 3. The description goes slightly beyond the schema by clarifying the interaction between template_name, bambu_model, and nozzle_diameter — non-obvious precedence that the per-parameter schema text does not state jointly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Slice) plus resource (STL or 3MF) and the distinguishing mechanism (a named template from the local template registry). This separates it conceptually from the sibling slice_stl, though it never names that sibling or list_templates/save_template, so the contrast is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence explains the division of labor (template supplies process settings; machine preset comes from bambu_model and nozzle_diameter), which implies when this tool is appropriate. However there is no explicit 'use this instead of slice_stl when...' guidance or note about what happens when the template name is not found.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_printA

Start printing a G-code file already stored on the printer. The server downloads and inspects the exact file, then starts a uniquely named checked copy after printer-state checks and human confirmation. Printers whose API cannot download files (Repetier, Prusa, Creality) refuse; use upload_gcode with print=true instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHostname or IP address of the printer (default: value from env)
portNoPort of the printer API (default: value from env)
typeNoType of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env)
api_keyNoAPI key for authentication (default: value from env)
filenameYesName/path of the printer-side G-code file to start.
materialNoDeclared filament material when the G-code has no slicer filament_type metadata (non-Bambu printers). Must not contradict the file.
bambu_modelNoRequired for Bambu print operations unless BAMBU_MODEL is configured. Must match the printer and pre-sliced G-code.
bambu_tokenNoAccess token for Bambu Lab printers (default: value from env)
bambu_serialNoSerial number for Bambu Lab printers (default: value from env)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full behavioral burden, and it does meaningful work: it discloses that the server downloads and inspects the exact file, starts a uniquely named checked copy, and requires printer-state checks plus human confirmation. It omits what happens to an in-progress print and any auth/failure semantics, but the human-confirmation and refuse-behavior disclosures are well beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action before the behavioral detail and the alternative. Dense but every clause earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with no annotations and no output schema, the description supplies the key behavioral context (download/inspect, checked copy, human confirmation, refusal path) an agent needs. It stops short of describing failure modes or what a successful start returns, but the core is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all nine parameters including the material/Bambu constraints and enum. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (start printing) and resource (a G-code file already stored on the printer), and explicitly carves out the scope from siblings like upload_gcode and process_and_print_stl. An agent can tell this apart from other print tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use and when-not: printers whose API cannot download files (Repetier, Prusa, Creality) refuse, and the description routes the agent to upload_gcode with print=true in that case. This is a named alternative with the selecting condition spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

translate_stlC

Move an STL model along specific axes

ParametersJSON Schema
NameRequiredDescriptionDefault
stl_pathYesPath to the STL file
translate_xNoTranslation along X-axis in millimeters
translate_yNoTranslation along Y-axis in millimeters
translate_zNoTranslation along Z-axis in millimeters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the STL is modified in place or a new file is written, what the tool returns, whether multiple axes can be combined, or any failure behavior — all important for a file-mutating geometry operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no wasted words, front-loaded with the action. It is efficient, though bordering on under-specified rather than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should explain mutation/return behavior and at least gesture at constraints. For a 4-parameter file-transforming tool, the one-line description leaves the agent without enough context to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents each axis parameter with units (millimeters), so the baseline is 3. The description adds no additional semantics beyond the axes already captured in structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Move') and resource ('an STL model') with axis scope, which is clearer than a bare name restatement. However, it does not differentiate itself from near siblings like rotate_stl, scale_stl, or center_model, which also transform the model's geometry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g. valid STL path, loaded model), and no reference to alternatives such as rotate_stl or scale_stl. The agent must infer usage purely from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_gcodeA

Upload G-code content or a local G-code file path to the printer. With print=true the exact uploaded bytes are inspected first (every S/R heater target, tool changes, hardware and material ceilings), printer state is checked, and a human confirmation is requested before the print starts.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHostname or IP address of the printer (default: value from env)
portNoPort of the printer API (default: value from env)
typeNoType of printer management system (octoprint, klipper, duet, repetier, bambu, prusa, creality) (default: value from env)
gcodeNoG-code content, or a local path to a G-code file.
printNoStart printing after upload when the printer backend supports it. Printing requires a declared material from slicer metadata (; filament_type = PLA) or the material argument.
api_keyNoAPI key for authentication (default: value from env)
filenameNoFilename to use on the printer. Defaults to the basename of gcode_path when omitted.
materialNoDeclared filament material (for example PLA, PETG, ABS, ASA, TPU, PA, PC) when the G-code has no slicer filament_type metadata. Must not contradict the file. Material ceilings limit nozzle targets.
gcode_pathNoLocal path to a G-code file to upload.
bambu_modelNoRequired for Bambu print operations unless BAMBU_MODEL is configured. Must match the printer and pre-sliced G-code.
bambu_tokenNoAccess token for Bambu Lab printers (default: value from env)
bambu_serialNoSerial number for Bambu Lab printers (default: value from env)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does substantial work: it discloses that with print=true the exact bytes are inspected (S/R heater targets, tool changes, hardware and material ceilings), printer state is checked, and human confirmation is required. That is meaningful behavioral context beyond the schema. It still omits auth/credential requirements and failure behavior, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is uploaded and then the conditional safety behavior. The second sentence is dense but every clause (byte inspection, state check, confirmation) earns its place by conveying risk-relevant behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, annotation-free tool with no output schema, the description covers the highest-risk aspect (printing after upload) thoroughly. Since no output schema exists, return values need not be described, but it could say more about the non-print upload path and credential handling to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters in detail. The description reinforces that print=true requires a declared material from slicer metadata or the material argument, adding light emphasis but no syntax or format detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Upload) and resource (G-code content or local file path to the printer), covering both input modes in one sentence. This separates it from start_print (prints an existing file) and process_and_print_stl (slices then prints) without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies the semantics of the print=true flag and the safety pipeline that then applies, which implicitly tells the agent when the risky path is taken. However, it never explicitly contrasts this tool with sibling alternatives like start_print or process_and_print_stl, leaving the use-this-vs-that decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 30 tool updatesv1.2.9
    • First observedblender_mcp_call
    • First observedblender_mcp_edit_model
    • First observedblender_mcp_export_stl
    • First observedblender_mcp_status
    • First observedcancel_print
    • First observedcenter_model
    • First observedcheck_fulu_orca_setup
    • First observedconfirm_temperatures
    • First observedextend_stl_base
    • First observedfulu_bambu_network_rpc
    • First observedgenerate_stl_visualization
    • First observedget_printer_status
    • First observedget_slice_settings
    • First observedget_stl_info
    • First observedlay_flat
    • First observedlist_printer_files
    • First observedlist_templates
    • First observedmerge_vertices
    • First observedmodify_stl_section
    • First observedprint_3mf
    • First observedprocess_and_print_stl
    • First observedrotate_stl
    • First observedsave_template
    • First observedscale_stl
    • First observedset_printer_temperature
    • First observedslice_stl
    • First observedslice_with_template
    • First observedstart_print
    • First observedtranslate_stl
    • First observedupload_gcode

TDQS

B3.3/5.0

Scored across 30 tools

Disambiguation3/5

Several tools overlap on the 'start a print' action (upload_gcode with print=true, start_print, process_and_print_stl, print_3mf), and Blender editing/export tools (blender_mcp_call, blender_mcp_edit_model, blender_mcp_export_stl) have adjacent responsibilities. Descriptions do explain the safety gates and distinctions, but the boundary between print entry points requires careful reading.

Naming Consistency4/5

Nearly all tools use snake_case verb_noun form (get_printer_status, slice_stl, scale_stl, save_template), and the blender_mcp_ and fulu_ families are consistently prefixed. Minor deviations like the noun-only 'fulu_bambu_network_rpc' are the only inconsistency.

Tool Count3/5

At 30 tools this is on the heavy side, spanning STL manipulation, slicing, template management, printer control, and Blender integration. The breadth is real but the surface feels larger than necessary, with multiple print paths that could likely be consolidated.

Completeness4/5

Coverage is strong: STL inspection/transformation, slicing with templates, printer status/control, safety-gated printing, temperature verification, and Blender round-tripping are all present. Minor gaps exist (e.g., no explicit job-queue or print-history operations), but core lifecycle operations are covered.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that enables AI assistants to control and monitor Klipper 3D printers via the Moonraker API. It supports comprehensive printer management, including G-code execution, toolchanger operations, and real-time status monitoring.
    25
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to submit, slice, and start 3D prints with configurable gates, preview approval, and monitoring, via a self-hosted print daemon.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage multiple 3D printers via MCP, including monitoring temperatures and progress, uploading and slicing models, controlling prints, and viewing cameras.
    19 npm
    MIT