Rails 애플리케이션을 Model Context Protocol (MCP) 서버로 AI 준비시키기

[Euruko 2025] “Making Rails AI-Native with the Model Context Protocol” – Paweł Strzałkowski (Poland)

작성자
EuRuKo
발행일
2025년 11월 10일

핵심 요약

  • 1 Model Context Protocol(MCP)은 LLM이 웹 애플리케이션과 실시간으로 상호작용할 수 있도록 하는 AI 네이티브 개방형 표준입니다.
  • 2 Rails 애플리케이션은 공식 SDK Gem과 템플릿을 활용하여 MCP 서버로 쉽게 전환될 수 있으며, CRUD 작업을 MCP 도구로 노출하고 커스텀 도구를 생성할 수 있습니다.
  • 3 Ruby on Rails의 유연성과 성숙한 툴링을 통해 개발자는 창의적인 방식으로 AI 통합 웹 애플리케이션을 신속하게 구축하고 배포할 수 있습니다.

도입

본 발표는 2025년 가상의 시나리오를 통해 LLM(대규모 언어 모델)이 웹사이트와 직접 소통하여 여행 예약과 같은 복잡한 작업을 수행하는 미래를 제시합니다. 현재 LLM과 기존 웹 애플리케이션 사이에는 두꺼운 장벽이 존재하며, 개별적인 M*N 통합 방식은 확장성이 떨어지고 비효율적입니다. 이러한 문제를 해결하고 LLM이 실시간 상호작용을 할 수 있도록 하기 위해 AI 네이티브 프로토콜인 Model Context Protocol(MCP)이 도입되었습니다. 발표자는 Visuality Ruby Agency의 CTO인 Pavo Stokovski이며, 20년 이상의 개발 경력을 바탕으로 Rails 애플리케이션을 MCP 기반의 AI 레디 서비스로 만드는 방법을 소개합니다.

Model Context Protocol (MCP) 개요

MCP는 LLM에 실시간의 최신 컨텍스트를 제공하기 위한 개방형 표준입니다. Anthropic이 작년 11월에 도입했으며, Google과 OpenAI와 같은 주요 기업들의 지지를 받고 있습니다. MCP의 핵심은 LLM이 자체적으로 라이브 시스템에 연결할 수 없는 한계를 극복하는 것입니다.

MCP 아키텍처

  • MCP 호스트 (MCP Host): 사용자 대면 애플리케이션(예: ChatGPT, Claude, Gemini). LLM과 상호작용하며 MCP 서버로부터 컨텍스트를 가져옵니다.

  • LLM (Large Language Model): 호스트로부터 받은 프롬프트와 컨텍스트를 기반으로 응답하거나 도구 호출을 지시합니다.

  • MCP 서버 (MCP Server): HTTP 연결을 통해 호스트에 컨텍스트를 제공합니다. 서버는 애플리케이션의 기능과 데이터를 노출합니다.

MCP의 기본 요소 (Primitives)

  • 도구 (Tools): 서버의 기능 또는 수행할 수 있는 작업(예: 특정 위치의 날씨 예보, 게시물 발행).

  • 리소스 (Resources): 데이터 파일, 레코드, 로그, 이미지 등 LLM이 필요로 하는 모든 형태의 데이터.

  • 프롬프트 (Prompts): 사용자에게 제공되는 표준화된 지침 또는 레시피.

MCP를 활용한 상호작용 예시 (여행사 웹 앱)

  1. 호스트 초기화: 호스트 애플리케이션이 MCP 클라이언트 라이브러리를 사용하여 구성된 MCP 서버(여행사, 날씨 예보 등)에서 도구와 리소스를 가져옵니다.

  2. 사용자 프롬프트: 사용자가 “유럽 낭만 주말 여행을 예약해 줘. 날씨가 좋아야 해.”와 같은 프롬프트를 입력합니다.

  3. LLM 처리: LLM은 컨텍스트(도구, 리소스 포함)와 함께 프롬프트를 받아 여행 목록을 요청하는 도구 호출을 반환합니다.

  4. 도구 실행: 호스트는 MCP 서버에 해당 도구를 실행하도록 요청하고, 서버는 가능한 여행 목록을 반환합니다. 이 응답은 대화의 새로운 컨텍스트가 됩니다.

  5. 반복 및 정교화: 새로 획득한 여행 목록은 이전 프롬프트에 추가되어 다시 LLM으로 전송됩니다. LLM은 특정 도시의 날씨 예보를 요청하는 여러 도구 호출을 반환합니다.

  6. 최종 작업: 호스트는 날씨 예보 서버에 도구 호출을 하고 결과를 LLM에 다시 전송합니다. 최종적으로 LLM은 특정 여행(예: Viana de Castello)을 예약하는 도구 호출을 지시합니다. 이 과정을 통해 LLM은 실제 애플리케이션과 상호작용하여 복잡한 다단계 절차를 계획하고 실행합니다.

Rails 애플리케이션을 MCP 서버로 만들기

Rails 애플리케이션을 AI 레디 MCP 서버로 만드는 과정은 다음과 같습니다.

  1. 새 Rails 앱 초기화: rails new 명령어로 새 애플리케이션을 생성합니다.

  2. MCP 템플릿 적용: 발표자가 제공하는 템플릿을 적용하여 공식 MCP SDK Gem, MCP 서버 엔드포인트(컨트롤러 및 라우트), 스캐폴드 컨트롤러 제너레이터에 MCP 훅을 추가합니다.

  3. 모델 스캐폴딩: rails generate scaffold Post와 같이 Active Record 모델을 스캐폴딩하면, 각 CRUD(생성, 읽기, 업데이트, 삭제) 액션에 해당하는 MCP 도구가 자동으로 생성됩니다.
    • rake mcb_tools 명령어를 통해 정의된 MCP 도구 목록, 설명 및 입력 스키마를 확인할 수 있습니다.
    • MCP Inspector와 같은 도구를 사용하여 생성된 도구들을 디버깅하고 상호작용할 수 있습니다.
  4. 커스텀 도구 생성: mcp_tool generator를 사용하여 Active Record 모델에 의존하지 않는 커스텀 도구(예: 날씨 확인 도구)를 생성하고 비즈니스 로직을 구현할 수 있습니다. 이 도구는 외부 API와 연동하여 날씨 정보를 가져오는 등 복잡한 기능을 수행할 수 있습니다.

Rails 기반 MCP 호스트 애플리케이션

Rails는 MCP 호스트 애플리케이션을 구축하는 데에도 사용될 수 있습니다. 사용자 프롬프트를 처리하기 위한 엔드포인트와 일련의 절차가 필요합니다.

  1. MCP 클라이언트 인스턴스화: mcp-client Gem을 사용하여 MCP 서버 URL을 제공하여 클라이언트를 설정합니다.

  2. 프롬프트 및 도구 로드: 시스템 프롬프트와 사용자 프롬프트를 설정하고, MCP 클라이언트를 통해 서버에서 도구를 로드합니다. 이를 LLM(예: GPT)에 전송합니다.

  3. 도구 호출 처리: LLM이 도구 호출을 반환하면, 호스트는 MCP 클라이언트를 통해 해당 도구들을 실행하고 그 결과를 메시지 메모리에 저장합니다.

  4. 컨텍스트 유지: 대화의 컨텍스트를 유지하기 위해 모든 메시지와 도구 호출 결과를 저장하고, LLM에 다시 전송하여 대화를 이어갑니다.

실제 데모 및 시사점

발표자는 Kamal을 사용하여 프로덕션 환경에 배포된 블로그 애플리케이션을 시연했습니다. Cloud Desktop과 자체 개발한 Rails MCP 호스트 애플리케이션을 통해 LLM이 블로그 게시물 생성, 댓글 작성, 날씨 확인 등 다양한 작업을 수행하는 과정을 보여주었습니다. 특히 Hotwire를 사용하여 실시간으로 웹 페이지가 업데이트되는 모습은 LLM과 웹 애플리케이션의 원활한 상호작용을 인상적으로 보여주었습니다.

CRUD 도구는 학습을 위한 좋은 출발점이지만, LLM은 한 번에 많은 도구를 사용하는 데 능숙하지 않으므로, 더 큰 기능을 하나의 도구로 집약하는 것이 좋습니다.

결론

Ruby on Rails의 뛰어난 유연성과 성숙한 툴링 덕분에 Rails 애플리케이션을 MCP 서버로 전환하는 것은 매우 쉽고 신속하게 이루어질 수 있습니다. 단일 템플릿 적용과 스캐폴딩만으로 기본적인 AI 레디 서버를 구축할 수 있으며, 이는 오픈소스 커뮤니티와 SDK 개발자들의 노고 덕분입니다. 향후 과제로는 OAuth와 같은 인증 시스템 구현 및 도구 외에 리소스, 프롬프트, 완성(completion) 등 다른 MCP 기본 요소들을 Rails에 통합하는 것이 있습니다. Ruby 개발자들은 이러한 AI 통합의 새로운 시대에 필요한 모든 도구를 갖추고 있으며, 창의적인 접근 방식을 통해 무한한 가능성을 탐색할 수 있을 것입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!