MCP: AI와 데이터 간의 연결다리
시작하며
인공지능은 지난 몇 년 동안 급속도로 발전해왔으며, Claude와 GPT 같은 대규모 언어 모델(LLM)은 추론 능력에서 점점 더 정교해지고 있습니다. 그러나 이 모델들은 학습된 데이터 외에는 답변을 못하는 한계가 존재합니다. 모든 새로운 데이터 소스는 자체적인 맞춤 구현이 필요하기 때문에 확장을 하기엔 어려움이 있습니다.
이러한 문제들 때문에 MCP가 등장을 합니다. Model Context Protocol(MCP)은 2024년 11월 Anthropic에 의해 소개되고 2025년에 빠르게 성장하고 있는 오픈 스탠다드입니다. MCP는 표준화된 방식으로 정말 간편하고 확장성있게 LLM들을 외부 데이터 소스 및 도구와 원활하게 연결하여 llm이 컨텍스트에 맞는 답변을 하게끔 해주는 다리역할입니다
기존 LLM의 컨텍스트 통합 문제
MCP가 무엇을 하는지 설명하기 전에, 그것이 해결하는 문제를 이해해 봅시다:
SOTA(State of the Art)를 달성한 AI 모델들 조차도 대부분 고립되어 학습된 내용으로만 작동합니다 - Anthropic이 표현했듯이 이 모델들은 "trapped behind information silos and legacy systems (정보 사일로와 레거시 시스템 뒤에 갇혀 있습니다)".
기존 모델들은 다음에 대한 접근이 불가능 합니다.
- 개인 파일 및 문서
- 데이터베이스 및 API의 실시간 데이터
- 비즈니스 도구 및 지식 기반
- 개발 환경 및 코드 저장소
이러한 컨텍스트 없이, AI 어시스턴트는 훈련 데이터에 있는 내용이나 대화에서 명시적으로 공유하는 내용에만 의존할 수 있습니다. 이는 특정 정보에 대한 접근이 필요한 복잡한 작업에 대한 유용성을 제한합니다.
MCP란?
핵심적으로, MCP는 AI 모델이 외부 데이터 소스 및 도구를 발견하고 상호작용할 수 있게 하는 표준화된 프로토콜입니다. 각 데이터 소스나 API에 대해 맞춤형 통합을 구축하는 대신, MCP는 AI 시스템과 필요한 데이터를 연결하기 위한 범용 프레임워크를 제공합니다.
Core Architecture
Model Context Protocol(MCP)은 LLM 애플리케이션과 통합 사이의 원활한 통신을 가능하게 하는 유연하고 확장 가능한 아키텍처를 기반으로 합니다. 이 문서는 핵심 아키텍처 구성 요소와 개념을 다룹니다.
Overview
MCP는 다음과 같은 클라이언트-서버 아키텍처를 따릅니다:
Host
호스트 프로세스는 컨테이너 및 코디네이터 역할을 합니다:
- 여러 클라이언트 인스턴스를 생성하고 관리
- 클라이언트 연결 권한 및 수명 주기를 제어
- 보안 정책 및 동의 요구사항을 실행
- 사용자 권한 부여 결정을 처리
- AI/LLM 통합 및 샘플링을 조정
- 클라이언트 간의 컨텍스트 집계를 관리
Clients
각 클라이언트는 호스트에 의해 생성되고 고립된 서버 연결을 유지합니다:
- 서버당 하나의 상태 유지 세션을 설정
- 프로토콜 협상 및 기능 교환을 처리
- 프로토콜 메시지를 양방향으로 라우팅
- 구독 및 알림을 관리
- 서버 간의 보안 경계를 유지
호스트 애플리케이션은 여러 클라이언트를 생성하고 관리하며, 각 클라이언트는 특정 서버와 1:1 매칭을 합니다
Servers
서버는 전문화된 컨텍스트와 기능을 제공합니다:
- MCP 기본 요소를 통해 리소스, 도구 및 프롬프트를 제공
- 태스크를 독립적으로 운영
- 클라이언트 인터페이스를 통해 샘플링을 요청
- 원격 연결에 TLS 사용
- 연결 출처 확인
- 필요할 때 인증 구현
- 로컬 프로세스 또는 원격 서비스
Core components
Protocol layer
Protocol layer는 메시지 프레이밍, 요청/응답 연결 및 하이-레벨 통신 패턴을 처리합니다.
Transport layer
Transport layer는 클라이언트와 서버 간의 실제 통신을 처리합니다. MCP는 여러 전송 메커니즘을 지원합니다:
- Stdio transport
- 통신에 표준 입력/출력을 사용
- 로컬 프로세스에 이상적
- HTTP with SSE transport
- 서버-클라이언트 메시지에 Server-Sent Events를 사용
- 클라이언트-서버 메시지에 HTTP POST를 사용
Which Transport Layers to Use?
Transport 레이어는 서버가 어디에 위치에 있는지에 따라 달라집니다
- Local
- 로컬 프로세스에는 Stdio transport를 사용
- Server와 client가 같은 기기에 있을때 사용
- Remote
- 로컬 클라이언트가 리모트 서버로 통신할 때 HTTP 통신
- 리모트 서버가 로컬 클라이언트로 통신할 때 SSE 통신
모든 전송은 메시지 교환에 JSON-RPC 2.0을 사용합니다.
데모
설정
pip install fastmcp
MCP Server
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo")
@mcp.tool()
def calculate_bmi(weight_kg: float, height_m: float) -> float:
"""Calculate BMI given weight in kg and height in meters"""
return weight_kg / (height_m**2)
Build client
fasmcp install demo.py
Test in Claude 3.7 sonnet
만들어 놨던 python code에서는 미터와 kg으로 input을 받게 되어있는데 llm이 인풋값 규격에 맞춰 미터와 kg으로 변환하여 mcp server에 전달하여 원하는 수치를 받는걸 볼 수 있습니다
마치며
Model Context Protocol은 AI 시스템을 실제 애플리케이션에서 더 실용적이고 정확하게 만드는 데 있어 중요한 도약을 나타냅니다. AI 모델이 외부 데이터 소스 및 도구와 상호작용할 수 있는 표준화된 방법을 제공함으로써, MCP는 많은 부문에서 LLM이 겪던 문제들을 해결해줍니다
프로토콜의 유연한 아키텍처, 호스트, 클라이언트 및 서버 간의 분리는 강력한 보안 경계를 유지하면서 다양한 사용 사례에 쓰일 수 있습니다.
앞으로, MCP는 웹 통신의 표준 프로토콜이 된 HTTP처럼 AI-데이터 통신의 표준이 될 수 도 있습니다. 벌써 Brave Search, Github, qdrant 와 같은 외부 데이터 제공하는 서비스들이 공식적으로 mcp 서버를 지원을 하게 되면서 코드 한줄로 각종 agent들을 손쉽게 추가 할 수 있는 npx command 도 제공하며 https://smithery.ai/ 와 같은 mcp server hub도 제공합니다