기존 방식: Function Calling
Function Calling 방식 이전에는 LLM은 프롬프트 엔지니어링을 통해 구조화된 출력을 유도하였고, Text Parsing 방식은 LLM 기반 애플리케이션의 불안정성을 높였다.
- 2023년 7월 OpenAI가 Function Calling 기능을 공개
- LLM이 사용자의 자연어 요청을 이해하고 외부 시스템의 특정 기능(함수)을 호출하여 작업 수행
작동 방식
- 함수 정의 및 메시지 전달 (모델에게 호출 가능한 함수 정의와 사용자 요청을 함께 전달)
- 함수 호출 (모델은 사용자 요청에 따라 호출할 함수 이름 + 입력 인자(args)를 결정하여 반환)
- 외부 함수 실행 (모델로부터 받은 함수 호출 정보를 바탕으로 실제 함수를 실행)
- 실행 결과 반환 (실행된 함수 결과를 모델에게 전달 (Add Contextual Message))
- 최종 응답 생성 (모델은 제공받은 함수 실행 결과를 포함하여 사용자에게 최종 응답 생성)
한계점
- 상태 유지 어려움
- 복잡한 작업 처리
- 플랫폼 단편화 (AI 모델/벤더마다 다른 함수 호출방식을 사용하여 반복 구현이 필요)
Context (맥락)이 중요한 이유
- 실시간 업데이트되는 최신 정보 및 정확하고 관련성 높은 데이터에 접근할 수 있을 때, AI는 더욱 적절한 응답을 생성할 수 있음
- 방대한 지식 암기가 아니라, 주어진 상황과 관련된 ‘맥락’을 정확히 이해하고 활용하는 능력이 필요
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
PREVIOUS2025 Dev Retrospective
NEXTMCP의 계층