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 인프라 방식: 토큰 사용량 증가하지만 인프라 부담 감소
•
사용 사례에 따라 선택 가능
향후 계획
•
추가로 전달할 내용 발견 시 강의 업데이트 예정