Skip to main content
Glama
mrt-fe-review-washer

mrt-fe-review-washer

by jaeuk-mrt

mrt-fe-review-washer

코더래빗(CodeRabbit)처럼 "리뷰 결과를 저장/조회" 하고, Task 관리로 체계적인 수정까지 할 수 있는 한국어 중심 MCP 서버입니다.

🦐 mcp-shrimp-task-manager 스타일의 Task 관리 기능 내장!

핵심 철학: 이 서버가 LLM을 내장해서 리뷰를 '자동 생성'하기보다,
MCP 호스트(Claude Code/Cline/Claude Desktop 등)의 모델이 리뷰를 만들고,
서버는 diff/규칙 제공 + 결과 저장/조회 + Task 관리를 담당합니다.

요구사항

  • Node.js 18+

  • git (diff 수집용)

Related MCP server: mutual-review-mcp

설치/빌드

npm i
npm run build

📋 규칙 파일 관리 (중앙 집중식)

FE 리드가 이 MCP 서버의 templates/rules.ko.md 파일을 직접 관리합니다.

mrt-fe-review-washer/
└── templates/
    └── rules.ko.md   ← FE 리드가 관리하는 "원본"
  • 모든 프로젝트가 이 하나의 규칙 파일을 공유

  • 규칙 변경 시 MCP 서버만 업데이트하면 모든 프로젝트에 즉시 반영

  • 프로젝트별 복사본 관리 불필요

.mcp.json 연결(예시)

프로젝트(또는 사용자 설정)에 아래 형태로 등록합니다.

⚠️ 많은 MCP 호스트가 절대경로를 요구합니다.

{
  "mcpServers": {
    "mrt-fe-review-washer": {
      "command": "node",
      "args": ["/ABS/PATH/TO/mrt-fe-review-washer/dist/index.js"],
      "env": {
        "REPO_PATH": "/ABS/PATH/TO/YOUR/REPO"
      }
    }
  }
}

환경 변수

변수

설명

기본값

REPO_PATH

리뷰 대상 프로젝트 경로 (Tool에서 repoPath로 오버라이드 가능)

현재 작업 디렉토리

DATA_DIR

리뷰/Task 데이터 저장 경로

${REPO_PATH}/.review-data

REVIEW_RULES_PATH

규칙 파일 경로 (커스텀)

templates/rules.ko.md (MCP 서버 내)

💡 review.collect_diff와 review.make_prompt Tool에서 repoPath 파라미터를 지정하면 환경변수 REPO_PATH를 오버라이드할 수 있습니다.

코드 리뷰 기준 (5가지)

이 MCP 서버는 다음 5가지 기준에 따라 코드 리뷰를 수행합니다:

1. 가독성(Readability)

  • 같이 실행되지 않는 코드가 하나의 함수/컴포넌트에 섞여 있지 않은가?

  • 구현 상세가 적절히 추상화되어 있는가?

  • 복잡한 조건에 의미 있는 이름이 붙어 있는가?

  • 매직 넘버에 이름이 붙어 있는가?

  • 삼항 연산자가 단순하게 사용되고 있는가?

2. 예측 가능성(Predictability)

  • 같은 이름을 가진 함수/변수가 동일한 동작을 하는가?

  • 같은 종류의 함수는 반환 타입이 통일되어 있는가?

  • 숨겨진 로직 없이 동작이 명시적으로 드러나는가?

3. 응집도(Cohesion)

  • 함께 수정되는 파일이 같은 디렉토리에 있는가?

  • 도메인별로 코드가 적절히 분리되어 있는가?

  • 매직 넘버가 상수로 정의되어 한 곳에서 관리되는가?

4. 결합도(Coupling)

  • 하나의 함수/Hook이 하나의 책임만 가지고 있는가?

  • 페이지 전체의 상태를 한 곳에서 관리하지 않는가?

  • Props Drilling이 발생하지 않는가?

5. 미시적 관점(Micro Perspective)

  • 조건부 렌더링 패턴이 일관되게 사용되는가? (ts-pattern, Show, SwitchCase)

  • 전역 상태 사용 기준이 적절한가?

  • TypeScript 타입 정의가 컨벤션에 맞는가?

  • 암묵적 타입 변환 사용이 명확한가?

추천 워크플로우

1️⃣ 리뷰 생성

1) diff 수집 → review.collect_diff
2) 프롬프트 생성 → review.make_prompt
3) (LLM이 리뷰 JSON 생성)
4) 리뷰 저장 → review.save

2️⃣ Task 관리 (리뷰 → 수정)

5) 리뷰를 Task로 변환 → task.from_review
6) Task 목록 확인 → task.list
7) Task 실행 시작 → task.execute
8) (코드 수정)
9) Task 검증 → task.verify
10) Task 완료 → task.complete

자세한 흐름: docs/WORKFLOW_KO.md

제공 Tools

Review Tools

Tool

설명

주요 파라미터

review.collect_diff

git diff 수집

repoPath?, base?, head?

review.make_prompt

리뷰 프롬프트 패키지 생성 (5가지 기준 포함)

repoPath?, base?, head?, maxDiffChars?

review.save

리뷰 저장 (criteria_feedback, test_scenarios 포함)

target, summary_ko, findings, ...

review.list

리뷰 목록

limit?

review.get

리뷰 상세 조회

id

review.export_markdown

마크다운 변환

id

review.debug.env

환경 변수 확인

-

Task Tools

Tool

설명

주요 파라미터

task.from_review

리뷰 findings → Task 변환

review_id

task.create

Task 수동 생성

title, description, ...

task.list

Task 목록 (상태별 필터)

status?, limit?

task.get

Task 상세 조회

id

task.execute

Task 실행 시작

id

task.verify

Task 검증

id

task.complete

Task 완료

id, verification_note?

task.delete

Task 삭제

id

task.update_status

Task 상태 변경

id, status

task.stats

Task 통계

-

리뷰 데이터 스키마

review.save로 저장되는 리뷰 데이터 구조:

{
  "target": {
    "base": "main",
    "head": "HEAD"
  },
  "summary_ko": "변경 사항에 대한 간략한 요약(한국어)",
  "risk": "low | medium | high",
  "criteria_feedback": {
    "readability": {
      "good": ["잘된 점 1", "잘된 점 2"],
      "improve": ["개선 필요한 점 1"]
    },
    "predictability": { "good": [], "improve": [] },
    "cohesion": { "good": [], "improve": [] },
    "coupling": { "good": [], "improve": [] },
    "micro_perspective": { "good": [], "improve": [] }
  },
  "findings": [
    {
      "severity": "low | medium | high",
      "category": "readability | predictability | cohesion | coupling | micro_perspective",
      "file": "파일 경로",
      "startLine": 1,
      "endLine": 10,
      "title_ko": "짧은 제목",
      "detail_ko": "설명 + 근거 + 왜 중요한지",
      "suggestion_patch_diff": "diff 텍스트(선택)"
    }
  ],
  "test_scenarios": [
    "권장 테스트 시나리오 1",
    "권장 테스트 시나리오 2"
  ]
}

제공 Resources

Resource

설명

rules://active

활성 규칙 파일

reviews://index

리뷰 인덱스

reviews://latest

최신 리뷰

tasks://index

Task 인덱스

tasks://pending

대기 중인 Task

tasks://in_progress

진행 중인 Task

제공 Prompts

Prompt

설명

review

코드 리뷰 템플릿

task-execute

Task 실행 가이드

task-plan

Task 계획 수립

저장 위치

${DATA_DIR}/
├── reviews/
│   └── rev_*.json       # 리뷰 결과
└── tasks/
    └── task_*.json      # Task 데이터

기본: ${REPO_PATH}/.review-data/

Available Tools

17 tools
review.collect_diffC

git diff(base...head)를 수집해서 반환합니다. base가 'main'이면 자동으로 'origin/main'으로 변환됩니다.

Inputs: base, head, repoPath, contextLines.

review.debug.envB

서버가 인식한 경로/env를 보여줍니다.

Inputs: no named parameters.

review.export_markdownB

특정 review_id를 마크다운으로 변환하고 파일로 저장합니다.

Inputs: id (required).

review.getA

특정 review_id의 상세 JSON을 조회합니다.

Inputs: id (required).

review.listC

저장된 리뷰 목록을 조회합니다.

Inputs: limit.

review.make_promptA

규칙 + diff를 합쳐, 모델에게 그대로 넘길 '리뷰 프롬프트 패키지(한국어)'를 만들어줍니다. base가 'main'이면 자동으로 'origin/main'으로 변환됩니다.

Inputs: base, head, repoPath, contextLines, +1 more.

review.saveC

리뷰 결과(JSON)를 저장하고 review_id를 반환합니다.

Inputs: target (required), summary_ko (required), risk, findings, +1 more.

task.completeC

Task를 완료 상태로 변경합니다.

Inputs: id (required), verification_note.

task.createB

새 Task를 수동으로 생성합니다.

Inputs: title (required), description (required), file, endLine, +4 more.

task.deleteC

Task를 삭제합니다.

Inputs: id (required).

task.executeA

Task 실행을 시작합니다. 상태를 in_progress로 변경하고 실행 가이드를 제공합니다.

Inputs: id (required).

task.from_reviewA

리뷰 결과의 findings를 Task로 자동 변환합니다.

Inputs: review_id (required).

task.getC

특정 Task의 상세 정보를 조회합니다.

Inputs: id (required).

task.listA

Task 목록을 조회합니다. 상태별 필터링 가능.

Inputs: limit, status.

task.statsB

Task 전체 통계를 조회합니다.

Inputs: no named parameters.

task.update_statusC

Task 상태를 변경합니다.

Inputs: id (required), status (required).

task.verifyC

Task 완료를 검증합니다. 변경사항을 확인할 수 있도록 정보를 제공합니다.

Inputs: id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 17 tools

    Disambiguation4/5

    Most tools have clear, distinct purposes (e.g., review.collect_diff vs review.make_prompt). However, task.complete, task.update_status, and task.execute all involve status changes, which could lead to confusion about which to use.

    Naming Consistency4/5

    Names follow a consistent domain.action pattern with snake_case (e.g., review.collect_diff, task.update_status). Minor deviations like task.from_review and task.stats break the verb-first convention.

    Tool Count3/5

    17 tools is slightly above the ideal 3-15 range, but the two clear domains (review and task) justify the count. It feels a bit heavy but manageable.

    Completeness4/5

    The review pipeline (collect, prompt, save, list, get, export) and task lifecycle (create, list, get, update, execute, verify, complete, delete, stats) are well covered. Minor gaps like review deletion or update are not critical for the workflow.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers