본문 바로가기
AI/RAG

Model Context Protocol (MCP)

by dhkim327 2025. 4. 2.

2024년 11월, AnthropicModel Context Protocol(MCP) 개념을 오픈소스로 공개한 이후, 코딩 관련 유튜브나 LLM(AI 언어 모델) 기반 기술들을 살펴보다 보면 MCP라는 용어를 자주 접하게 됩니다. 특히 RAG(Retrieval-Augmented Generation), LLM 에이전트, 멀티 에이전트 시스템 등 다양한 AI 응용 사례에서 MCP는 점점 더 중요한 개념으로 자리 잡고 있죠. 따라서 이번 포스팅에서는 최근 주목받고 있는 Model Context Protocol(MCP)에 대해서 개념 중심으로 소개해보려 합니다.


1. Model Context Protocol (MCP) 정의

MCP는 LLM 애플리케이션과 외부 데이터 소스, 다양한 도구들이 서로 원활하게 통합되도록 돕는 일종의 표준화된 문맥 교환 방식입니다. 쉽게 말해, LLM 기반 애플리케이션들끼리 효과적으로 협업하기 위해선 서로가 이해할 수 있는 ‘공통의 문맥 언어’가 필요하고, MCP는 그 역할을 담당합니다.

예를 들어, 요즘 개발자들 사이에서 주목받고 있는 IDE인 Cursor는 GitHub Copilot과 유사한 기능을 제공하면서 LLM을 활용한 확장된 코딩 경험을 제공합니다. 이런 LLM 기반 IDE가 사용자 코드나 명령을 정확히 이해하고 반응하려면, 내부적으로 주고받는 데이터의 구조와 흐름(즉, 문맥)이 통일되어 있어야 합니다

 

물론 이러한 Model Context Protocol(MCP)은 IDE 개발자가 설계하고 구현하는 영역이기 때문에 일반 사용자 입장에서는 직접 신경 쓸 필요는 없습니다. 하지만 MCP의 개념을 이해하고 이를 직접 활용할 수 있다면, 단순히 IDE 개발에 그치지 않고 LLM을 기반으로 하는 다양한 애플리케이션 서비스에서도 일관된 워크플로우를 설계할 수 있게 됩니다.

 

MCP의 목적 및 특징

MCP의 핵심 목적은 아래와 같습니다

  1. LLM 모델마다 요구하는 입력 포맷이나 이해하는 문맥이 다를 수 있습니다. MCP는 이러한 차이를 흡수하고, 다양한 LLM을 유연하게 교체하거나 조합하여 사용할 수 있도록 공통의 문맥 구조를 제공합니다.
    • 특정 모델에 종속되지 않고, 다양한 모델을 상황에 맞게 혼합하거나 스위칭할 수 있는 기반이 마련됨
    • MCP는 다양한 데이터 소스와 도구를 하나의 표준 프로토콜로 연결하면서 AI모델과 서로 통신을 주고받을 수 있는 환경
  2. MCP는 단순히 데이터를 주고받는 것이 아니라, 데이터를 어떤 수준까지 노출시킬지 계층적으로 제어할 수 있는 구조도 내포하고 있습니다.
    •  서비스 내에서 민감 정보는 제한적으로 노출하고, 필요한 정보만 안전하게 공유할 수 있게 설계
    •  예를 들어, 에이전트 A는 전체 유저 정보를 알 필요가 없고, 에이전트 B만이 접근해야 하는 상황에서 이러한 문맥 기반 접근 제어(contextual access control)이 가능해짐

2. MCP Architecture and Components

MCP architecture (출처: https://modelcontextprotocol.io/introduction)

Componets

 

  • MCP 호스트(MCP Hosts): Claude Desktop, IDE, 기타 AI 도구처럼 MCP를 통해 데이터에 접근하려는 프로그램들
  • MCP 클라이언트(MCP Clients): 서버와 1:1 연결을 유지하며 통신을 담당하는 프로토콜 클라이언트
  • MCP 서버(MCP Servers): MCP 표준을 통해 특정 기능이나 데이터를 외부에 노출하는 경량 프로그램
    • 기본적으로 MCP 서버는 LLM이 탑재되어 있지 않으며, 특정한 요청이 들어왔을 때 정해진 기능을 수행하는 일종의 API 역할을 합니다.
  • 로컬 데이터 소스(Local Data Sources): 사용자의 컴퓨터에 있는 파일, 데이터베이스, 서비스 등 MCP 서버가 안전하게 접근할 수 있는 로컬 자원
  • 원격 서비스(Remote Services): API 등을 통해 인터넷 상에서 접근 가능한 외부 시스템들, MCP 서버가 연결할 수 있음

MCP는 위와 같은 기본 구성요소를 포함하는데, 기본적인 작동방식은 다음과 같습니다.

  1. MCP ClientMCP Host(예: LLM 기반 애플리케이션)에게 특정 작업 요청을 보냅니다.
  2. MCP Host는 이 요청을 기반으로, 해당 작업을 수행할 수 있는 적절한 MCP Server로 연결을 시도합니다.
  3. MCP Server는 필요한 데이터를 로컬 소스나 외부 서비스에서 읽거나 조작한 뒤, 그 결과를 다시 MCP Host로 전달합니다.
  4. 마지막으로 결과는 MCP Host를 통해 MCP Client로 반환됩니다.

 

예를들면 내 컴퓨터에 구글 캘린더와 노션과 연동되는 MCP 서비스가 구축되었다고 가정했을 때, 다음과 같은 시나리오를 예상할 수 있을 것입니다.

 

Client :

"내가 오늘 회의에서 메모한 내용(txt 파일)을 Notion에 정리해주고, 다음 미팅을 Google 캘린더에 기록해줘."

 

이러한 질문을 받았을 때 LLM이 탑재된 MCP Host에서는 Client의 요청을 분석하여 정리한 다음, Notion을 관리하는 MCP Server A와 Google 캘린더를 관리하는 MCP Server B에대해 각각 요청을 보내게 됩니다. 각각의 MCP Server A와 MCP Server B는 정해진 프로토콜 기반으로 요청을 수행하게 됩니다. (Notion 페이지 쓰기, Google 캘린더에 기록)


이번 포스팅에서는 Model Context Protocol(MCP)의 기본 개념과 기본적인 구조에 대해서 알아보았습니다. Anthropic사에서는 MCP를 'USB-C 포트'에 비유하기도 했습니다. USB-C가 다양한 기기를 하나의 표준 포맷으로 연결해주는 것처럼, MCP 역시 AI 애플리케이션들이 서로 다른 모델, 데이터 소스, 도구들과 손쉽게 연결될 수 있도록 돕는 '표준 인터페이스' 역할을 한다는 의미입니다. 앞으로 LLM 기반 서비스들이 더 정교해지고 복잡해질수록, 이러한 통합 프로토콜의 중요성은 더욱 커질 것으로 보입니다. 다음 글에서는 실제 MCP가 적용된 사례나, 구체적인 메시지 구조(JSON 예시 등)에 대해서도 다뤄볼 예정입니다.

 


Reference