MCP는 2024년 11월 Anthropic에 의해 개발된 비교적 새로운 표준으로, AI 에이전트가 애플리케이션과 구조화된 방식으로 상호작용할 수 있도록 하는 계층 역할을 합니다. 이는 기존 API 엔드포인트를 언어 모델이 쉽게 이해하고 활용할 수 있는 형식으로 감싸는 개념으로 이해할 수 있습니다. FastMCP는 이러한 MCP를 Ruby on Rails 애플리케이션에 도입하여, 개발자가 복잡한 맞춤형 API를 작성하거나 프롬프트 해킹에 의존하는 대신 명확한 인터페이스를 가진 도구를 정의하고 나머지는 에이전트가 처리하도록 합니다. FastMCP는 Ruby 및 Rails와 자연스럽게 연동되도록 설계되었으며, 도구 정의, 리소스 접근, 입력 유효성 검사, 그리고 HTTP 및 stdio와 같은 다양한 전송 계층을 지원합니다. 또한 Rails 컨벤션을 따르므로 프레임워크와의 충돌 없이 쉽게 통합될 수 있습니다. 현재 프로토콜 자체가 초기 단계이므로 gem 역시 완전히 성숙하지는 않았지만, Ruby on Rails 애플리케이션 내에서 MCP의 작동 방식을 탐색하기에는 충분합니다.
FastMCP를 Rails에 설정하는 과정은 매우 간단합니다. 기존 To-Do 애플리케이션을 예시로, bundle add fast-mcp
및 bin/rails generate fast_mcp:install
명령어를 통해 손쉽게 설치할 수 있습니다. 설치가 완료되면 FastMCP는 Rails 프로젝트에 세 가지 주요 구성 요소를 추가합니다. 첫째, config/initializers/fast_mcp.rb
파일은 미들웨어 구성을 담당하며 인증 토큰, CORS 설정, 경로 접두사 등을 설정할 수 있습니다. 둘째, app/tools
디렉토리는 ApplicationTool
기본 클래스와 도구 정의 예시인 SampleTool
을 포함합니다. 셋째, app/resources
디렉토리도 유사하게 ApplicationResource
및 SampleResource
를 포함하여 데이터 노출을 돕습니다. 이 설정을 통해 복잡한 과정 없이 즉시 작동하는 MCP 서버를 가질 수 있으며, npx @modelcontextprotocol/inspector
를 사용하여 서버의 도구를 확인하고 직접 테스트할 수 있습니다.
FastMCP를 이용한 도구 개발은 직관적입니다. 예시로, To-Do 목록을 가져오는 GetTodosTool
과 To-Do를 생성/업데이트하는 CreateTodoTool
을 만들 수 있습니다. GetTodosTool
은 ApplicationTool
을 상속받아 description
블록에 도구의 기능을 LLM이 이해할 수 있도록 설명하고, call
메서드에 실제 To-Do 목록을 반환하는 로직을 구현합니다. 인수를 사용하는 CreateTodoTool
의 경우, arguments
블록을 통해 필수 및 선택적 인수를 정의하고, call
메서드에서 이 인수를 받아 To-Do의 생성 또는 업데이트 로직을 처리합니다. 이렇게 정의된 도구들은 MCP Inspector를 통해 그 기능과 작동을 시각적으로 확인하고 테스트할 수 있습니다.
나아가, 개발 환경을 실제 MCP 클라이언트로 전환하여 프로토콜의 모든 이점을 활용할 수 있습니다. VS Code에서 MCP 서버를 구성함으로써 AI 에이전트가 Rails 앱과 상호작용하는 방식을 직접 경험할 수 있습니다. VS Code의 명령 패널에서 MCP 서버 추가 옵션을 선택하고, HTTP 방식을 통해 http://localhost:3000/mcp/sse
주소로 실행 중인 MCP 서버를 연결합니다. 이후 서버에 이름을 부여하고 현재 Workspace에서만 사용하도록 설정하면, Copilot Chat의 Agent 모드를 사용하여 LLM과 함께 도구를 테스트할 수 있습니다. 최종적으로 브라우저에서 To-Do 애플리케이션을 확인하여 LLM을 통한 변경 사항이 올바르게 반영되었는지 검증할 수 있습니다.