MCP (Model Context Protocol) 소개

작년 11월 쯤 Claude에서 Model Context Protocol 이라는 걸 새로 발표를 했습니다. (당시 아무도 관심이 없었던 것 같습니다.)  그러나 최근 들어 급격하게 MCP가 주목 받고 있는데요. 그 이유로 많은 분들이 Agent가 어쨌든 본 궤도에 올라섰고, 이에 따라서 Agent를 개발하는데 있어서 실제로 사용하는 외부 데이터 소스 및 도구들과 LLM 어플리케이션을 효과적으로 연결 시켜줄 새로운 표준이 필요했기 때문이라는 생각이 듭니다. 

 

즉, Model Context Protocol(MCP)은 LLM(Large Language Model) 애플리케이션과 외부 데이터 소스 및 도구들 간의 원활한 통합을 가능하게 하는 개방형 프로토콜입니다. AI 기반 IDE를 구축하든, 채팅 인터페이스를 개선하든, 혹은 커스텀 AI 워크플로우를 만들든 관계없이, MCP는 LLM이 필요로 하는 컨텍스트와 연결하기 위한 표준화된 방법을 제공합니다.

 

 

위의 그림에서 볼 수 있다시피, MCP 는 MCP server와 연결되어 있는 리소스와 MCP host 즉, LLM 어플리케이션이 를 효과적으로 LLM 애플리케이션과 데이터 소스 간의 상호작용할 수 있도록 하는 통합 워크플로우를 구축할 수 있는 툴이라고 생각하면 좋을 것 같습니다.

 

MCP의 핵심 목표는 다음과 같은데, 

 

컨텍스트 공유 표준화: LLM 애플리케이션과 데이터 소스 간의 상호 작용을 위한 표준 프로토콜을 제공하고, 구조화된 방식으로 컨텍스트 정보를 전달 및 관리하며, 일관된 인터페이스를 통해 데이터 접근을 보장합니다.

 

도구와 기능 노출: AI 시스템에 로컬 또는 원격 도구들을 안전하게 노출하고, 표준화된 방식으로 기능을 정의 및 호출하며, 도구의 능력을 명확하게 기술하고 제어합니다.

 

통합 워크플로우 구축: 여러 데이터 소스와 도구를 조합한 워크플로우를 생성하고, 재사용 가능한 프롬프트 템플릿을 제공하며, 모듈식 구성을 통해 유연한 확장을 가능하게 합니다.

 

MCP 구조(출처 : https://dytis.tistory.com/112)

MCP는 Client-Server 아키텍처를 기반으로 LLM 어플리케이션이 데이터 소스와의 원활한 통신을 가능하게 하도록 설계되었는데 특히, 3가지 구성 요소로 이루어졌습니다. (출처 : https://discuss.pytorch.kr/t/deep-research-model-context-protocol-mcp/6594)

 

  • MCP 호스트(Host) : AI 모델을 운용하는 주체 애플리케이션입니다. 예를 들어 Claude Desktop, IDE의 AI 어시스턴트, 채팅 애플리케이션 등이 호스트에 해당합니다  호스트는 사용자로부터 질문이나 명령을 받아 모델에게 전달하고, 모델의 응답을 사용자에게 보여주는 전체 흐름을 조율합니다. 또한 내부에 MCP 클라이언트를 구동하여 MCP 서버들과 연결을 유지합니다.

 

  • MCP 클라이언트(Client) : 호스트 애플리케이션 내부에서 동작하며, 하나의 MCP 서버와 1:1 연결을 담당하는 컴포넌트입니다.  호스트는 여러 종류의 데이터를 쓰기 위해 여러 서버에 연결할 수 있는데, 이때 각 서버마다 전담 클라이언트가 필요합니다. MCP 클라이언트는 AI 모델 측(호스트 측) 에서 MCP 프로토콜을 구현하며, 서버로 요청을 보내고 응답을 받아 모델에 전달하는 역할을 합니다.

 

  • MCP 서버(Server) : 외부 데이터나 기능을 제공하는 측입니다. MCP 서버는 하나의 특정 서비스나 데이터 소스를 감싸서 모델이 이해할 수 있는 형태로 맥락(Context)을 제공합니다. 예를 들어 파일 시스템 MCP 서버는 파일 읽기 기능을, 날씨 MCP 서버는 날씨 정보 제공 기능을, 데이터베이스 MCP 서버는 쿼리 실행 기능을 노출할 수 있습니다. MCP 서버는 자신이 제공하는 기능을 표준화된 인터페이스로 정의하여 MCP 클라이언트 요청에 응답합니다. 하나의 호스트(예: AI IDE)는 여러 MCP 서버(파일, Git, 데이터베이스 등)에 동시에 연결해 다양한 맥락을 얻을 수 있습니다.

MCP의 작동 방식을 간략하게 나누면  연결 설정, 컨택스트 교환, 도구 호출, 결과 처리 등 4가지 정도로 나눌 수 있습니다 

연결 설정 과정

1) 연결 설정 (Connection Establishment)

 

호스트 애플리케이션(claude Desktop)이 MCP 클라이언트를 생성하고, 생성된 클라이언트는 MCP 서버와의 연결을 설정하는데 이 때 프로토콜 버전, 기능, 권한 등을 협상*합니다.

* 협상은 다음과 같이 진행되는데 클라이언트가 연결 요청과 함께 자시의 능력(Capability)를 서버에 전송하게 되고 서버는 이를 검토하여 수용 가능한 설정을 응답으로 전송하고 이를 바탕으로 통신 세션을 구성하는 과정을 의미함.

 

2) 컨텍스트 교환 (context Exchange)

 

서버는 클라이언트에게 데이터 소스의 컨택스트 정보를 제공하고 이를 클라이언트는 호스트 프로세스에 전달하게 됩니다. 이 때 호스트 프로세스는 이를 집계하여(여러 클라이언트로 정보를 제공받기에) AI 모델에게 제공합니다.

 

3) 도구 호출 (Tool Invocation)

 

AI 모델은 제공 받은 컨택스트 정보 집계를 바탕으로 특정 작업을 수행하기 위해 도구 호출을 요청할 수 있습니다. 도구 호출을 할 경우, 호스트 프로세스는 이를 적절한 클라이언트에게 전달합니다. 이후 클라이언트는 다시 서버에 이를 전달하고 서버는 요청된 도구 호출 작업을 수행하고 다시 결과를 클라이언트에게 반환합니다.

 

4) 결과 처리(Result Processing)

 

클라이언트는 서버로부터 받은 결과를 호스트 프로세스에 전달합니다. 다시 호스트 프로세스는 이 결과를 AI 에게 전달하고 이를 바탕으로 AI 모델은 응답을 생성합니다. 

 

 

MCP의 구현

 

MCP는 다양한 프로그래밍 언어로 구현될 수 있으며, Anthropic은 다음과 같은 SDK를 제공합니다.

 

  • TypeScript SDK
  • Python SDK
  • Java SDK
  • Kotlin SDK

이를 활용하여 MCP 서버와 클라이언트를 간단히 구현할 수 있으며, 다음 포스트에서 파이썬을 활용한 MCP 구현 예제를 다루도록 하겠습니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유