Rails 애플리케이션에 MCP 서버 구축하기

Adding an MCP server to a Rails app

작성자
AVO
발행일
2024년 11월 25일

핵심 요약

  • 1 MCP는 LLM이 외부 서비스와 표준화된 방식으로 상호작용하도록 돕는 개방형 프로토콜로, 애플리케이션 컨텍스트 제공을 통해 작업 효율성을 증대시킵니다.
  • 2 Ruby on Rails 애플리케이션에 `fast-mcp` Gem을 설치하여 MCP 서버를 구축하고, 리소스와 도구를 정의함으로써 LLM이 데이터 조회 및 특정 작업을 수행하도록 연동할 수 있습니다.
  • 3 구축된 MCP 서버는 Cursor, Claude Desktop과 같은 LLM 클라이언트와 연결되어 데이터 분석, 보고서 생성, DB 레코드 업데이트 등 복잡한 작업을 대화형으로 자동화합니다.

도입

AI와 대규모 언어 모델(LLM)의 발전은 애플리케이션 개발 방식에 혁신적인 변화를 가져왔습니다. 코드 자동 완성부터 코드 관련 질의응답, 그리고 프로젝트 접근 및 변경이 가능한 특수 코드 편집기에 이르기까지, LLM은 개발 프로세스의 핵심 요소로 자리 잡았습니다. 이러한 변화의 최신 도구 중 하나인 Model Context Protocol(MCP)은 LLM이 외부 서비스와 더욱 효율적으로 상호작용하여 사용자 작업을 더욱 효과적으로 수행하도록 돕습니다. 본 글에서는 이 MCP의 개념을 이해하고, Ruby on Rails 애플리케이션에 MCP 서버를 추가하는 구체적인 방법을 학습합니다.

Model Context Protocol(MCP)은 애플리케이션이 LLM에 컨텍스트를 제공하는 방식을 표준화하기 위한 개방형 프로토콜입니다. REST나 RPC와 같이 애플리케이션 간 상호작용을 표준화하는 것처럼, MCP 서버는 LLM이 프로토콜을 구현하는 애플리케이션과 상호작용할 수 있도록 합니다. 이는 LLM이 클라이언트 역할을 하고 MCP 서버가 데이터를 검색하거나 필요할 때 작업을 수행하는 API의 API로 볼 수 있습니다.

MCP의 주요 사용 사례

Rails 애플리케이션 맥락에서 MCP 서버는 다음과 같은 유용한 기능을 제공합니다.

  • 데이터 분석: LLM이 애플리케이션 데이터에 접근하여 의사 결정을 돕는 분석 수행.

  • 보고서 작성: LLM이 필요한 리소스를 활용하여 원하는 형식의 보고서를 자동 생성.

  • 대화형 작업: 문서/프로젝트 관리, 데이터베이스 레코드 업데이트 등 대화 방식으로 수행.

  • 고객 지원: AI를 통해 고객 지원 팀의 작업을 자동화하고 지원.

  • 이상 감지: 앱 데이터에 직접 접근하여 이상 징후 분석 제공.

  • 이미지 생성: LLM이 애플리케이션에 직접 이미지를 제공하여 이미지 생성 프로세스 자동화. 이러한 기능들은 외부 MCP 서버와 결합될 때 무한한 가능성을 가집니다.

MCP 핵심 개념

MCP 구현에는 다음과 같은 주체와 기본 요소가 있습니다.

  • 주체:
    • 클라이언트 (Client): 지정된 서버로부터 정보를 소비하는 애플리케이션 (예: Claude Desktop, Cursor).
    • 서버 (Server): 리소스, 도구, 프롬프트를 통해 특정 기능을 노출하는 경량 앱.
    • 로컬 데이터 소스 (Local data sources): 서버가 안전하게 접근할 수 있는 컴퓨터 파일, 데이터베이스 등.
    • 원격 서비스 (Remote services): API를 통해 사용 가능한 외부 시스템.
  • 기본 요소 (Primitives):
    • 리소스 (Resources): 애플리케이션에서 접근 가능한 데이터 (예: 데이터베이스 레코드, 파일 내용). 데이터 조회(GET 요청)에 해당하며, 데이터 변형을 일으키지 않습니다.
    • 도구 (Tools): LLM이 MCP 서버 내에서 작업을 수행하기 위해 호출할 수 있는 함수. 계산, API 호출 등 데이터를 변경할 수 있는 작업을 포함합니다.
    • 프롬프트 (Prompts): 클라이언트가 목표 달성을 위해 대화를 안내하는 사전 정의된 재사용 가능한 템플릿.

Rails 애플리케이션에 MCP 서버 구축

Rails 앱에 MCP 서버를 추가하기 위해 fast-mcp Gem을 사용합니다.

  1. Gem 설치: fast-mcp Gem을 설치하고 bin/rails generate fast_mcp:install 명령을 실행합니다. 이 명령은 app/tools, app/resources 디렉토리와 ApplicationTool, ApplicationResource 등의 기본 클래스를 생성합니다.

  2. MCP Inspector 설치: npx -y @modelcontextprotocol/inspector 명령으로 MCP Inspector 도구를 설치하여 구현을 테스트할 수 있습니다. http://localhost:6274에서 접근 가능하며, Rails 서버의 /mcp/sse 엔드포인트와 연결합니다.

  3. 리소스 정의: ApplicationResource를 상속받아 uri, resource_name, description, mime_typecontent 메서드를 정의하여 데이터를 제공합니다. 예: AuthorByNameResource는 이름으로 저자를 조회합니다.

  4. 도구 정의: ApplicationTool을 상속받아 description, arguments (dry-schema 기반 유효성 검사), call 메서드를 정의하여 LLM이 수행할 수 있는 작업을 추가합니다.

    • CreateAuthorTool: 새로운 저자를 생성합니다.
    • CreateBookTool: 도서를 생성하거나 업데이트하고, 저자를 연결합니다.
    • PopulateCoverTool: 도서 ID와 URL을 받아 표지 이미지를 첨부합니다.

클라이언트와의 연결 및 활용

  • Cursor: ~/.cursor/mcp.json 파일에 MCP 서버 URL(http://localhost:3000/mcp/sse)을 추가하여 연결합니다. Cursor는 도구를 지능적으로 사용하여 도서 생성, 저자 등록, 표지 추가 등 복잡한 작업을 대화형으로 수행할 수 있습니다.

  • Claude Desktop: 현재 원격 호스트를 직접 지원하지 않으므로, mcp-proxy (Python 라이브러리)를 사용하여 SSE를 STDIO 전송으로 변환하는 프록시를 설정해야 합니다. claude_desktop_config.json 파일에 mcp-proxy 명령과 서버 URL을 지정합니다. Claude 또한 도구를 활용하여 작업을 수행하며, 첫 사용 시 권한을 요청합니다.

결론

Model Context Protocol은 LLM 클라이언트가 외부 데이터 소스 및 도구와 표준화된 방식으로 연결되도록 하는 오픈소스 프로토콜입니다. 이는 LLM이 외부 애플리케이션이나 데이터 소스와 상호작용하는 방식을 혁신하여, 사용자가 컨텍스트를 수동으로 제공할 필요 없이 대화형으로 복잡한 작업을 수행할 수 있도록 합니다. `fast-mcp` Gem을 활용하면 Ruby on Rails 애플리케이션에서 MCP 서버를 손쉽게 구축하고, 필요한 리소스와 도구를 정의하여 LLM의 기능을 확장할 수 있습니다. MCP Inspector나 실제 LLM 클라이언트와의 연동을 통해 구현을 테스트하고 활용할 수 있으며, MCP 서버는 LLM과의 작업 효율성을 크게 향상시키고 특히 비기술 직원의 생산성 증대에 기여할 수 있는 강력한 도구로 평가됩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

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