MCP(Model Context Protocol) 알아보기

최근에 1달간 미국에 다녀왔습니다. 미국에 있는동안 MCP(Model Context Protocol)가 아주 핫 해져서 한국에 오면 공부 해야겠다고 생각했습니다. 이번 포스팅에서 공부한 내용을 간략하게 정리해보고자 합니다.
MCP란 무엇인가?
MCP(Model Context Protocol)는 Claude를 개발한 Anthropic이 2024년 말에 공개한 오픈 프로토콜입니다. MCP는 LLM을 활용한 서비스에서 외부 데이터 소스나 도구를 쉽게 연결하기 위한 프로토콜입니다. Anthropic에서는 MCP를 가리켜 “AI 응용 프로그램을 위한 USB-C 포트”에 비유하기도 했는데요, USB-C 규격이 기기 간 연결을 표준화했듯이 MCP도 AI와 여러 서비스 간 연결을 표준화하여 외부의 다양한 서비스와 연결될 수 있도록 해주려는 것이죠. 한 가지 예를들어보면 AI가 Github에 접근해서 내가 프롬프트에 적어서 시킨대로 작업을 해줄 수 있게되는 것입니다.
SDK도 오픈소스로 공개되어 있어 개발자들이 쉽게 MCP 서버를 만들어 배포할 수 있습니다.
MCP의 구성요소
MCP의 구성 요소로는 호스트(Host), 클라이언트(Client), 그리고 서버(Server) 가 있습니다. MCP는 기본적으로 클라이언트-서버 구조를 따르는데, 한 단계 위에 호스트 애플리케이션이 여러 클라이언트를 관리하는 형태입니다 .
- MCP 호스트: AI를 활용하는 메인 응용 프로그램입니다. Claude Desktop 앱, Cursor IDE 등이 호스트가 될 수 있습니다. 호스트는 내부에서 여러 MCP 클라이언트 인스턴스를 생성하고 수명주기를 관리합니다. 또한 각 클라이언트가 어떤 서버에 접속할지 권한과 보안 정책을 제어하는 역할도 합니다.
- MCP 클라이언트: 호스트에 의해 생성되어 특정 MCP 서버와 1:1로 연결되는 구성 요소입니다. 쉽게 말해 AI 에이전트 또는 애플리케이션 측을 가리킵니다. 필요한 외부 데이터나 기능이 있을 때 MCP 서버로 요청을 보냅니다. MCP 클라이언트는 JSON-RPC 기반의 표준화된 인터페이스로 서버와 대화하며, 서버가 어떤 종류이든 MCP 프로토콜만 따르면 동일한 방식으로 활용할 수 있습니다. Claude Desktop에 탑재된 Claude가 MCP 클라이언트가 되는 것입니다.
- MCP 서버: 말 그대로 서버 측 연결 대상입니다. 각기 다른 외부 시스템이나 도구를 추상화하여 제공하는 프로그램입니다. 하나의 MCP 서버는 특정 서비스나 데이터 소스에 특화된 기능을 노출하는데, 예를 들면 GitHub 리포지토리 정보를 가져오는 MCP 서버, Supabase같은 데이터베이스에 질의하는 MCP 서버 등이 따로 존재합니다. 정보를 가져오는 것뿐만 아니라 어떤 액션을 취하는 것도 가능합니다. 서버 개발자는 본인이 연결하고자 하는 시스템의 기능을 MCP 프로토콜의 표준 형식에 맞춰 툴(tools) 이나 리소스(resources), 프롬프트(prompts) 형태로 노출시킵니다. 이렇게 한 번 MCP 서버를 만들어두면 어떤 MCP 클라이언트든 추가 개발 없이 해당 서버에 접속해 기능을 활용할 수 있기 때문에 다양한 AI를 개발하기가 쉬워집니다.
MCP 정리
컴퓨터나 프로그램들이 서로 통신하기 위한 약속된 규칙과 형식을 프로토콜이라고 합니다. 네트워크 통신에서 언제, 어떤 형식으로, 무슨 내용을 보내고 받을지 정해진 약속이 있어야 양쪽이 이해할 수 있습니다. 우리에게 친숙한 HTTP도 프로토콜입니다. 클라이언트가 특정 URL로 특정 Method로 Request를 보내면 서버는 Response와 함께 상태코드를 클라이언트에게 전달합니다.
마찬가지로 MCP도 프로토콜입니다. 클라이언트와 서버 사이의 약속입니다만 Web 통신에서 사용되었던 HTTP와는 대상 분야가 다르기 때문에 목적과 구조에 차이가 있습니다. HTTP는 텍스트 기반의 문서 전송을 위해 설계된 반면에 MCP는 AI에게 필요한 Context 데이터의 전송이나 Tool을 활용해 특정 명령을 실행하기 위해서 설계가 되었습니다. MCP를 조금 더 쉽게 이해해보기 위해 친숙한 HTTP와 비교를 한 번 해봤습니다.
MCP는 JSON-RPC라는 원격 호출 방식을 기반으로 하여 상태를 유지하는 세션(session)을 관리합니다. 클라이언트와 서버가 한 번 연결되면 연속적인 상호작용이 가능하다는 것입니다.
MCP의 목적은 AI Agent들이 외부와 상호작용하는 방식을 표준화하는 것에 있습니다. 지금까지 AI 모델들은 주어진 프롬프트에서만 작업하고 외부 데이터에 접근하려면 특정 API를 호출하거나 RAG같은 기법이 적용되었어야 했습니다. 여러 AI 모델마다 개발을 따로 다 해줬어야 했는데 MCP를 지원하면 앞서 말했듯이 개발된 것을 그냥 가져다 쓰면 되는 것입니다.
MCP를 구현하는 방법
현재 Anthropic을 비롯해 여러 곳에서 언어 별로 공식 MCP SDK를 제공하고 있어서 이것을 활용하면 비교적 쉽게 MCP 클라이언트나 서버를 구축할 수 있습니다. Anthropic에서 제공하는 MCP python-sdk를 이용해서 간단한 MCP를 만들어봤습니다. 어렵지 않습니다.
저는 스타크래프트 게임을 좋아하는데요. 스타크래프트 선수들의 매월 ELO 랭킹 데이터를 가져와서 제공해주는 간단하게 MCP를 만들어봤습니다.
MCP를 Claude Desktop에 연결해주었더니 아래와 같이 응답하는 것을 볼 수 있었습니다.

Local MCP 서버를 Claude Desktop에 연결하는 방법은 공식문서를 참고했습니다.
마무리
MCP에 대해서 공부하고 간단하게 정리해봤습니다. 아직 초기 단계에 기술이라 안정되기까지는 지켜봐야겠지만 다양한 MCP 서버가 개발되면 AI가 할 수있는 일이 점점 더 많아 질테니 AI의 활용성과 유용성이 어디까지 올라갈지 상상이 안되네요. 그리고 복잡한 MCP 서버를 개발하면 보안에도 많이 신경써야 할 것 같고 AI Agent들이 어떤 요청을 주고 받는지 로깅하고 모니터링하는 것도 아주 중요해질 것 같습니다. 글 쓰면서 smithery에 등록된 MCP 서버의 수를 체크해봤는데 벌써 4000개가 훨씬 넘는 MCP서버들이 있네요. 기술의 발전 속도가 정말 엄청난 것 같습니다.