Search

25. n8n에서 MCP 활용한 코드리뷰 봇 생성하기

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

n8n에서 MCP(Http-Streamable)로 GitHub PR 코드 리뷰 봇 구현

개요/목표

MCP 프로토콜에 HTTP-streamable 추가로, LangGraph로 하던 GitHub 코드 리뷰 자동화를 n8n에서 재현
PR 이벤트 트리거 → AI 에이전트 → MCP GitHub 툴로 리뷰 생성

준비물

GitHub 저장소와 PR, n8n(엔에잇엔) 인스턴스
GitHub 인증: Personal Access Token(PAT) 또는 GitHub App(Client ID/Secret)
GitHub MCP 엔드포인트 주소
LLM 접근: Azure OpenAI(예: GPT-5 계열) 등

GitHub PR 트리거 설정(n8n)

.github/workflows/pr-webhook.yml
name: Pull Request Webhook Notification on: pull_request: types: [opened, synchronize, reopened] jobs: notify-webhook: runs-on: ubuntu-latest steps: - name: Send PR notification to webhook run: | curl -X POST \ -H "Content-Type: application/json" \ -d '{ "repository_owner": "${{ github.repository_owner }}", "repository_name": "${{ github.event.repository.name }}", "pull_request_number": ${{ github.event.pull_request.number }}, "pull_request_url": "${{ github.event.pull_request.html_url }}", "action": "${{ github.event.action }}", "pull_request_title": "${{ github.event.pull_request.title }}", "pull_request_author": "${{ github.event.pull_request.user.login }}" }' \ # 아래 주소를 변경해서 사용하시면 됩니다 "https://n8n.byeongjinkang.link/webhook-test/67bec60d-498c-492a-920f-0d4f4fb9065e"
YAML
복사
트리거 선택: GitHub → On Pull Request
크리덴셜 선택:
PAT 사용 시: Developer settings → Personal access tokens(클래식) 발급 후 n8n Credential에 저장
GitHub App 사용 시: Client ID/Secret을 n8n Credential로 등록
Repository owner/repo 지정
Webhook 엔드포인트 연결:
n8n 트리거에서 제공하는 URL 복사 → GitHub 워크플로우에서 PR 발생 시 POST 요청
준비된 워크플로우(YAML)에서 URL만 교체 후 커밋
PR 닫았다가 다시 열어 트리거 재실행
동작 확인: n8n에서 요청 수신 로그 확인

AI 에이전트 노드 구성

에이전트 타입: AI Agent 선택, 프롬프트 모드는 Chat 대신 정의형 모드로 전환
입력 프롬프트: PR URL 주입
모델 선택: Azure OpenAI 모델(gpt-5 계열 등) 지정
MCP 클라이언트 툴 설정:
엔드포인트: GitHub MCP(이전 LangGraph 데모와 동일한 주소)
Transport: SSE가 아닌 HTTP-streamable로 설정
인증: Bearer → n8n Credential에서 GitHub PAT 선택(예: 이름 ‘github mcp bearer token’)
필요 시 Tool 권한을 all로 설정
실행 결과:
에이전트가 MCP 툴로 PR 정보/디프/펜딩 PR 조회 → 리뷰 코멘트 자동 게시
GitHub PR의 Conversation 및 Files changed 탭에서 리뷰 확인
n8n 로그에서 MCP 툴 호출 시퀀스 확인

멀티 저장소 확장(개선안):

Webhook 트리거 + 메타데이터 컨텍스트
문제점: GitHub 트리거는 레포별 플로우 필요 → 관리 복잡
대안: Webhook 트리거 사용
Webhook(POST)로 owner, name, pr_url 등 전달
GitHub 워크플로우가 n8n Webhook으로 직접 호출
컨텍스트 주입(예: Google Sheets 연동):
시트에 repo name, description, background 등 메타데이터 저장
n8n에서 name 컬럼으로 row 조회(get row)
에이전트 프롬프트에 PR URL + repo description 함께 전달
LLM이 저장소 맥락을 반영해 더 정확한 리뷰 생성
주의: 리뷰 작성자의 표시 이름은 사용된 토큰 소유자와 동일

6) 운영 팁/주의사항

Transport는 반드시 HTTP-streamable로 설정(SSE 아님)
PR 재실행은 PR 닫고 다시 열기 또는 워크플로우 재트리거
n8n에서 Listen 이벤트 활성화 상태 확인
토큰 보안 관리 및 권한 최소화
모델/토큰 제한 회피를 위해 Azure OpenAI 사용 고려
Credential 명명 규칙 일관성 유지(혼동 방지)