보안 강화
hellvinz의 기여로 Rails MCP Server는 다음과 같은 보안 개선 사항을 적용했습니다.
- PathValidator 모듈: 모든 파일 접근 분석기를 보호하는 중앙 집중식 유효성 검사 계층이 도입되었습니다. 이를 통해 경로 순회(path traversal) 시도가 차단되고,
master.key,credentials.yml.enc,.env와 같은 민감한 파일 접근이 자동으로 필터링됩니다.- 경로 순회 공격(
../시퀀스) 방지 - 프로젝트 외부 절대 경로 접근 차단
- 민감 파일 읽기 시도 방지
- 경로 순회 공격(
-
주입 방지: 쉘 명령 실행 시 문자열 보간 대신 배열 인수를 사용하는
IO.popen이 사용됩니다. 스키마 쿼리의 테이블 이름은 엄격한 패턴에 따라 유효성 검사가 이루어져 잠재적인 주입 벡터를 차단합니다. - CI 인프라: 의존성 업데이트를 위한 Dependabot, 정적 분석을 위한 CodeQL, OpenSSF Scorecard 통합, 취약점 보고를 위한
SECURITY.md파일 추가 등 필수적인 보안 인프라가 구축되었습니다.
샌드박스 환경 지원
AI 코딩 에이전트가 샌드박스 환경(컨테이너 또는 제한된 쉘)에서 실행되는 경향이 증가함에 따라, --single-project 플래그가 도입되었습니다. 이 플래그는 서버가 현재 작업 디렉토리를 유일한 프로젝트로 사용하도록 지시하여, 구성 파일을 건너뛰고 GitHub Copilot Agent 및 Claude Code Agent와 같은 도구에서 즉시 작동하도록 합니다.
간소화된 프로젝트 설정
기존의 ~/.config/rails-mcp/projects.yml을 통한 수동 설정 외에, 다음과 같은 유연한 프로젝트 설정 방식이 추가되었습니다.
-
--single-project플래그: 샌드박스 에이전트, CI/CD 환경에 적합 -
RAILS_MCP_PROJECT_PATH환경 변수: 명시적인 경로 제어 -
자동 감지:
Gemfile에서 Rails 앱을,gemspec에서 Rails 엔진을 자동으로 찾아 단일 프로젝트 환경에서 즉시 작동
Rails 8.1 호환성
Rails 8.1에서 내부 콜백 API가 변경됨에 따라 analyze_controller_views 도구가 callback.options 대신 새로운 방식으로 :only 및 :except 조건을 추출하도록 수정되었습니다. 이 변경 사항은 Rails 6.0부터 8.1까지 하위 호환성을 유지합니다.
기타 변경 사항 및 Breaking Change
-
오류 메시지 개선: 사용자 친화적인 힌트가 포함되어 사용 편의성이 향상되었습니다.
-
execute_tool파라미터 전달 수정: MCP 클라이언트가 파라미터를 올바르게 전달받도록 수정되었습니다. -
load_guide입력 유효성 검사: 가이드 이름에서 경로 순회 시도를 방지합니다. -
Breaking Change:
load_guide분석기의 파라미터가guides에서library로 변경되었습니다. 이는 문서 라이브러리(rails, turbo 등)를 선택한다는 의미를 명확히 하기 위함입니다.