MCP 서버 직접 만들어보니 생각보다 쉬웠다
Model Context Protocol 서버를 직접 구축해서 사내 DB에 연결한 경험을 공유한다
금요일 오후 3시, 월요일 리포트가 귀찮아서
매주 월요일마다 지난주 배포 건수, 버그 수, 응답 시간 같은 지표를 슬랙에 공유한다. 매번 Grafana 들어가서 스크린샷 찍고, Jira에서 숫자 세고, 구글 시트에 정리하는 작업이 한 30분씩 걸린다. 이걸 몇 달째 반복하고 있었다.
금요일 오후에 문득 생각이 들었다. "MCP 서버 만들어서 AI한테 물어보면 바로 나오게 하면 안 되나?" 그 자리에서 시작했다. (사실 일하기 싫어서 현실 도피 반, 호기심 반이었다.)
MCP가 뭔데
Model Context Protocol. Anthropic이 2024년 말에 발표한 프로토콜인데, 쉽게 말하면 AI가 외부 도구나 데이터에 접근할 수 있게 해주는 표준 인터페이스다. AI한테 눈이랑 손을 달아주는 거라고 보면 된다. "우리 DB에서 지난달 매출 알려줘"라고 하면, MCP 서버가 중간에서 DB 쿼리를 실행하고 결과를 AI한테 전달해준다.
금요일 오후 ~ 일요일 저녁: 완성
Node.js + TypeScript로 만들었다. MCP SDK가 잘 되어 있어서 서버 뼈대 세우는 건 금방이었다. 핵심은 Tool을 정의하는 부분이다. Tool은 AI가 호출할 수 있는 함수라고 보면 된다.
내가 만든 Tool은 세 개. getDeploymentStats는 배포 건수와 성공률, getBugCount는 Jira에서 버그 티켓 수, getResponseTime은 Grafana에서 평균 응답 시간. 각 Tool의 입출력 스키마를 JSON Schema로 정의하면, AI가 알아서 이해한다.
전체 코드가 280줄. 솔직히 이게 맞나 싶을 정도로 적다. (MCP SDK가 다 해줘서 그런 거지, 내가 잘해서가 아니다.)
시간의 절반은 API 키 발급에 썼다
가장 시간 먹은 건 코드가 아니라 Jira API랑 Grafana API 인증 설정이었다. API 키 발급받고, 권한 설정하고, 토큰 갱신 처리하고. 코드 280줄 짜는 것보다 이쪽에 시간을 더 썼다. 항상 그렇다. 진짜 일은 코드 밖에 있다.
연결하니까 바로 됐다
MCP 서버를 Claude Desktop에 연결하는 건 설정 파일에 경로 한 줄 추가하면 끝이다. "지난주 배포 건수 알려줘"라고 물어보니 AI가 getDeploymentStats를 자동으로 호출하고 답해줬다. "지난주 Critical 버그 몇 개야?"처럼 자연어로 물어보면 AI가 알아서 적절한 파라미터를 만들어서 호출한다.
이 부분이 MCP의 진짜 가치다. API를 직접 안 호출해도, 대화하듯이 데이터를 얻을 수 있다.
월요일 시연했더니
반응이 좋았다. 특히 PM이 "기획 지표도 넣을 수 있어?"라고 물었을 때 Tool 하나만 추가하면 된다는 걸 보여주니 눈이 커졌다. 지금은 Google Analytics 데이터를 가져오는 Tool도 추가해서 총 5개가 돌아가고 있다. 30분 걸리던 주간 리포트가 2분이면 끝난다.
근데 보안은 진짜 신경 써야 한다
AI가 DB 쿼리를 실행할 수 있다는 건, 이상한 프롬프트로 민감한 데이터에 접근할 가능성이 있다는 뜻이다. 읽기 전용 DB 유저를 별도로 만들고, 접근 가능한 테이블을 화이트리스트로 제한했다. 나만의 원칙이 하나 생겼다. AI한테 접근 권한 줄 때는, 신입 사원한테 주는 수준으로 시작하자.
어쨌든 만들어보길 잘했다
AI의 진짜 힘은 단독으로 쓸 때가 아니라 기존 시스템이랑 연결될 때 나온다. 반나절이면 만들 수 있으니까, 반복적으로 여러 시스템에서 데이터 모아야 하는 작업이 있으면 한번 해볼 만하다. 금요일 오후의 현실 도피가 월요일 아침의 30분을 구원했다.