MCP는 Model Context Protocol의 약자로, LLM(대규모 언어 모델) 애플리케이션이 외부 데이터 소스와 도구에 표준화된 방식으로 연결될 수 있게 해주는 개방형 프로토콜입니다. Anthropic에서 개발했으며, AI 애플리케이션을 위한 USB-C 포트와 같은 역할을 합니다.
🎯 MCP가 필요한 이유
LLM은 기본적으로 훈련 시점에 고정된 지식만 가지고 있어 실시간 데이터 접근이나 외부 시스템과의 상호작용이 불가능합니다. 전통적으로는 각 도구마다 커스텀 API 통합이 필요했지만, MCP는 이를 표준화하여 개발 복잡성을 획기적으로 줄입니다.
- M×N 문제 해결: M개의 AI 앱 × N개의 도구 → M+N 개의 연결만 필요
- 재사용성: 한 번 만든 MCP 서버로 모든 호환 클라이언트에서 사용 가능
- 보안: 명확한 권한 경계와 사용자 동의 체계 내장
🏗️ 아키텍처
MCP는 클라이언트-서버 아키텍처를 따릅니다:
┌─────────────────────────────────┐
│ MCP Host (AI 애플리케이션) │
│ ┌─────────┐ ┌─────────┐ │
│ │Client 1 │ │Client 2 │ ... │
│ └────┬────┘ └────┬────┘ │
└───────┼───────────┼────────────┘
│ │
┌────▼────┐ ┌────▼────┐
│Server A │ │Server B │ ...
│(파일시스템)│ │(DB) │
└─────────┘ └─────────┘
| 구성 요소 | 설명 |
|---|---|
| Host | Claude Desktop, VS Code, IDE 등 AI 앱 |
| Client | Host 내에서 각 서버와 1:1 연결을 유지 |
| Server | 특정 기능(파일, DB, API 등)을 노출하는 경량 프로그램 |
📦 3가지 핵심 프리미티브 (Primitives)
| 프리미티브 | 기능 | 비유 | 설명 |
|---|---|---|---|
| Tools 🛠️ | 실행 가능한 함수 | POST/PUT | LLM이 파일 쓰기, API 호출, DB 쿼리 등 액션 수행 |
| Resources 📄 | 데이터 소스 | GET | 문서, DB 스키마, API 응답 등 컨텍스트 제공 (읽기 전용) |
| Prompts 📝 | 템플릿 | 워크플로 레시피 | 재사용 가능한 상호작용 템플릿 |
🔌 통신 방식
- JSON-RPC 2.0 기반 메시지 형식
- Stdio Transport: 로컬 프로세스 간 통신 (표준 입출력)
- Streamable HTTP Transport: 원격 서버 통신 (HTTP POST + SSE)
- 생명주기 관리: 초기화 → 기능 협상 → 세션 유지 → 종료
💻 간단한 예제 (Python SDK)
from mcp.server import MCPServer
mcp = MCPServer("Demo")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
"""Greet someone by name."""
return f"Hello, {name}!"
단 15줄로 완전한 MCP 서버 완성! 타입 힌트만으로 JSON Schema가 자동 생성됩니다.
🔐 보안 원칙
- 사용자 동의 및 통제: 모든 데이터 접근과 도구 실행에 명시적 동의 필요
- 데이터 프라이버시: 사용자 데이터는 동의 없이 외부로 전송 금지
- 도구 안전성: 도구 호출은 임의 코드 실행으로 간주, 주의 필요
- LLM 샘플링 제어: 서버가 LLM에 요청할 때 사용자 승인 필수
🌐 생태계
- 공식 SDK: Python, TypeScript
- 공식 문서: modelcontextprotocol.io
- 허깅페이스 MCP 코스: huggingface.co/learn/mcp-course
- 지원 클라이언트: Claude Desktop, VS Code, Cursor, Continue 등
- 참고 서버: 파일시스템, GitHub, Slack, Elasticsearch, Sentry, PostgreSQL 등
MCP는 LSP(Language Server Protocol)에서 영감을 받아, AI 애플리케이션 생태계 전체에 표준화된 컨텍스트 통합 방식을 제공합니다.