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:create및rails db:migrate로 데이터베이스를 설정합니다.
2. 초기 데이터 시딩
-
db/seeds.rb파일에 몇 가지JobApplication데이터를 추가하여 실제와 유사한 데이터를 준비합니다. -
rails db:seed를 실행하여 데이터를 로드하고,rails s로 서버를 시작하여http://localhost:3000/job_applications에서 데이터 존재 여부를 확인합니다.
3. JSON API 엔드포인트 노출
-
config/routes.rb에namespace :api아래resources :jobs, only: [:index]를 추가하여 API 경로를 정의합니다. -
app/controllers/api/jobs_controller.rb에index액션을 구현하여status및min_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", ...)를 정의하여status와min_salary를 입력으로 받아 Rails API를 호출하고 결과를 반환하는 MCP 도구를 구현합니다. -
LLM 클라이언트(Claude Desktop 또는 ChatGPT Desktop)의 MCP 설정 파일에 MCP 서버 정보를 추가하여 클라이언트가 이 도구를 인식하도록 등록합니다.
이러한 과정을 통해 LLM은 list_jobs 도구를 선택하고, MCP 서버는 Rails API를 호출하며, Rails는 구조화된 JSON을 반환하고, LLM은 이를 사용자에게 적합한 형식으로 응답합니다.