Ruby SDK로 MCP 서버 만들기
Ruby SDK로 MCP 서버 만들기
Ruby SDK에서 MCP 서버의 심장은 MCP::Server 클래스예요. 이 클래스가 JSON-RPC 요청과 응답을 처리하면서, MCP 스펙에 정의된 클라이언트 요청/응답 처리를 담당합니다.
주요 특징
- 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)
- Ruby SDK 클라이언트 가이드 — MCP 클라이언트 만들기
- Ruby SDK 설치 — 설치 방법
- Ruby SDK 예제 — 실행 가능한 예제