MCP를 활용한 성장을 위한 AI 코치 개발기
들어가며
나는 성장하고 있는 걸까?
최근, 스스로가 게을러지고, 무기력해졌다는 것을 많이 느끼고 있습니다.
이를 벗어나고자, 무언가 많이 시도는 했지만 정작 제대로 하고 있지는 못한 느낌입니다.
그에 따라서, 번아웃도 오고, 스스로의 성장이 정체되어 있다는 느낌이 들었습니다.
내가 "잘"하고 있는 걸까?
그렇기에, 잘 하고 있다는 생각도 들지 않았습니다.
열심히 하는 것과, 잘 하는 것은 분명히 다른 건데, 열심히도 못하는 느낌이고, 그렇다고 잘하는 것도 아니고.. 그냥 시간만 허비하고 있다 는 느낌이었죠.
AI가 대두되면서, AI를 활용한 무언가를 찾아보고자 하고, 시도도 해보고, 바이브 코딩도 했었는데 오히려 저 자신은 뒤쳐지는 듯한 느낌이 들었습니다.
바이브 코딩으로 한달을 보내서 그런가... 오히려 매몰되어, 퇴보되는 느낌이 들었죠.
점점 자괴감에 빠질때 쯤, 제가 마음 깊이 따르는 분께 큰 가르침을 받게 되었습니다.
측정 가능한 구체적인 것을 목표라고 한다. 목표에 따른 수치를 이룰 수 있게 나누고, 매일, 매 순간 마다 하나씩 측정하면서 피드백을 하며 실천해야 한다.
가르침을 바탕으로, 스스로가 느낀 벽을 한번 부숴보기로 했습니다.
시스템의 필요성
가장 원론적인 이야기부터 해야할 것 같습니다.
나는 목표를 잘 정의하는가? 라는 부분이었습니다.
가르침을 받은것과, 소화하는 것은 다른 이야기라고 생각합니다. 그리고 돌이켜보니, 가르침을 받아도 어떻게 해야할 지 모르겠더라구요.
그러다가 작년 초에 한참 운동을 할 때, 운동 앱을 쓰면서 스스로를 트래킹하고, 친구와 함께 피드백을 하면서 개선해나간 점이 떠올랐습니다.
스스로의 피드백도 중요하지만, 누군가와 함께 피드백을 주고 받는 것이 목표를 이루는 데 크게 작용했던 기억입니다.
헬스장을 가지 않으면, 친구가 닥달해주고, 내가 잘했다고 생각해도 친구가 보면서 이쯤에는 이제 이렇게 하면 좋을 것 같다 가이드를 주고, 하루치를 못이루면 조정해주고.
나 스스 로도 헬스 영상 등을 찾아보면서 배우고 개선했던 것이 떠올랐습니다.
이때 가장 크게 스스로의 변화를 이끌었었기에, 다시금 이렇게 해볼 수는 없을까 생각해보게 되었습니다.
목표를 잘 잡지 못하는 나를 코치해주는 무언가가 있었으면 좋겠다.
그리고 그 코칭을 바탕으로 매일 조금씩 가시적으로 성장할 수 있었으면 좋겠다.
별거 아닌 생각이었지만, 이게 AI를 활용한 나만의 성장 코치를 만들어보게 되는 시작점이었습니다.
무엇을 시도할 것인가?
일종의 AI 코치를 만들어보기로 했습니다.
처음부터 모든걸 완성하기 보다는 차근차근 하나씩 만들어가기로 했습니다.
우선 간단하게 잡은 기능들은 다음과 같습니다.
목표 설정
- AI에게 내가 이루고 싶은 목표와 현재 상태를 입력합니다. AI와 함께 문답하며, 채팅하듯이 입력합니다.
- 목표
- 상태
- 이루고 싶은 기간 (목표 기간)
- AI가 내가 입력한 텍스트를 분석해서, 구체적인 목표를 세워주고, 정해진 기간에 맞는 목표와 테스크를 세워줍니다.
개인적인 욕심이지만, 애플의 리마인더를 잘 활용하고 있어서, 7일 정도의 기간에 해당하는 리마인더를 만들어주도록 추후 구현할 계획입니다.
하루 피드백
- Claude와 같은 요소를 통해서, 하루의 경험을 AI와 함께 문답하며 채팅하듯이 입력합니다.
- Claude와 같은 AI가 내가 입력한 텍스트를 분석하고, 하루에 대한 피드백을 줍니다.
- 내가 오늘 이룬 성취
- 내가 오늘 이룬 성장
- 내가 오늘 잘한 점
- 내가 오늘 부족했던 점
- 무엇이 문제였는지, 잘한건 왜 잘했는지.
- 부족했던 점을 내일은 어떻게 개선할 수 있을지
- 그리고 이 내용을 제가 설정한 템플릿에 맞는 별도의 md 파일로 만들어줍니다.
이 내용을 바탕으로 하루의 테스크를 수정해서, 내일의 테스크에 반영해줬으면 좋겠다는 생각이 있습니다.
그리고 이 내용은 마치 하루마다의 성장세를 보여주는 지표로 활용할 예정입니다.
그래서, 나중에 표나 그래프로 내 성장세를 시각적으로 구현해서 떨어진 자존감을 회복하고, 부족한 역량을 더욱 키우는 수단으로 활용하고자 합니다.
하루 테스트 자동 생성
- 내가 정한 목표, 테스크, 피드백 내용을 바탕으로 해서 오늘 해야할 일을 정리해줍니다.
- 내 캘린더도 참고해서, 오늘 일정이 있다면 이것도 반영해줍니다.
캘린더를 읽어올 수 있었으면 좋겠다는 생각을 했습니다.
우 선은 간단하게 위 3가지를 구현하고, 이후에 점진적으로 기능을 개선하고자 합니다.
MCP와의 첫 만남, 옵시디언과 연동해보기
저는 MCP(Model Context Protocol)을 활용해본 경험이 없었습니다.
그래서, 본격적으로 들어가기에 앞서서, 이를 통해서 어떤 것을 할 수 있는지, 어떻게 구현할 수 있는지를 확인해볼 필요가 있었습니다.
MCP가 등장한지 상당한 기간이 지난 지금, 많은 가이드가 존재하고 있습니다. 그래서, 다음과 같은 가이드를 참고하면서 MCP를 활용해보기로 했습니다.
- 번역 - 나만의 MCP 서버 구축 방법
- 모르고 배우면 손해! MCP 공부전 알아두면 시간낭비 안하는 3가지 | MCP 싹다 익히고, 만들고, 배포해보고 공유하는 이야기
- 요즘 난리난 MCP! 10분안에 정리해줌.
- MCP 공식 문서
- obsidian-mcp 플러그인
- 타입스크립트 MCP 서버 만들기 및 클로드 데스크탑에 연결하기
- 요즘 핫한 MCP는 트랄랄레로 트랄랄라같은 것임
이를 통해서 MCP가 무엇인지 배워볼 수 있었습니다.
그래서, 1차적인 시작으로 MCP와 옵시디언 연동을 진행해보기로 했습니다.
그 전에 간단하게 MCP가 무엇인지, 어떤 기능을 제공하는지 정리해보고 진행하고자 합니다.
MCP란 무엇인가?
MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.
MCP는 애플리케이션이 LLM에게 컨텍스트를 제공하는 방식을 표준화한 오픈 프로토콜입니다. MCP를 AI 애플리케이션을 위한 USB-C 포트라고 생각해보세요. USB-C가 다양한 주변기기와 액세서리를 장치에 연결할 수 있도록 표준화된 방식을 제공하듯, MCP는 AI 모델이 다양한 데이터 소스와 도구에 연결될 수 있도록 표준화된 방식을 제공합니다.
- MCP 공식 문서에서 발췌한 내용입니다.
실제로 MCP에 대한 예시로 다음 그림이 제시되곤 합니다.

간단하게 설명하면, MCP는 LLM과 같은 AI 기능을 확장시킬 수 있는 프로토콜입니다.
사실 이렇게만 말하면 의아할 수 있습니다.
이런 기능이 왜 필요한거야? 요즘은 chat GPT에 이미지도 넣을 수 있고, 파일도 넣을 수 있는데? 이게 뭐야 도대체?
차근차근 알아봅시다.
GPT, Claude와 같은 서비스의 한계로 인해 등장한 MCP
먼저 글을 읽기 전에 한번 생각해볼까요?
GPT와 Claude로 무엇이 가능하며, 무엇이 불가능할까요?
그리고 여러분들은 어떤 방식으로 이 두 서비스를 활용하고 계신가요?
이 부분에 있어서는 코딩 애플님의 영상에서 다룬 예시가 되게 와닿아서 이를 인용해서 설명을 해보고자 합니다.
최근에 유행했던 이탈리안 브레인롯이라는 밈을 아시나요?
AI로 생성된 조악한 동물과 사물의 합성체 이미지를 기반으로 크리처를 생성하고 거기에 이탈리아어를 기반으로 말장난으로 명명된 네이밍과 설정을 붙여서 캐릭터를 만들어내거나, 또는 그렇게 생성된 캐릭터들을 가지고 vs 구도 놀이를 하는 밈들을 일컫 는 총체로서, 2023년부터 떠오른 Brainrot을 문서 제목처럼 표방하는 밈이다.
나무위키에서 가져온 설명입니다.
쉽게 말하면 그냥 AI로 동물과 사물을 합성해서 크리처를 만들고 설정놀이를 하는거라고 보면 될 듯 합니다.

위의 상어가 대표적인 캐릭터 중 하나입니다.
이 컨텐츠의 핵심은 AI가 생성한 조악한 이미지와 설정을 가지고, 컨셉에 맞춰서 능력을 부여하고, 서로 대결을 붙이거나 다른 컨텐츠 요소로 활용하는 것입니다.
MCP도 이와 비슷하다고 볼 수 있습니다.
기존의 GPT나 Claude 자체 기능만으로는 하기 힘들었던 것을, 확장하도록 능력을 부여해주는 방법이 MCP라고 생각하면 좋을 듯 합니다.
코드로 치면 VSCode 플러그인이라던지, 코드 개발할때 사용하는 라이브러리라던지... 크롬의 확장 프로그램이라던지... 이런것들과 비슷한 목적에서 나온게 MCP라고 보면 될 듯 합니다.
AI를 위한 확장 도구. 그게 바로 MCP인 것이죠.

위의 이미지를 한번 봐볼게요.
ChatGPT와 Claude와 같은 AI 서비스만을 활용해서는 제가 프롬프트에 "가계부.excel" 파일을 보고, 여기에 "2024년 1월 1일부터 2024년 12월 31일까지의 지출 내역을 보여줘"라고 요청한다고 해서, AI가 자동으로 제 디렉토리에 접근해서, 이 파일을 읽고, 분석해서 결과를 보여줄 수는 없습니다.
저희가 의도적으로 파일을 첨부하거나 해야하며, 그렇게 하고도 제대로 읽지 못하는 문제가 발생합니다.
MCP는 이러한 AI 서비스의 한계를 극복할 수 있는 방법을 제공합니다.
엑셀 자체에서 제공하는 여러가지 기능들이 있는데, AI가 이 기능을 활용해서, 알아서 제 디렉토리를 분석해서 엑셀 파일을 찾아내고, 읽고, 수정하는 등의 작업을 할 수 있죠.
이런 기능을 제공하는 것이 MCP입니다.
기존에도 가능했던 것 아니야?
사실 MCP가 등장하기 전에도, AI는 다양한 기능을 제공했습니다.
n8n과 같은 소프트웨어를 활용해서 AI 워크플로를 구성하고, 프롬프트 하나만으로 다양한 작업을 수행할 수 있었습니다.
실제로, n8n과 같은 도구의 생태계를 보면 이미 AI를 확장하기 위한 기능들을 제공하고 있습니다. 그리고, 이미 잘 사용하고 계신 분들도 있죠.

위의 이미지는 n8n 공식 깃허브에서 가져온 예시입니다. 보는 것처럼 유저가 메세지를 보내기만 하면 알아서 우당탕탕 처리해서, 슬랙에 메세지를 보내주는 기능이 있음을 확인할 수 있죠.
그럼에도 불구하고 MCP가 화제가 된 이유는 무엇일까요?
바로 "표준화"입니다.

MCP가 등장하기 전에는, AI를 통해서 엑셀이나 옵시디언 조작과 같은 다양한 기능을 수행하기 위해서는 각 서비스마다 제공하는 API를 활용해야 했습니다.
그리고, 그에 맞춰서 별도의 기능들을 구현해야 했습니다.
그래서, 기능 하나를 추가할 때 도입비용이 상당히 높았으며, 혹시라도 제가 Claude에 연동해둔 서비스라고 하면, 이를 다시 다른 AI 서비스로 바꾸게 되면, 상당한 비용을 요구했습니다.
MCP는 이러한 문제를 해결하기 위해 등장했습니다.

다시 한 번 위의 그림을 보시면, MCP는 USB-C와 같은 역할을 합니다.
USB-C가 다양한 기기와 호환되듯이, MCP는 다양한 AI 모델과 호환됩니다. 즉, MCP를 통해서 AI 모델이 다양한 데이터 소스와 도구에 접근할 수 있게 됩니다.
그리고, 이 때 "일관된 형태"로 연결할 수 있다는 게 장점이죠.
만약 제가 모든 기능을 Claude에 연결해둔 상황이라고 해봅시다.
그리고 저는 이를 GPT로 옮기고 싶다고 가정해봐요. 기존의 방식이었다면 정말 많은 부분을 다시 구현해야 했을 겁니다.
그러나, MCP를 활용한다면, 저는 단순히 설정 파일만 GPT에 연결해주면 됩니다.
그리고, GPT가 MCP를 지원한다면, 기존에 구현한 기능을 그대로 활용할 수 있습니다.
이러한 표준화된 프로토콜 덕분에, AI 모델 간의 호환성이 높아지고, 개발자들은 더 적은 노력으로 다양한 AI 모델을 활용할 수 있게 됩니다.
이게 바로 MCP의 핵심입니다.
MCP를 어떻게 구현할 수 있을까?
MCP를 구현하기에 앞서서 다음과 같은 용어를 먼저 이해할 필요가 있습니다.

MCP의 공식 문서에 있는 도식도입니다. 공식 문서에서는 이 도식도와 함께 다음의 용어를 소개하고 있습니다.
- MCP 호스트: Claude Desktop, IDEs 또는 AI 도구와 같이 MCP를 통해 데이터를 액세스하려는 프로그램입니다.
- MCP 클라이언트: 서버와 1:1 연결을 유지하는 프로토콜 클라이언트입니다.
- MCP 서버: 표준화된 Model Context Protocol을 통해 특정 기능을 노출하는 경량 프로그램입니다.
- 로컬 데이터 소스: MCP 서버가 안전하게 액세스할 수 있는 컴퓨터의 파일, 데이터베이스 및 서비스입니다.
- 원격 서비스: MCP 서버가 연결할 수 있는 인터넷을 통해 사용할 수 있는 외부 시스템(예: API를 통해)입니다.
그런데 사실, 우리는 MCP를 구현하기 위해서 이 모든 것을 이해할 필요는 없습니다.
Claude Desktop이나 Cursor와 같은 MCP 호스트에는 이미 MCP 클라이언트가 내장되어 있습니다.
그렇기에 이들을 활용한다고 하면, 굳이 MCP 클라이언트를 직접 구현할 필요는 없습니다.
그렇다면 우리가 할 일은 MCP 서버를 구현하는 일입니다.
MCP 서버를 구현해서, MCP 호스트와 연결시키는 것. 그것만으로도 AI에게 능력을 충분히 부여할 수 있습니다.
여기서도 겁먹을 필요는 없습니다.
이미 많은 개발자들이 MCP 서버를 구현해두었고, 이를 공유하고 있습니다.

위의 이미지는 Smithery라는 사이트입니다. 이와 같은 사이트를 통해서 우리는 쉽게 MCP 서버를 찾아낼 수 있습니다.
우리가 할 일은, 이 사이트에서 원하는 MCP 서버를 찾아서, 이를 설치하고, 설정 파일을 수정해서 원하는 기능을 추가하는 것입니다.
물론, 더 복잡한 기능을 추가한다거나, 회사에서 사용하는 MCP 서버를 만들고 싶다면, 직접 구현해야 할 수도 있습니다.
그렇지만, 가볍게 만들어보고 싶다면, 이미 만들어진 MCP 서버를 활용하면 됩니다.
그렇기에 이번 프로젝트에서는 직접 서버를 구축하기 보다는 이미 있는 요소를 활용해서 구현해보고자 합니다.
아직 제가 MCP 서버를 직접 구현해본 경험이 없기에, 이를 활용해서 구현해보는 것으로 시작하고자 하며, 추후 기능을 추가하고 확장하는 과정에서 하나씩 직접 구현해볼 생각입니다.
환경설정
저는 다음과 같은 환경에서 개발을 진행했습니다.
- OS: macOS Sonoma 14.0
- Node.js: 20.18.0
- MCP Host: Claude Desktop
맥에서 개발을 진행했기에 앞으로 나올 예시들은 모두 맥에 기반하고 있습니다.
또한, TypeScript에 기반한 Node.js를 활용하였습니다.
MCP 호스트로는 Claude Desktop을 사용했습니다.
MCP 자체를 Claude의 개발사인 Antrophic에서 제안했기 때문인지, 많은 예시들이 Claude를 기준으로 작성되어 있습니다.
그렇기에 우선은 Claude Desktop을 활용해서 개발을 진행했습니다.

MCP 공식 문서에서는 서버를 구현하기 위한 다양한 언어 기반의 SDK를 제공하고 있습니다.
이 중에서 저는 TypeScript를 선택했습니다만, 서버를 직접 구현할 것이 아닌, 이미 만들어진 MCP 서버를 활용할 예정이기에, SDK를 직접 사용하지는 않았습니다.
Claude Desktop 설치하기
Claude Desktop은 공식 웹사이트에서 다운로드할 수 있습니다.
MCP 사용을 위해서는 웹 페이지에서 접근하는 Claude가 아닌 로컬에 설치된 Claude Desktop을 사용해야 합니다.
브라우저의 권한 문제와, 보안 정책 들로 인해 브라우저에서는 로컬에 접근하는데 제약이 있습니다. 이런 이유로 Claude 측에서는 로컬에 설치된 클라이언트를 통해서만 MCP를 지원하고 있습니다.
설치 후, 다음과 같은 화면을 볼 수 있습니다.

Node.js 설치하기
Node.js는 공식 웹사이트에서 다운로드할 수 있습니다.
관련해서는 Node.js 설치하기 문서를 참고해주세요.
이와 관련해서는 별도로 서술하지는 않겠습니다.