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을 사용하여 의존성을 포함한 단일 파일이 다음과 같이 작동합니다.ruby cmake.rb server: GitHub Copilot 등 AI 에이전트를 위한 MCP 서버 모드ruby cmake.rb: 개발자가 터미널에서 직접 실행하는 CLI 모드require_relative 'cmake': 다른 루비 스크립트에서 기능을 가져다 쓰는 라이브러리 모드
이러한 방식은 개발자와 AI가 동일한 도구와 동일한 예측 가능한 상태를 공유하게 함으로써, 빌드 오류와 같은 부수적인 문제에 시간을 허비하지 않고 핵심 로직에 집중할 수 있게 도와줍니다.
4. 기술적 구현 및 향후 전망
현재 SchnellMCP는 단일 파일 처리와 기본 기능을 제공하는 프로토타입 단계입니다. SchnellMCP::Server.run(__FILE__) 한 줄로 서버를 구동할 수 있을 만큼 극도로 단순화되어 있으며, 저자는 이를 GitHub Copilot과 연동하여 수개월간 실무에서 안정적으로 사용해 왔습니다. 비록 현재는 해킹에 가까운 최소한의 코드로 구현되어 있으나, 향후 ruby-sdk와 같은 표준 백엔드를 도입하여 프로토콜 핸들링을 강화할 계획을 가지고 있습니다. 이는 루비 개발자들이 가진 작은 스크립트들이 AI 시대에 강력한 도구로 변모할 수 있음을 보여주는 사례입니다.