Ruby SDK로 MCP 서버 만들기

Ruby SDK로 MCP 서버 만들기

Ruby SDK에서 MCP 서버의 심장은 MCP::Server 클래스예요. 이 클래스가 JSON-RPC 요청과 응답을 처리하면서, MCP 스펙에 정의된 클라이언트 요청/응답 처리를 담당합니다.

출처: Building an MCP Server - MCP Ruby SDK

주요 특징

  • JSON-RPC 2.0 메시지 처리 구현
  • 프로토콜 초기화와 역량 협상 지원
  • 도구 등록·호출 관리
  • 프롬프트 등록·실행 지원
  • 리소스 등록·조회 지원
  • stdio 및 Streamable HTTP(SSE 포함) 트랜스포트 지원
  • 목록 변경 알림 지원(도구, 프롬프트, 리소스)
  • 루트 지원(서버→클라이언트 파일시스템 경계 조회)
  • 샘플링 지원(서버→클라이언트 LLM 완성 요청)
  • 목록 연산의 커서 기반 페이지네이션 지원
  • 서버/클라이언트 양쪽에서 진행 중 요청 취소 지원(notifications/cancelled)

지원 메서드

  • initialize — 프로토콜을 초기화하고 서버 역량을 반환
  • server/discover — 세션 없는 역량 탐색(MCP 2026-07-28, SEP-2575): initialize 전에 Mcp-Session-Id 없이 서버 역량을 반환하고, 무상태 현대 생명주기를 고정합니다. Discovery 참고
  • subscriptions/listen — 장수명 알림 구독 스트림(MCP 2026-07-28, SEP-2575), 레거시 HTTP GET 수신 스트림을 대체. Notification Subscriptions 참고
  • 멀티 라운드 트립 input_required 결과(MCP 2026-07-28, SEP-2322): 핸들러가 MCP::Server::InputRequiredResult를 반환해 서버 주도 요청 대신 클라이언트에 추가 입력을 요청. Multi-Round-Trip Results 참고
  • ping — 간단한 헬스 체크
  • logging/setLevel — 서버의 최소 로그 레벨 구성
  • tools/list — 등록된 모든 도구와 그 스키마 나열
  • tools/call — 주어진 인자로 특정 도구 호출
  • prompts/list — 등록된 모든 프롬프트와 그 스키마 나열
  • prompts/get — 이름으로 특정 프롬프트 조회
  • resources/list — 등록된 모든 리소스와 그 스키마 나열
  • resources/read — 이름으로 특정 리소스 조회
  • resources/templates/list — 등록된 모든 리소스 템플릿과 그 스키마 나열
  • resources/subscribe — 특정 리소스의 업데이트 구독
  • resources/unsubscribe — 특정 리소스의 업데이트 구독 해제
  • completion/complete — 프롬프트 인자와 리소스 URI에 대한 자동완성 제안 반환
  • roots/list — 클라이언트에 파일시스템 루트 요청(서버→클라이언트)
  • sampling/createMessage — 클라이언트에 LLM 완성 요청(서버→클라이언트)
  • elicitation/create — 클라이언트에 사용자 입력 요청(서버→클라이언트)

더 알아보기 (Learn more)