MCP(Model Context Protocol)를 사용하여 Rails 앱을 LLM에 노출하기

Exposing a Rails App to LLMs with Model Context Protocol (MCP) | by Manoj Mishra | Dec, 2025 | Medium

작성자
Ruby AI News
발행일
2025년 12월 26일

핵심 요약

  • 1 Model Context Protocol(MCP)을 활용하여 Rails 애플리케이션 데이터를 LLM에 안전하고 구조적으로 노출하는 방법을 제시합니다.
  • 2 Rails API와 Node.js 기반의 MCP 서버를 연동하여, LLM이 데이터베이스에 직접 접근하지 않고도 정형화된 데이터 질의를 수행하도록 구현합니다.
  • 3 이 통합 패턴은 LLM의 명시적 권한, 타입 지정된 입력, 감사 가능한 접근을 보장하며, Rails 앱의 핵심 로직을 AI와 분리하여 생산 등급의 AI 통합을 가능하게 합니다.

도입

이 문서는 Model Context Protocol(MCP)을 활용하여 Ruby on Rails 애플리케이션의 데이터를 대규모 언어 모델(LLM)에 안전하고 구조적으로 노출하는 방법에 대한 튜토리얼을 제공합니다. 기존의 프롬프트 해킹 방식의 한계를 극복하고, LLM이 Rails 앱의 실시간 데이터에 접근하여 "면접 중이며 급여가 12만 달러 이상인 모든 일자리를 보여줘"와 같은 복잡한 질문에 답변할 수 있도록 하는 통합 패턴을 구축하는 것이 목표입니다. Rails의 강력한 데이터 모델링 및 API 노출 능력과 MCP의 구조화된 도구 기반 접근 방식을 결합하여 프로덕션 수준의 AI 통합 솔루션을 제시합니다.

MCP를 통한 Rails 앱 노출은 LLM, MCP 서버(Node.js), Rails API, PostgreSQL로 구성된 아키텍처를 따릅니다. 여기서 Rails는 일반적인 웹 앱으로 기능하며, MCP 서버는 LLM과 Rails API 사이의 번역기 역할을 수행하여 LLM이 데이터베이스에 직접 접근하는 것을 방지합니다.

튜토리얼은 다음 단계를 통해 진행됩니다:

1. Rails 애플리케이션 생성 및 모델 정의

  • rails new jobtrackr --database=postgresql 명령으로 Rails 앱을 생성합니다.

  • JobApplication 스캐폴드(company, role, status, salary)를 생성하여 구인 신청 추적기를 만듭니다.

  • rails db:createrails db:migrate로 데이터베이스를 설정합니다.

2. 초기 데이터 시딩

  • db/seeds.rb 파일에 몇 가지 JobApplication 데이터를 추가하여 실제와 유사한 데이터를 준비합니다.

  • rails db:seed를 실행하여 데이터를 로드하고, rails s로 서버를 시작하여 http://localhost:3000/job_applications에서 데이터 존재 여부를 확인합니다.

3. JSON API 엔드포인트 노출

  • config/routes.rbnamespace :api 아래 resources :jobs, only: [:index]를 추가하여 API 경로를 정의합니다.

  • app/controllers/api/jobs_controller.rbindex 액션을 구현하여 statusmin_salary 파라미터로 필터링 가능한 JSON 응답을 제공합니다.

  • http://localhost:3000/api/jobs?status=interviewing&min_salary=150000와 같은 URL로 API 작동을 테스트합니다.

4. MCP 서버 구현 및 연동

  • jobtrackr-mcp 디렉토리를 생성하고 npm init -y, npm install @modelcontextprotocol/sdk node-fetch로 MCP 서버를 초기화합니다.

  • index.js 파일에 @modelcontextprotocol/sdk/server를 사용하여 Server 인스턴스를 생성합니다.

  • server.tool("list_jobs", ...)를 정의하여 statusmin_salary를 입력으로 받아 Rails API를 호출하고 결과를 반환하는 MCP 도구를 구현합니다.

  • LLM 클라이언트(Claude Desktop 또는 ChatGPT Desktop)의 MCP 설정 파일에 MCP 서버 정보를 추가하여 클라이언트가 이 도구를 인식하도록 등록합니다.

이러한 과정을 통해 LLM은 list_jobs 도구를 선택하고, MCP 서버는 Rails API를 호출하며, Rails는 구조화된 JSON을 반환하고, LLM은 이를 사용자에게 적합한 형식으로 응답합니다.

결론

이 통합 패턴은 LLM과 Rails 애플리케이션 간의 상호작용을 혁신적으로 개선합니다. 핵심적으로, LLM이 수행할 수 있는 작업을 명시적으로 정의하여 권한을 제어하고, 자연어의 모호성 대신 타입 지정된 입력을 통해 데이터 접근의 정확성을 높입니다. 또한, 모든 API 호출이 기록되고 추적 가능하여 감사성을 확보하며, AI 로직이 Rails 핵심 애플리케이션 내부에 침투하지 않도록 하여 Rails의 순수성을 유지합니다. 결과적으로, 스크래핑이나 프롬프트 해킹 없이도 LLM이 Rails 앱의 실시간 데이터를 활용하여 복잡한 질의에 답변할 수 있는 강력하고 안전하며 유지보수 가능한 AI 통합 솔루션을 제공합니다.

댓글 0

로그인이 필요합니다

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

로그인 하러 가기

아직 댓글이 없습니다

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