Rails 앱에 MCP 서버 통합하기: ChatGPT를 통한 애플리케이션 제어 시도

Building an MCP-powered assistant

작성자
jeff
발행일
2025년 10월 24일

핵심 요약

  • 1 Rails 애플리케이션에 MCP(Multi-Modal Chat Protocol) 서버를 통합하여 ChatGPT 인터페이스를 통해 앱 기능을 제어하는 방법을 탐색했습니다.
  • 2 `fast_mcp` Gem을 활용하여 사용자 스케줄을 조회하는 리소스를 정의하고, 로컬 개발 환경 노출 및 설정 과정에서 다양한 기술적 난관에 직면했습니다.
  • 3 ngrok, Rails 호스트 설정, OpenAI IP 허용 목록 등 복잡한 설정 문제로 인해 실시간 스트림 중 MCP 서버 연결 성공에는 실패했으나, 구현 과정과 고려사항을 상세히 다루었습니다.

도입

본 세션에서는 ThoughtBot의 ThoughtBots AI 및 포커스 시리즈의 일환으로, Rails 애플리케이션에 Multi-Modal Chat Protocol(MCP) 서버를 통합하는 방안을 논의했습니다. 이는 기존에 구현했던 애플리케이션 내에서의 함수 호출 방식과 달리, ChatGPT 인터페이스에서 직접 Rails 앱의 기능을 제어할 수 있도록 하는 새로운 접근 방식입니다. 개발 과정에서 발생한 기술적 문제 해결과 함께, Rails 앱의 기능을 LLM(Large Language Model)에 노출하는 방법에 대한 심층적인 탐색이 이루어졌습니다.

ChatGPT 인터페이스를 통해 Rails 애플리케이션의 기능을 활용하기 위해 MCP 서버 통합을 시도했습니다. 이 과정에서 여러 Ruby Gem들이 검토되었으며, 각 Gem의 특성과 용도가 논의되었습니다.

MCP Gem 비교

  • Rails MCP server: 개발 보조용 Gem으로, 프로젝트 파일 구조, 라우트, 모델 정보 등을 LLM에 노출하여 개발 지원에 활용됩니다. 본 스트림의 목표(제품 기능 통합)와는 목적이 달라 선택되지 않았습니다.

  • fast_mcp: 제품 수준의 MCP 서버 통합을 위한 Gem으로, 별도의 Ruby 서버를 실행하며 Tool (특정 동작 수행)과 Resource (데이터 공유)를 정의합니다. 본 스트림에서 채택된 Gem입니다.

  • active_mcp: Rails 지향적인 접근 방식을 취하며, 기존 컨트롤러와 모델에 직접 통합되도록 설계되었습니다. 아직 개발 초기 단계로, 향후 발전 가능성이 주목됩니다.

fast_mcp를 활용한 ‘hub’ 앱 스케줄 기능 구현 시도

  • 목표: ‘hub’ 애플리케이션에서 사용자의 주간 스케줄을 조회하는 기능을 MCP 서버를 통해 제공합니다.

  • ScheduleResource 정의: 스케줄 데이터를 가져오는 Resource로 정의되었으며, week_start_date 매개변수를 받도록 설계되었습니다. ‘hub’ 앱의 Agenda 클래스를 활용하여 특정 사용자 및 주간의 스케줄 정보를 가져옵니다.

  • JSON 응답 및 직렬화: 반환되는 JSON 데이터에 프로젝트 이름과 같은 관련 정보를 포함할지, 아니면 별도의 프로젝트 엔드포인트를 통해 조회하도록 할지에 대한 고려사항이 논의되었습니다. ActiveModelSerializers를 활용한 데이터 직렬화의 필요성도 언급되었습니다.

기술적 난관 및 디버깅

MCP 서버를 ChatGPT에 연결하는 과정에서 여러 설정 문제에 직면했습니다.

  • 로컬 서버 노출: ngrok을 사용하여 로컬 Rails 개발 서버를 외부 인터넷에 노출해야 했습니다.

  • Rails 호스트 설정: Rails의 개발 환경에서 기본적으로 로컬 호스트 외의 접근을 차단하므로, config.hostsngrok 도메인을 추가해야 했습니다.

  • fast_mcp 설정: fast_mcp 이니셜라이저에서 local_host_only: false, allowed_origins, allowed_ips 등을 설정하여 OpenAI의 접근을 허용해야 했습니다. 특히 OpenAI의 IP 주소 범위에 대한 정규 표현식 설정에서 어려움을 겪었습니다.

  • 엔드포인트 연결 실패: Forbidden404 Not Found 오류가 지속적으로 발생했으며, /mcp, /mcp/sse, /mcp/messages 등 다양한 서브패스를 시도했으나 최종적인 연결 성공에는 이르지 못했습니다.

결론

비록 실시간 스트림 중 Rails 애플리케이션과 ChatGPT 간의 MCP 서버 연결을 완전히 성공시키지는 못했지만, 이 과정은 MCP 서버를 제품에 통합할 때 발생할 수 있는 실제적인 도전 과제와 필요한 설정 단계를 명확히 보여주었습니다. 특히 로컬 개발 환경을 외부 LLM에 노출하는 보안 및 네트워크 구성의 복잡성을 강조했습니다. 이번 시도를 통해 개발자들은 MCP 서버가 Rails 애플리케이션에 어떻게 통합될 수 있는지, 그리고 LLM을 활용한 애플리케이션 기능 확장의 잠재력을 이해하는 데 귀중한 통찰을 얻었을 것입니다. 향후 추가적인 디버깅을 통해 완전한 통합을 달성할 예정입니다.

댓글 0

로그인이 필요합니다

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

로그인 하러 가기

아직 댓글이 없습니다

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