Cursor와 MCP로 개발자 업무 생산성 올리기
Perry • BE API
안녕하세요, 채널톡 백엔드 엔지니어 페리입니다.
지난 6월 26일, 저는 CHANNEL DEVTALK 이라는 채널톡의 온라인 테크 밋업 행사에서 "버그 대응과 PR 리뷰 시간을 90% 단축시킨 방법"이라는 주제로 발표를 진행했습니다. 1,000명에 가까운 개발자들이 참석한 이 행사에서 많은 관심과 긍정적인 반응을 받을 수 있었는데요, 오늘은 그 발표 내용을 보다 체계적으로 정리하여 공유하고자 합니다.
현대 소프트웨어 개발 환경에서 개발자들은 코드 작성 외에도 수많은 부가 업무를 처리해야 합니다. 특히 서비스가 성장할수록 버그 리포트 대응과 코드 리뷰는 개발자의 상당한 시간을 차지하게 됩니다.
코드는 완성되었지만 리뷰 대기로 인해 배포가 지연되거나, 유저 문의 대응으로 인해 핵심 개발 업무에 집중하지 못하는 상황은 많은 개발자들이 경험하는 현실입니다. 이러한 반복 업무는 개발자의 생산성을 저하시키고, 궁극적으로는 서비스 품질과 개발 속도에 부정적 영향을 미칩니다.
저희 채널톡 개발팀 역시 이와 같은 문제에 직면했습니다. 특히 유저챗 유닛의 경우 20만 개 이상의 기업 고객들이 실시간으로 사용하는 서비스 특성상, 유저챗을 통한 버그 리포트와 기술 문의가 지속적으로 발생했습니다. 동시에 빠른 기능 개발을 위한 PR 리뷰 역시 병목 지점이 되어 전체적인 개발 효율성이 저하되는 상황이었습니다.
이러한 문제를 해결하기 위해 저희는 Cursor
와 Anthropic에서 개발한 오픈소스 프로토콜인 MCP(Model Context Protocol)
를 활용한 혁신적인 접근을 시도했습니다.
그 결과는 기대를 뛰어넘었습니다. 유저챗 대응 시간을 1시간에서 5분으로 90% 단축하였고, PR 리뷰 시간은 60% 줄일 수 있었습니다. 단순한 시간 절약을 넘어서 개발자들이 핵심적이고 창의적인 업무에 집중할 수 있는 환경을 구축한 것입니다.
이 글에서는 저희가 어떻게 이러한 성과를 달성했는지, 그 구체적인 구현 과정과 설계 철학을 공유하겠습니다. 아울러 AI 시대에 개발자가 어떤 방향으로 성장해야 하는지에 대한 인사이트도 함께 제시하고자 합니다.
채널톡은 20만 개 이상의 기업이 사용하는 B2B SaaS 서비스로, 유저챗을 통한 고객 문의가 실시간으로 발생합니다. 특히 고객사가 직접 설정하는 워크플로우나 마케팅 기능과 관련된 문의는 원인 파악부터 난관이었습니다.
문제가 실제 시스템 버그인지, 아니면 고객사의 설정 오류인지 판단하기 위해 개발자들은 다음과 같은 복잡한 과정을 거쳐야 했습니다:
PostgreSQL에서 관련 데이터 조회
DynamoDB 테이블에서 상세 정보 확인
Sentry에서 에러 로그 수백 줄 분석
경우에 따라 Datadog 모니터링 확인
원인 분석 후 해결 방안 정리
CX팀을 통한 문제 원인 전달
한 건당 평균 1시간이 소요되는 이 과정은 개발자들의 소중한 시간을 계속 앗아갔습니다.
이러한 과정은 버그가 아닌 경우에도 상당한 시간이 소요되었고, 개발자들이 핵심 개발 업무에 집중하기 어려운 환경을 만들었습니다.
채널톡은 코드 품질에 대한 타협이 없는 문화를 유지하고 있습니다. 꼼꼼하고 철저한 PR 리뷰는 분명 좋은 문화이지만, 빠른 개발 속도와 지속적으로 증가하는 PR 요청으로 인해 리뷰가 병목 지점이 되는 상황이 발생했습니다.
4명으로 구성된 유저챗 팀에서만 주당 10-20개 이상의 PR이 리뷰를 대기하는 상황이 빈번했습니다. 개발은 완료되었지만 리뷰 때문에 배포가 지연되는 경우가 반복되었고, 리뷰어 역시 상당한 부담을 느끼고 있었습니다.
특히 리뷰어는 새로운 PR마다 다음과 같은 과정을 거쳐야 했습니다:
해당 브랜치로 git checkout
수행
수백 줄의 코드 변경사항(diff
) 분석
생소한 도메인의 경우 관련 코드 전체 탐색
컨텍스트 파악을 위한 추가 학습
이는 리뷰어에게 상당한 시간과 정신적 부담을 주었으며, 전체적인 개발 생산성 저하로 이어졌습니다.
이러한 문제들을 해결하기 위해 저희는 세 가지 핵심 요소의 조합에 주목했습니다: MCP(Model Context Protocol)
, 정교한 프롬프트
, 그리고 Cursor AI 에디터
입니다.
MCP는 Anthropic에서 시작된 오픈소스 프로토콜로, LLM이 외부 정보에 효과적으로 접근할 수 있도록 하는 표준화된 인터페이스입니다. 마치 뛰어난 요리사에게 다양한 재료를 제공하는 것처럼, AI가 PostgreSQL, DynamoDB, Sentry 등 실제 업무에 필요한 데이터를 직접 조회할 수 있게 해줍니다.
MCP에 대한 자세한 설명은 이전에 작성한 채널톡 연동 MCP 서버 구현기의 "0. MCP, AI와 외부 시스템을 연결하는 새로운 표준"에서 확인하실 수 있습니다.
단순히 AI에게 "일해!"라고 요청하는 것이 아닙니다. 저희는 숙련된 개발자가 수행하는 분석 절차, 판단 기준, 그리고 결과 정리 방식을 체계적으로 문서화하여 'AI를 위한 초정밀 업무 매뉴얼'을 제작했습니다. 이 프롬프트는 AI가 일관되고 정확한 결과물을 생산할 수 있도록 하는 핵심 요소입니다.
채널톡은 약 6개월 전부터 전사적으로 Cursor를 도입하여 코드 작성에 적극 활용하고 있습니다. (자세한 도입 과정이 궁금하다면 Cursor 전사 도입 6개월: 이후 변화들을 확인해주세요!) 하지만 저희의 핵심 차별점은 Cursor를 단순한 코드 에디터가 아닌, 개발자의 다양한 업무를 처리하는 강력한 '개발자 에이전트'로 진화시켰다는 점입니다.
Cursor는 전체 코드베이스를 이해하고, MCP를 통해 수집된 외부 정보를 바탕으로, 정교한 프롬프트에 따라 숙련된 개발자처럼 분석과 리뷰 업무를 수행할 수 있습니다.
유저챗 대응 자동화를 위한 be-user-chat-mcp
는 세 가지 핵심 목표를 설정했습니다:
통합 정보 접근: DynamoDB, Sentry, 워크플로우 변경 이력 등 다양한 데이터 소스에 한 번에 접근
AI 기반 1차 분석: 개발자가 직접 확인하기 번거로운 단순 문제들을 AI가 빠르게 처리
맥락 있는 문제 해결: 복잡한 코드 분석 없이도 문제의 실마리를 제공
처음부터 완벽한 시스템을 구축하려 하지 않았습니다. 먼저 일반적인 유저챗 분석 절차를 정리하고, 기본적인 MCP 도구들(유저챗 정보 조회, Sentry 이슈 조회 등)을 개발하여 첫 버전을 빠르게 도입했습니다.
이후 실제 사용 과정에서 발생하는 피드백을 바탕으로 프롬프트를 정교화하고, 워크플로우 변경 이력 조회 같은 새로운 도구들을 추가하며 지속적으로 발전시켰습니다.
be-user-chat-mcp
의 핵심 중 하나는 소프트웨어 아키텍처 원칙을 프롬프트 설계에 적용한 것입니다. 거대한 단일 프롬프트 대신, 마이크로서비스처럼 작은 단위로 분할하여 체계적으로 관리하는 방식을 도입했습니다.
파이프라인 기반 구조 설계
pipeline.be-user-chat.mdc (메인 파이프라인)
├── node.fetch-user-chat.mdc (유저챗 정보 수집)
├── node.fetch-workflow.mdc (워크플로우 데이터 조회)
├── node.formulate-hypothesis.mdc (가설 수립)
├── node.verify-hypothesis.mdc (가설 검증)
└── node.summarize-cause.mdc (원인 요약 및 해결책)
각 노드는 명확한 단일 책임을 가지며, 독립적으로 실행되면서도 순차적으로 연결되는 구조입니다. 마치 Unix 파이프라인처럼 각 단계의 출력이 다음 단계의 입력이 되어 전체 분석 과정을 완성합니다.
동적 프롬프트 로딩
특히 주목할 점은 Cursor의 fetch_rules
기능을 활용한 동적 프롬프트 로딩 방식입니다. 파이프라인 실행 중 필요한 시점에 해당 노드의 프롬프트만을 실시간으로 로드하여 실행합니다. 이는 컨텍스트 윈도우 관리 차원에서 다음과 같은 중요한 이점을 제공합니다:
토큰 효율성: 전체 파이프라인이 아닌 현재 단계에 필요한 프롬프트만 로드하여 토큰 사용량 최적화
집중도 향상: AI가 현재 단계의 명확한 목표에만 집중할 수 있어 더 정확하고 일관된 결과 생성
복잡성 관리: 거대한 단일 프롬프트로 인한 AI의 할루시네이션을 방지하고 단계별 명확한 지시 제공
메모리 효율성: 각 단계마다 필요한 컨텍스트만 유지하여 AI의 작업 메모리 효율적 활용
설계 철학: 소프트웨어 개발 원칙의 적용
이 구조화 접근법은 소프트웨어 개발의 핵심 원칙들을 프롬프트 설계에 적용한 결과입니다:
모듈화: 복잡한 업무를 작은 단위로 분해
단일 책임 원칙: 각 노드는 하나의 명확한 역할만 수행
느슨한 결합: 노드 간 독립성을 유지하면서 필요한 정보만 전달
확장성: 새로운 기능 추가 시 기존 구조 변경 최소화
이러한 아키텍처 덕분에 복잡한 유저챗 분석 과정을 일관되고 반복 가능한 프로세스로 표준화할 수 있었으며, 팀원 누구나 쉽게 프롬프트를 이해하고 개선할 수 있는 환경을 구축했습니다.
"워크플로우가 특정 시점부터 동작하지 않는다"는 문의를 5단계 파이프라인으로 분석한 과정입니다.
1단계 - 유저챗 정보 수집 (node.fetch-user-chat.mdc
)
유저챗 ID, 발생 시간, 채널 정보, 고객 기본 데이터 수집
Sentry 연관 에러 로그 자동 조회 및 1차 분석
2단계 - 워크플로우 데이터 조회 (node.fetch-workflow.mdc
)
해당 워크플로우의 현재 설정 상태 확인
유저챗 발생 시점 전후의 워크플로우 변경 이력 수집
트리거 조건, 액션 설정, 활성화 상태 등 상세 정보 수집
3단계 - 가설 수립 (node.formulate-hypothesis.mdc
)
타임라인 중심 분석: 유저챗 발생 시점과 워크플로우 변경 시점 비교
"유저챗 발생 당시 트리거 조건이 현재와 달랐을 가능성" 가설 도출
설정값 불일치 항목 식별 및 우선순위 결정
4단계 - 가설 검증 (node.verify-hypothesis.mdc
)
가설별 검증 계획 수립 및 실행
유저챗 발생 시점의 실제 워크플로우 설정값과 현재 설정값 교차 검증
트리거 조건 변경이 문제 발생과 직접 연관됨을 확인
5단계 - 원인 요약 및 해결책 (node.summarize-cause.mdc
)
비개발자도 이해할 수 있는 언어로 원인 정리
"고객 문의 시점에는 워크플로우 트리거 조건이 현재와 달라서 작동할 수 없었습니다" 결론 도출
구체적 해결 방안 제시
"URL이 포함된 메시지가 간헐적으로 누락된다"는 더 복잡한 기술적 문의의 분석 과정입니다.
1단계 - 유저챗 정보 수집 (node.fetch-user-chat.mdc
)
누락된 메시지와 관련된 유저챗 메타데이터 수집
해당 시점의 Sentry 에러 로그 자동 조회
2단계 - 워크플로우 데이터 수집
실행된 워크플로우가 없으므로 단계를 건너뜀
3단계 - 가설 수립 (node.formulate-hypothesis.mdc
)\
Sentry 스택 트레이스 기반 에러 발생 지점 추론
"MediaService의 URL 처리 중 예외 발생 및 핸들링 누락" 가설 도출
에러 패턴 분석을 통한 재현 조건 추정
4단계 - 가설 검증 (node.verify-hypothesis.mdc
)
Cursor를 통한 실제 코드베이스 분석
MediaService의 URL 처리 로직 상세 검토
에러 핸들링 코드 존재 여부 및 적절성 검증
5단계 - 원인 요약 및 해결책 (node.summarize-cause.mdc
)
기술적 원인을 개발자와 비개발자 모두 이해할 수 있도록 정리
"MediaService의 특정 함수에서 URL 부재 시 예외 발생, 에러 핸들링 누락으로 전체 프로세스 중단" 진단 결과 제시
코드 수정 방향과 우선순위 제안
이제 개발자들은 더 이상 로그를 직접 찾지 않습니다. 대신 채널톡의 에이스 개발자가 버그를 분석하는 방식으로 정보를 수집하고 1차 분석을 완료한 결과를 받게 됩니다.
코드 대응 불필요한 경우: 빠른 원인 파악으로 즉시 고객 응답 가능
코드 수정 필요한 경우: 원인 파악 이후 단계에 집중하여 효율적 문제 해결
결과적으로 유저챗 대응 시간을 1시간에서 5분으로 90% 단축하는 성과를 달성했습니다.
코드 품질에 대한 타협이 없는 채널톡의 문화를 유지하면서도, 리뷰 병목 현상을 해결하기 위해 github-pr-mcp
는 세 가지 명확한 목표를 설정했습니다:
리뷰 시간 획기적 단축: 기계적 확인 작업을 자동화하여 리뷰 속도 향상
리뷰 질 상향 평준화: 핵심 로직에 집중할 수 있는 환경 조성
개발자 경험 개선: 리뷰 부담 감소로 더 행복한 개발 환경 구축
be-user-chat-mcp와 마찬가지로 처음부터 완벽한 리뷰 시스템을 목표로 하지 않았습니다. 일반적인 PR 리뷰에서 개발자들이 공통적으로 확인하는 기본 체크리스트를 중심으로 초기 프롬프트를 구성했습니다:
코딩 컨벤션 준수 여부
테스트 코드 작성 충분성
커밋 메시지 명확성
기본적인 로직 검증
이후 실제 사용 과정에서 "특정 패턴의 실수는 자동 체크가 필요하다", "중요 모듈 변경 시 사이드 이펙트 확인이 중요하다" 등의 구체적인 피드백을 바탕으로 프롬프트를 정교화했습니다.
개발자가 "ch-mcp-tools 레포지토리의 12345번 PR 리뷰 해줄래?"라고 요청하면 다음과 같은 자동화된 프로세스가 시작됩니다:
PR 정보 수집: GitHub API를 통해 제목, 본문, 변경 파일 목록, 코드 diff, 커밋 메시지, 기존 댓글 등 리뷰에 필요한 모든 데이터 수집
변경사항 분석: 해당 브랜치로 이동하여 변경사항을 종합적으로 요약
우선순위 결정: 변경사항에 따른 잠재적 우려점을 평가하고 리뷰 순서 제안
맞춤형 리뷰: 파일별 중요도와 변경 복잡도에 따라 체계적인 리뷰 가이드 제공
이제 개발자들은 모든 세부사항을 직접 리뷰할 필요가 없습니다. 팀의 가장 꼼꼼하고 경험 많은 시니어 개발자가 1차 리뷰를 완료하고 핵심 검토 사항을 정리해주는 것처럼 AI를 활용합니다.
리뷰어는 단순 반복 작업에서 벗어나 변경사항의 본질적인 로직과 설계 타당성 검토에 집중할 수 있게 되었습니다. 그 결과 PR 리뷰 시간을 1시간에서 20분으로 60% 단축하는 성과를 달성했습니다.
특히 디펜다봇이 생성하는 의존성 업데이트 PR의 경우, Cursor가 프로젝트 내 라이브러리 사용처를 모두 찾아 영향도를 분석해주어 기존 1시간에서 5-10분으로 약 90% 단축되었습니다.
MCP 자동화 도구 도입 후 저희가 달성한 성과는 기대를 뛰어넘었습니다. 유저챗 대응 시간을 기존 1시간에서 5분으로 90% 단축하였으며, 워크플로우 관련 문의는 필요한 정보 종합부터 문제 해결까지 모든 과정이 5분 이내에 완료됩니다. 이미 처리해본 유형의 문의는 개발자의 약간의 판단만 추가하면 최대 10분 내로 완전히 해결이 가능해졌습니다.
PR 리뷰 영역에서도 극적인 개선을 보였습니다. 대규모 리팩토링과 같이 기존에 1시간 이상 소요되던 복잡한 PR도 최대 20분으로 60% 시간 단축에 성공했습니다. 특히 디펜다봇이 생성하는 의존성 업데이트 PR의 경우 더욱 극적인 변화를 보였는데, 기존에 매주 당번이 6-7개 PR을 검토하느라 총 1시간을 투자했던 업무가 한 PR당 1-2분, 총 5-10분으로 약 80% 단축되었습니다.
단순한 시간 절약을 넘어 더욱 중요한 변화는 개발자들의 업무 만족도와 성장 기회 확대였습니다. 반복적인 분석 업무에서 해방된 개발자들은 새로운 기술 학습과 핵심 제품 기능 개선에 더 많은 시간을 투자할 수 있게 되었습니다.
이는 개발자로서의 성취감과 만족도를 크게 향상시켰으며, 무엇보다 개발자 본연의 창의적인 업무에 더욱 깊이 몰입할 수 있는 환경이 조성되었습니다. 단순 반복 업무가 줄어들면서 복잡한 문제 해결과 혁신적인 솔루션 개발에 더 많은 정신적 에너지를 집중할 수 있게 된 것입니다.
물론 모든 것이 완벽하지는 않습니다. 현재 be-user-chat-mcp
와 github-pr-mcp
모두 저희 유저챗 유닛의 업무에는 높은 정확도를 보이지만, 다른 팀의 업무 영역에서는 아직 한계를 보입니다. 하지만 이는 기술적 문제가 아닌 각 팀의 특화된 업무 지식과 프로세스가 프롬프트로 충분히 문서화되지 않았기 때문입니다.
이는 오히려 긍정적인 신호입니다. 다른 팀들도 자신들의 업무 노하우를 체계적으로 MCP 프롬프트로 문서화하기만 하면, 현재 저희가 경험하는 놀라운 효율성 개선을 동일하게, 아니 그 이상으로 누릴 수 있다는 의미이기 때문입니다.
이번 프로젝트를 통해 깨달은 것은 AI 시대의 개발자에게 필요한 능력이 단순히 코딩 실력 향상만이 아니라는 점입니다. 개발 이외 영역을 효율화하여 본연의 업무에 더 많은 시간과 자원을 투자할 수 있도록 하는 것이 진정한 경쟁력이 되었습니다.
AI와 MCP는 결국 도구입니다. 이 도구들을 효과적으로 활용하기 위한 핵심 역량은 업무 프로세스의 체계적 문서화와 정교한 프롬프트 작성 능력입니다. 암묵지로 존재하던 업무 노하우를 명시적으로 문서화하고, 이를 AI가 이해할 수 있는 형태로 변환하는 것이야말로 반복 업무 효율화의 열쇠입니다.
아무리 뛰어난 도구를 개발해도 실제 사용자들이 채택하지 않으면 의미가 없습니다. 도구가 성공적으로 채택되기 위해서는 사용자가 명확한 효용을 체감할 수 있어야 하며, 그 효용이 변화에 따른 비용보다 충분히 커야 합니다.
더 중요한 것은 도구를 사용하여 혜택을 본 사람들이 다시 이 생태계에 기여할 수 있는 구조를 만드는 것입니다. 저희 팀에서도 be-user-chat-mcp
와 github-pr-mcp
를 사용한 개발자들이 자신의 경험을 바탕으로 프롬프트를 개선하고 새로운 기능을 제안하면서 도구가 지속적으로 발전하고 있습니다.
저희 채널톡의 다음 목표는 명확합니다. 각 팀의 업무 지식과 프로세스를 체계적인 MCP 프롬프트로 문서화하고, 이를 GitHub에 코드처럼 저장하여 실시간으로 업데이트하며 발전시켜 나가는 것입니다.
이를 통해 각 팀은 자신들의 업무에 최적화된 맞춤형 AI 어시스턴트를 갖게 되고, 이러한 지식들이 회사 전체의 자산으로 축적되어 시너지를 낼 수 있습니다. 세일즈 팀의 미팅 로그가 자동으로 관리되고, PM의 고객 미팅 내용이 자동으로 분석되어 제품 백로그로 변환되며, 마케팅팀이 캠페인 성과를 자동 분석하는 등 개발자 뿐만 아니라 비개발자도 AI와 함께 업무를 해나가는 미래를 그리고 있습니다. 저희 개발팀에서는 이미 이러한 구상 중 일부는 개발에 착수했고, 일부는 실무에 도입하였습니다.
각 분야의 전문성과 AI가 결합될 때, 모든 구성원이 핵심 업무에 집중하며 회사 전체의 생산성을 한 단계 끌어올리는 진정한 AI 기반 워크플레이스가 현실이 될 것입니다.
이번 MCP 자동화 도구 개발을 통해 저희는 단순한 시간 절약을 넘어 개발자가 정말 집중해야 할 일이 무엇인지 다시 생각하게 되었습니다.
유저챗 대응과 PR 리뷰라는 필수적이지만 반복적인 업무에서 벗어나, 새로운 기능 설계와 복잡한 문제 해결에 더 많은 시간을 투자할 수 있게 되었습니다. 결과적으로 개발자들이 정말 중요하고 창의적인 업무에 집중할 수 있는 환경을 만들 수 있었습니다.
저희는 개발자 경험 개선이 곧 더 나은 제품으로 이어진다고 생각합니다. 개발자가 행복해야 고객도 행복한 제품이 나온다는 생각으로, AI 시대에 맞는 새로운 개발 문화를 계속 시도하고 있습니다.
만약 반복 업무에 매몰되지 않고 본질적인 문제 해결에 집중하고 싶은 개발자라면, AI와 함께 더 창의적인 도전을 해보고 싶은 분이라면, 채널톡의 문을 두드려 주세요. 개발자의 일상을 더욱 의미 있게 만드는 이 여정에 동참할 동료를 기다리고 있습니다.
We Make a Future Classic Product