Search

24. MCP를 활용한 코드리뷰 에이전트 생성하기

섹션
7. Agent: GitHub 코드 리뷰 에이전트

MCP를 활용한 코드리뷰 에이전트 생성하기

n8n의 MCP 지원 문제

현재 상황

•
GitHub에 풀 리퀘스트 올라올 때 코드를 리뷰하는 에이전트 구현 목표
•
n8n의 MCP 클라이언트 툴이 SSE 엔드포인트 요구
•
SSE는 deprecated되어 streamable HTTP 사용해야 함
•
n8n이 아직 streamable HTTP 미지원

대안 및 향후 계획

•
이번에는 LangGraph로 작업
•
n8n이 streamable HTTP 지원 시 추가 영상 촬영 예정

회사에서 사용 중인 에이전트 시스템

코딩 에이전트

•
리팩토링과 디버깅 테스트 담당
•
실제 비즈니스 로직은 엔지니어가 구현
•
코딩 에이전트가 나머지 작업 담당

매니저 에이전트

•
Notion MCP와 연결
•
JIRA 대신 Notion으로 스크럼 관리
•
등록된 태스크를 스크래핑하여 코딩 에이전트에게 전달

리뷰 에이전트

•
PR 업로드 시 트리거됨
•
코드 리뷰 후 PR에 댓글 작성
•
완료 가능한 수준 도달 시 Slack에서 멘션

MCP 설정

환경 변수 및 MCP 어댑터

•
환경 변수 호출
•
LangChain의 MCP 어댑터 선언 (multi-server client)
•
GitHub과 Slack MCP 동시 사용 가능

GitHub MCP 설정

•
GitHub에서 서버를 올려서 지원
•
VS Code 예시 대신 직접 구현 방식 사용
•
헤더 인증 문제 해결 필요
•
Authorization 헤더에 토큰 입력 필요
•
Transport 추가로 401 unauthorized 오류 해결

Slack MCP 설정

•
공식 제공하지만 서버가 없어 직접 작성 필요
•
Docker 사용 권장
•
필요한 값: Team ID, Channel ID, Token

Slack 앱 설정

OAuth 권한 설정

•
이벤트 구독이 아닌 단순 호출 방식
•
OAuth Permission에서 chat:write 권한만 필요
•
에이전트가 메시지 전송할 수 있도록 설정

ID 값 획득

•
Team ID: Slack 주소에서 T로 시작하는 값 복사
•
Channel ID: C로 시작하는 값 복사
•
Personal ID: 멤버 ID 복사하여 멘션 기능 활용

에이전트 구현

Create React Agent 사용

•
기존 경험한 방식 활용
•
툴 리스트를 tools에 입력
•
프롬프트에 간단히 툴 사용 명시

스트리밍 처리

•
패키지 업데이트로 인한 Cursor 오류 발생
•
await에서 툴 호출 방식 변경
•
async operation 문제로 stream 사용 필요
•
헬퍼 함수로 스트리밍 결과 확인 (암기 불필요)

실제 테스트

PR 생성 및 리뷰

•
사이드 프로젝트에서 코드 개선
•
Cursor로 코드 작성 후 PR 생성
•
PR 주소를 에이전트에게 제공
•
Private repo지만 GitHub 액세스 토큰으로 접근 가능

리뷰 결과

•
툴 호출하여 리뷰 시작
•
PR 정보 가져와서 코드 리뷰 수행
•
Slack에 리뷰 결과 전송
•
프롬프트 개선 필요성 확인

최적화 방안

툴 선별 문제

•
GitHub에서 가져온 툴이 너무 많음
•
PR 리뷰에 불필요한 툴 (notifications, issues, forks 등) 포함

STDIO 방식 활용

•
Slack처럼 로컬에서 실행
•
환경 변수로 툴셋 지정 가능
•
PR 관련 툴만 선별하여 사용
•
토큰 절약 효과

인프라 vs 토큰 트레이드오프

•
STDIO 방식: 툴 제한으로 토큰 절약
•
GitHub 인프라 방식: 토큰 사용량 증가하지만 인프라 부담 감소
•
사용 사례에 따라 선택 가능

향후 계획

•
추가로 전달할 내용 발견 시 강의 업데이트 예정