본문으로 건너뛰기

RubyMine의 LLM 친화적 MCP 도구 구축: 페이지네이션, 필터링 및 에러 설계 전략

Building LLM-Friendly MCP Tools in RubyMine: Pagination, Filtering, and Error Design | The RubyMine Blog

작성자
jeff
발행일
2026년 02월 25일
https://blog.jetbrains.com/ruby/2026/02/rubymine-mcp-and-the-rails-toolset/

핵심 요약

  • 1 RubyMine 2025.3은 Rails 프로젝트의 구조적 데이터를 AI 모델에 효율적으로 제공하기 위해 모델 컨텍스트 프로토콜(MCP) 기반의 전용 도구 세트를 도입했습니다.
  • 2 대규모 Rails 애플리케이션의 방대한 데이터를 처리하기 위해 오프셋 기반 페이지네이션과 서버 측 필터링을 결합하여 컨텍스트 윈도우 및 도구 호출 제한 문제를 해결했습니다.
  • 3 AI 모델이 오류를 스스로 수정하고 정확한 도구를 선택할 수 있도록 명확한 복구 메시지와 구체적인 JSON 스키마 설명을 포함한 LLM 친화적 설계를 적용했습니다.

도입

최근 개발 워크플로우에서 AI 어시스턴트의 역할이 커짐에 따라, IDE가 보유한 프로젝트의 구조적 정보를 모델에 효과적으로 전달하는 것이 중요해졌습니다. JetBrains는 RubyMine 2025.3 버전을 통해 Rails 프레임워크에 특화된 정보를 제공하는 MCP(Model Context Protocol) 도구 세트를 공개했습니다. 본 아티클은 대규모 Rails 코드베이스를 분석할 때 발생하는 컨텍스트 제한 및 효율성 문제를 해결하기 위해 RubyMine 팀이 적용한 소프트웨어 엔지니어링 측면의 설계 원칙과 기술적 통찰을 상세히 다룹니다.

1. MCP(Model Context Protocol)와 RubyMine의 통합 방식

MCP는 AI 애플리케이션이 외부 클라이언트와 원활하게 통신할 수 있도록 지원하는 오픈 소스 표준입니다. IntelliJ 기반의 IDE인 RubyMine은 자체적인 MCP 서버를 내장하고 있어, JetBrains AI Assistant나 Claude Code와 같은 도구가 프로젝트 데이터에 직접 접근할 수 있게 합니다. 특히 RubyMine 2025.3에서는 Rails 전용 도구 세트를 추가하여, 모델이 소스 코드의 원시 텍스트를 직접 검색하는 대신 IDE가 분석한 구조화된 Rails 데이터를 활용할 수 있도록 개선되었습니다. 이를 통해 모델은 컨트롤러, 뷰, 모델 간의 관계를 더 정확하게 파악할 수 있습니다.

2. 컨텍스트 윈도우 제한과 페이지네이션 전략

대규모 Rails 애플리케이션(예: GitLab)은 수백 개의 모델, 뷰, 컨트롤러를 포함하고 있어, 이를 한꺼번에 모델에 전달하면 컨텍스트 윈도우 제한을 초과하게 됩니다. 이를 해결하기 위해 RubyMine은 데이터를 청크 단위로 나누어 가져오는 페이지네이션을 도입했습니다. * 오프셋 기반 페이지네이션: 데이터셋의 시작점부터 특정 위치까지의 항목을 요청하는 방식입니다. * 캐싱 및 스냅샷: 데이터가 빈번하게 변하는 환경에서는 커서 기반이 유리하지만, RubyMine은 프로젝트 상태의 스냅샷과 캐시를 활용하므로 오프셋 방식을 채택했습니다. 캐시 키를 통해 데이터의 일관성을 검증하며, 모델은 필요에 따라 이전 페이지를 다시 요청할 수 있습니다.

3. 도구 호출 제한 및 서버 측 필터링의 중요성

대부분의 AI 어시스턴트는 무한 루프 방지를 위해 연속적인 도구 호출 횟수를 제한합니다(예: 15회). 만약 데이터가 20페이지에 달한다면 모델은 모든 데이터를 탐색하기 전에 차단될 수 있습니다. 이를 방지하기 위해 RubyMine은 강력한 서버 측 필터링 기능을 제공합니다. * 정교한 필터 매개변수: partiality_filter, controller_filter, path_filters 등을 통해 모델이 필요한 데이터만 정밀하게 타격하여 요청할 수 있게 합니다. * 효율성 극대화: 필터링을 통해 검색 범위를 좁히면 컨텍스트 공간을 절약할 수 있을 뿐만 아니라, 도구 호출 횟수도 획기적으로 줄일 수 있어 AI의 응답 속도와 정확도가 향상됩니다.

4. LLM 친화적인 도구 설계 및 에러 처리

단순히 기능을 제공하는 것을 넘어, 모델이 도구를 올바르게 사용하도록 유도하는 설계가 필수적입니다. * 명확한 복구 메시지: 에러 발생 시 단순히 실패를 알리는 것이 아니라, “페이지 번호는 1에서 3 사이여야 합니다”와 같이 구체적인 해결책을 제시하여 모델의 불필요한 재시도를 방지합니다. * 구조화된 스키마와 설명: JSON 스키마 내에 인간이 읽을 수 있는 설명과 구체적인 사용 예시(예: FQN 필터링 패턴)를 포함하여 모델이 도구의 우선순위와 데이터 해석 방법을 명확히 이해하도록 돕습니다. * 도구 개수 최적화: 클라이언트마다 지원하는 최대 도구 개수가 다르므로, 필수적인 기능 위주로 도구 세트를 콤팩트하게 유지하여 다른 MCP 서버와의 호환성을 높였습니다.

결론

RubyMine의 새로운 Rails MCP 도구 세트는 AI 모델이 복잡한 프레임워크 구조를 더 깊이 이해하고 정확한 답변을 생성할 수 있는 기반을 마련했습니다. 페이지네이션, 정교한 필터링, 그리고 명확한 에러 메시지 설계는 제한된 AI 자원을 최적화하는 핵심 요소입니다. 개발자는 이를 통해 대규모 프로젝트에서도 AI의 도움을 받아 더 효율적으로 코드를 탐색하고 개발할 수 있습니다. 향후 MCP 표준의 확산과 함께 IDE와 AI 간의 협업은 더욱 긴밀해질 것이며, 이번 사례는 그 설계 표준을 제시하고 있습니다.

댓글0

댓글 작성

댓글 삭제 시 비밀번호가 필요합니다.

이미 계정이 있으신가요? 로그인 후 댓글을 작성하세요.

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