MCP Tools: Rails 애플리케이션을 위한 AI 기반 도구
MCP Tools는 AI가 Rails 애플리케이션에 특화된 기능을 수행할 수 있도록 설계된 도구 집합입니다. 이는 Rails의 강력한 내부 성찰(introspection) 기능과 Packwerk와 같은 모듈화 도구를 활용하여 코드베이스에 대한 심층적인 정보를 제공합니다. 발표자는 “Packworkified Forkadon(Mastodon)” 프로젝트를 예시로 들어 MCP Tools의 실제 적용 사례를 시연합니다.
1. 코드베이스 이해 및 탐색
-
팀 소유권 및 팩(Pack) 질의:
query_packworkGem을 활용하여 코드베이스 내 모든 팀, 팩의 수, 소유권, 그리고 위반 사항을 식별합니다. 이는 대규모 코드베이스에서 누가 어떤 코드를 담당하는지 파악하는 데 필수적입니다. -
데이터 모델 파악: 특정 팀이 소유한 데이터 모델 목록을 제공하며, 각 모델의 목적, 속성, 관계, 스코프(scope) 등 상세 정보를 분석합니다. 이는 애플리케이션의 근간이 되는 데이터 구조를 빠르게 이해하는 데 도움을 줍니다.
-
요청 추적: 주어진 URL을 통해 해당 요청이 어떤 컨트롤러, 액션, 뷰, 그리고 관련 모델을 거치는지 파악합니다. 이를 통해 특정 페이지의 동작 방식을 신속하게 이해하고 문제 해결의 시작점을 찾을 수 있습니다.
2. 변경 영향도 분석 (Blast Radius)
-
모델 변경 영향: 특정 모델(예:
Instance모델)의 변경이 코드베이스에 미치는 영향을 측정합니다. AI는rip grep과 같은 빠른 코드 검색 도구와 Packwerk의 의존성 정보를 결합하여 영향을 받는 파일, 팩, 팀을 식별합니다. -
교차 팀 조정 필요성: 변경으로 인해 여러 팀이 영향을 받을 경우, 필요한 교차 팀 조정의 수준과 잠재적 위험을 평가합니다. 이는 PR(Pull Request) 오픈 전에 필요한 커뮤니케이션 및 협업 계획을 수립하는 데 중요한 정보를 제공합니다.
3. 아키텍처 분석 및 리팩토링 제안
-
공유 팩 분석: 대규모 공유 디렉토리 내의 파일들을 분석하여, 해당 파일이 어떤 상수(constant)를 참조하고 어떤 팩에 의해 가장 많이 사용되는지를 기반으로 더 적절한 위치로 이동할 것을 제안합니다. 이는 코드베이스의 모듈화를 개선하고 “쓰레기통(junk drawer)” 팩 문제를 해결하는 데 기여합니다.
-
의존성 및 결합도 시각화: 순환 의존성(circular dependencies) 및 높은 결합도(coupling) 문제를 식별하고 시각화(예: Mermaid 차트)하여 아키텍처의 병목 지점을 명확히 보여줍니다.
이러한 도구들은 AI가 여러 정보를 종합하여 개발자가 직접 파악하기 어려운 심층적인 인사이트를 제공함으로써, 코드베이스 관리의 효율성과 정확성을 크게 향상시킵니다.