Model Context Protocol(MCP)은 애플리케이션이 LLM에 컨텍스트를 제공하는 방식을 표준화하기 위해 도입된 개방형 프로토콜입니다. 이는 LLM이 단순히 텍스트를 생성하는 것을 넘어, 외부 시스템의 기능을 호출하고 그 결과를 활용하여 더욱 정교하고 유용한 응답을 생성할 수 있도록 합니다. MCP 아키텍처는 크게 세 가지 구성 요소로 이루어집니다: 호스트(Host), MCP 클라이언트(Client), MCP 서버(Server). 호스트는 사용자가 실행하는 애플리케이션(예: Ruby on Rails 앱)이며, MCP 클라이언트는 호스트와 MCP 서버 간의 인터페이스 역할을 합니다. MCP 서버는 실제 기능을 제공하는 도구, 리소스, 프롬프트 등을 관리합니다.
MCP의 통신 방식으로는 동일 머신 내 프로세스 간 효율적인 통신을 위한 SPDIO(Standard Process IO)와 분산 환경에서 사용되는 스트리밍 HTTP(Streamable HTTP)가 있습니다. LLM과 MCP 서버 간의 상호작용 과정은 다음과 같습니다. 먼저 호스트는 MCP 클라이언트를 통해 서버로부터 사용 가능한 모든 기능(도구) 목록을 읽어옵니다. 다음으로 호스트는 LLM에 프롬프트와 함께 사용 가능한 기능 목록을 전달합니다. LLM은 이 정보를 바탕으로 필요한 도구를 결정하고, 호스트는 LLM이 요청한 도구를 MCP 클라이언트를 통해 실행하고 그 결과를 다시 LLM에 전달하여 전체 컨텍스트를 유지합니다. 이 반복적인 과정을 통해 LLM은 다단계 작업을 수행하고 최종 응답을 생성합니다.
MCP는 도구(Tools) 외에도 리소스(Resources)와 프롬프트(Prompts)라는 추가적인 기본 요소를 제공합니다. 도구는 날씨 확인, 게시물 생성과 같이 LLM이 실행할 수 있는 기능입니다. 리소스는 상호작용 시작 시 추가 컨텍스트로 제공될 수 있는 데이터(예: RAG(Retrieval Augmented Generation)와 유사)이며, 프롬프트는 MCP 서버가 LLM에 특정 방식으로 질문하도록 제안하는 ‘요리책’과 같은 역할을 합니다. 이러한 요소들은 호스트(애플리케이션) 또는 LLM 자체에 의해 제어되어 유연성을 제공합니다.
발표자는 Ruby on Rails 애플리케이션을 MCP 서버로 변환하는 라이브 데모를 시연했습니다. 이 데모를 통해 LLM이 Rails 애플리케이션의 게시물 생성 기능을 직접 호출하여 제목과 본문을 포함한 게시물을 생성하고 데이터베이스에 저장하는 과정을 보여주었습니다. 이는 기존 Ruby 애플리케이션을 AI 기반 서비스로 확장하는 강력한 가능성을 시사합니다. 현재 Ruby 개발을 위한 공식 MCP SDK, Fast MCP 서버, Action MCP, Ruby MCP 클라이언트 등 다양한 라이브러리가 존재하여 개발자들이 MCP를 쉽게 도입할 수 있도록 지원합니다.