본문으로 건너뛰기

SchnellMCP: YARD 문서를 활용한 루비 네이티브 MCP 서버 구현 및 활용 경험

SchnellMCP: Ruby native MCP server experience | Ruby Elders

작성자
Ruby AI News
발행일
2026년 02월 20일
https://rubyelders.com/writings/2026-02-schnellmcp.html

핵심 요약

  • 1 기존의 루비 스크립트를 MCP 서버로 손쉽게 변환하기 위해 YARD 문서화 태그인 @mcp.tool을 활용하는 SchnellMCP 라이브러리를 소개합니다.
  • 2 복잡한 DSL이나 별도의 도구 정의 없이 표준 루비 코드와 주석만으로 LLM이 호출 가능한 도구를 생성하여 개발 생산성을 극대화할 수 있습니다.
  • 3 C++ 빌드 자동화 사례를 통해 CLI, 라이브러리, MCP 서버라는 세 가지 모드를 단일 루비 파일로 관리하는 효율적인 워크플로우를 제시합니다.

도입

이 글은 루비 개발자인 simi가 기존의 루비 스크립트를 인공지능(LLM)이 활용할 수 있는 MCP(Model Context Protocol) 서버로 전환하는 과정을 다룹니다. Python의 FastMCP와 같은 간결한 경험을 루비에서도 구현하고자 하는 시도에서 시작되었습니다. 저자는 새로운 DSL을 배우거나 도구 정의를 별도로 작성하는 대신, 루비의 전통적인 문서화 도구인 YARD를 활용하여 코드 자체가 MCP 도구가 되는 'SchnellMCP'라는 프로토타입을 개발하게 된 배경과 동기를 설명하며 루비 생태계에서의 새로운 가능성을 모색합니다.

1. MCP 서버 구축의 동기와 기존 생태계 현황

저자는 Python의 FastMCP 라이브러리가 데코레이터와 타입 힌트만으로 MCP 도구를 만드는 간결함에 영감을 받았습니다. 루비 생태계에도 이미 mcp-ruby, ruby-mcp-sdk와 같은 프로젝트가 존재하여 훌륭한 역할을 수행하고 있지만, 저자는 기존에 이미 작성된 루비 코드에 최소한의 어노테이션만 추가하여 MCP 서버로 즉시 변환하는 더 직관적인 방식을 원했습니다. 특히 별도의 DSL을 학습하거나 도구 정의를 위해 코드를 중복 작성하는 번거로움을 피하고, 코드 자체가 문서이자 도구 명세가 되는 구조를 지향했습니다.

2. SchnellMCP의 핵심 개념: YARD 메타데이터의 재발견

SchnellMCP의 혁신적인 아이디어는 루비의 표준 문서화 형식인 YARD를 활용하는 것입니다. 루비 개발자들은 이미 수십 년 동안 RDoc이나 YARD를 통해 메서드를 문서화해 왔으며, 여기에 이미 타입 정보와 설명이 포함되어 있다는 점에 착안했습니다.

  • @mcp.tool 태그: 기존 YARD 문서화 주석에 이 태그 하나만 추가하면 해당 메서드가 MCP 도구로 자동 노출됩니다.
  • 메타데이터 재사용: @param의 타입과 설명, @return의 정보를 그대로 MCP 도구의 JSON 스키마 명세로 사용합니다.
  • 자동 타입 캐스팅: YARD에 명시된 타입을 기반으로 LLM이 전달하는 문자열 인자를 루비의 적절한 객체 타입으로 자동 변환합니다.
  • LLM 친화성: 최근 LLM이 생성하는 루비 코드에는 YARD 주석이 포함되는 경우가 많은데, 이를 삭제하지 않고 그대로 MCP 도구의 설명서로 활용할 수 있다는 이점이 있습니다.

3. 실전 활용 사례: C++ 빌드 자동화와 ‘e-friends’와의 협업

저자는 본인이 익숙하지 않은 C++ 프로젝트를 진행하며 겪은 ‘빌드 고고학(Build Archaeology)’ 문제를 해결하기 위해 작성한 루비 스크립트에 SchnellMCP를 적용했습니다. 빌드 폴더 상태 확인, 캐시 무효화, CMake 설정 등 복잡한 상태 관리를 루비로 자동화하고, 이를 MCP를 통해 AI 에이전트(저자는 이를 ‘e-friends’라 지칭)에게 제공했습니다.

  • 단일 파일의 삼중 활용: bundler/inline을 사용하여 의존성을 포함한 단일 파일이 다음과 같이 작동합니다.
    1. ruby cmake.rb server: GitHub Copilot 등 AI 에이전트를 위한 MCP 서버 모드
    2. ruby cmake.rb: 개발자가 터미널에서 직접 실행하는 CLI 모드
    3. require_relative 'cmake': 다른 루비 스크립트에서 기능을 가져다 쓰는 라이브러리 모드

이러한 방식은 개발자와 AI가 동일한 도구와 동일한 예측 가능한 상태를 공유하게 함으로써, 빌드 오류와 같은 부수적인 문제에 시간을 허비하지 않고 핵심 로직에 집중할 수 있게 도와줍니다.

4. 기술적 구현 및 향후 전망

현재 SchnellMCP는 단일 파일 처리와 기본 기능을 제공하는 프로토타입 단계입니다. SchnellMCP::Server.run(__FILE__) 한 줄로 서버를 구동할 수 있을 만큼 극도로 단순화되어 있으며, 저자는 이를 GitHub Copilot과 연동하여 수개월간 실무에서 안정적으로 사용해 왔습니다. 비록 현재는 해킹에 가까운 최소한의 코드로 구현되어 있으나, 향후 ruby-sdk와 같은 표준 백엔드를 도입하여 프로토콜 핸들링을 강화할 계획을 가지고 있습니다. 이는 루비 개발자들이 가진 작은 스크립트들이 AI 시대에 강력한 도구로 변모할 수 있음을 보여주는 사례입니다.

결론

SchnellMCP는 루비 개발자가 이미 작성해 둔 유용한 스크립트들을 AI 에이전트와 공유할 수 있는 가장 자연스럽고 루비다운 방법을 제시합니다. 단일 루비 파일로 CLI, 라이브러리, MCP 서버라는 세 가지 역할을 수행하게 함으로써 코드 중복을 방지하고 유지보수성을 극대화합니다. 비록 현재는 프로토타입 단계이지만, 루비의 철학에 부합하는 간결한 도구 제작 방식은 AI 시대의 루비 생태계 확장에 중요한 시사점을 던져줍니다. 개발자들은 자신의 스크립트 서랍을 열어 AI에게 새로운 능력을 부여해 볼 것을 권장받습니다.

댓글0

댓글 작성

댓글 삭제 시 비밀번호가 필요합니다.

이미 계정이 있으신가요? 로그인 후 댓글을 작성하세요.

0/1000
정중하고 건설적인 댓글을 작성해 주세요.