MCP의 등장과 구성요소

 

기존 방식: Function Calling

Function Calling 방식 이전에는 LLM은 프롬프트 엔지니어링을 통해 구조화된 출력을 유도하였고, Text Parsing 방식은 LLM 기반 애플리케이션의 불안정성을 높였다.

  • 2023년 7월 OpenAI가 Function Calling 기능을 공개
  • LLM이 사용자의 자연어 요청을 이해하고 외부 시스템의 특정 기능(함수)을 호출하여 작업 수행

작동 방식

  1. 함수 정의 및 메시지 전달 (모델에게 호출 가능한 함수 정의와 사용자 요청을 함께 전달)
  2. 함수 호출 (모델은 사용자 요청에 따라 호출할 함수 이름 + 입력 인자(args)를 결정하여 반환)
  3. 외부 함수 실행 (모델로부터 받은 함수 호출 정보를 바탕으로 실제 함수를 실행)
  4. 실행 결과 반환 (실행된 함수 결과를 모델에게 전달 (Add Contextual Message))
  5. 최종 응답 생성 (모델은 제공받은 함수 실행 결과를 포함하여 사용자에게 최종 응답 생성)

한계점

  1. 상태 유지 어려움
  2. 복잡한 작업 처리
  3. 플랫폼 단편화 (AI 모델/벤더마다 다른 함수 호출방식을 사용하여 반복 구현이 필요)

Context (맥락)이 중요한 이유

  1. 실시간 업데이트되는 최신 정보 및 정확하고 관련성 높은 데이터에 접근할 수 있을 때, AI는 더욱 적절한 응답을 생성할 수 있음
  2. 방대한 지식 암기가 아니라, 주어진 상황과 관련된 ‘맥락’을 정확히 이해하고 활용하는 능력이 필요

MCP (Model Context Protocol)

  • AI 모델과 외부 자원간 맥락 정보를 일관된 형태로 주고받을 수 있도록 정의한 표준 규약
  • 다양한 외부 자원과 AI 모델이 연결될 수 있도록 지원

MCP 생태계 구성 요소

Host

  • 전체 생태계 지휘자 역할 (Calude Desktop 등과 같은 AI 애플리케이션이 이 역할을 맡음)
  • Host는 사용자의 요청을 받아 어떤 도구가 필요한지 판단, 적절한 Server들과 연결 조율
  • Host의 핵심은 컨텍스트 관리이며, 사용자 요청에 따라 필요한 Server를 파악하고, 대화 맥락을 유지하며 여러 Server들과의 상호작용 과정에서 얻은 정보를 종합하여 사용자에게 일관된 경험 제공

Client

  • Host와 Server 사이의 번역가이자 중개자 역할 수행
  • Host의 추상적인 요청을 Client는 구체적인 MCP Protocol 메시지로 변환하여 해당 Server에 전달
  • Client의 핵심은 프로토콜 추상화이며, 각 Server마다 다른 데이터 형식이나 인증 방식을 가질 수 있지만, Client는 이런 복잡성을 숨기고 Host에게 일관적인 인터페이스를 제공함
  • Client는 연결 관리도 담당하며, Server와의 연결 상태를 모니터링하고, 연결이 끊어지면 재연결을 시도하며, 네트워크 문제나 Server 오류 상황을 Host에게 적절하게 알림

Server

  • Server는 실제 작업을 수행하는 전문가로, 특정 도메인의 전문 지식과 도구를 제공함
  • 각 Server는 독립적으로 개발되고 배포될 수 있으며, 자신이 제공하는 기능을 명확히 정의하고 문서화함.
  • Server는 동적 기능을 제공하며, 단순히 정해진 API를 제공하는 것이 아니라, 현재 상태와 컨텍스트에 따라 사용 가능한 기능들을 실시간으로 조정함

Reference

  • [1] fastcampus 강의 - MCP와 A2A로 끝내는 상상도 못할 Multi-Agent 구축
  • [2] https://wikidocs.net/286333