1. 개요
Model Context Protocol (MCP)는 Anthropic이 2024년 11월 25일에 발표한 개방형 표준 프로토콜로, AI 애플리케이션(특히 LLM)이 외부 데이터 소스 및 도구와 원활하게 통합될 수 있도록 하는 규격입니다. MCP는 마치 USB-C 포트가 다양한 주변기기를 표준화된 방식으로 연결하듯, AI 모델과 다양한 데이터 소스·도구 간의 연결을 표준화합니다.
2025년 12월, Anthropic은 MCP를 Agentic AI Foundation(AAIF)에 기부했습니다. AAIF는 Linux Foundation 산하의 기금으로, Anthropic, Block, OpenAI가 공동 창립하고 여러 기업이 지원합니다.
2. 핵심 아키텍처
MCP는 클라이언트-호스트-서버 아키텍처를 따릅니다.
┌─────────────────────────────┐
│ MCP Host (AI 앱) │
│ ┌─────────┐ ┌─────────┐ │
│ │Client 1 │ │Client 2 │...│
│ └────┬────┘ └────┬────┘ │
└───────┼───────────┼────────┘
│ │
┌────▼──┐ ┌────▼──┐
│Server A│ │Server B│ ... (로컬 또는 원격)
└───────┘ └───────┘
주요 구성 요소
| 구성 요소 | 설명 |
|---|---|
| MCP Host | AI 애플리케이션 (예: Claude Desktop, VS Code, IDE) — 여러 MCP Client를 생성하고 관리 |
| MCP Client | Host 내에서 각 Server와 1:1 연결을 유지하는 구성 요소 |
| MCP Server | 특정 기능(파일 시스템, 데이터베이스, API 등)을 제공하는 프로그램 |
설계 원칙
- 서버는 매우 쉽게 구축할 수 있어야 함 — 복잡한 오케스트레이션은 Host가 담당
- 서버는 높은 조합성을 가져야 함 — 여러 서버를 원활하게 결합 가능
- 서버는 전체 대화를 읽을 수 없음 — 각 서버 연결은 격리되어 보안 경계 유지
- 기능을 점진적으로 추가 가능 — 핵심 프로토콜은 최소 기능만 제공
3. 프로토콜 계층
MCP는 두 개의 계층으로 구성됩니다:
3.1 데이터 계층 (Data Layer)
- JSON-RPC 2.0 기반 메시지 교환
- 생명주기 관리 (초기화, 기능 협상, 종료)
- 핵심 프리미티브: Tools, Resources, Prompts
- 알림(Notification) 시스템
3.2 전송 계층 (Transport Layer)
두 가지 전송 메커니즘 지원:
| 전송 방식 | 설명 |
|---|---|
| Stdio | 표준 입출력 사용, 로컬 프로세스 간 통신, 네트워크 오버헤드 없음 |
| Streamable HTTP | HTTP POST + Server-Sent Events, 원격 서버 통신, OAuth 인증 지원 |
4. 핵심 프리미티브 (Primitives)
4.1 서버 기능
| 프리미티브 | 설명 | 예시 | 제어 주체 |
|---|---|---|---|
| Tools | LLM이 능동적으로 호출할 수 있는 실행 가능 함수 | 파일 작업, API 호출, DB 쿼리 | 모델 |
| Resources | 읽기 전용 데이터 소스, 컨텍스트 정보 제공 | 문서 내용, DB 스키마, API 문서 | 애플리케이션 |
| Prompts | 재사용 가능한 템플릿, 상호작용 패턴 안내 | 여행 계획, 회의 요약, 이메일 초안 | 사용자 |
Tools (도구)
tools/list— 사용 가능한 도구 목록 조회tools/call— 특정 도구 실행- JSON Schema로 입력 검증
- 사용자 동의 필요 가능
Resources (리소스)
- 고유 URI로 식별 (예:
file:///path/to/doc.md) - 직접 리소스와 리소스 템플릿(동적 파라미터) 지원
resources/list,resources/read,resources/subscribe
Prompts (프롬프트)
- 파라미터화된 템플릿
- 사용자가 명시적으로 호출
prompts/list,prompts/get
4.2 클라이언트 기능
| 기능 | 설명 |
|---|---|
| Sampling | 서버가 Host LLM에 완성(completion) 요청 가능 |
| Roots | 서버가 URI/파일시스템 경계 탐색 요청 |
| Elicitation | 서버가 사용자에게 추가 정보 요청 |
| Logging | 서버가 클라이언트에 로그 메시지 전송 |
5. 통신 예시 (JSON-RPC 2.0)
초기화 (Lifecycle Management)
// 클라이언트 → 서버
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": { "elicitation": {} },
"clientInfo": { "name": "example-client", "version": "1.0.0" }
}
}
// 서버 → 클라이언트
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-06-18",
"capabilities": { "tools": { "listChanged": true }, "resources": {} },
"serverInfo": { "name": "example-server", "version": "1.0.0" }
}
}
도구 실행
// 도구 호출
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "weather_current",
"arguments": { "location": "San Francisco", "units": "imperial" }
}
}
// 응답
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [{ "type": "text", "text": "Current weather: 68°F, partly cloudy" }]
}
}
6. SDK 지원 언어
MCP는 다양한 언어로 SDK를 제공합니다:
| 언어 | 저장소 |
|---|---|
| TypeScript | typescript-sdk |
| Python | python-sdk |
| Java | java-sdk |
| Kotlin | kotlin-sdk |
| C# | csharp-sdk |
| Go | go-sdk |
| Ruby | ruby-sdk |
| Rust | rust-sdk |
| Swift | swift-sdk |
| PHP | php-sdk |
7. 참조 서버 구현
공식 저장소(modelcontextprotocol/servers)의 참조 서버:
| 서버 | 설명 |
|---|---|
| Everything | 테스트용 참조 서버 (Prompts, Resources, Tools 모두 포함) |
| Fetch | 웹 콘텐츠 가져오기 및 변환 |
| Filesystem | 보안 파일 작업 (접근 제어 설정 가능) |
| Git | Git 저장소 읽기, 검색, 조작 |
| Memory | 지식 그래프 기반 영구 메모리 시스템 |
| Sequential Thinking | 동적·반성적 문제 해결 (사고 순서) |
| Time | 시간 및 시간대 변환 |
8. 채택 현황
| 기관/기업 | 내용 |
|---|---|
| OpenAI | 2025년 3월 MCP 공식 채택, ChatGPT 데스크톱 앱에 통합 |
| Google DeepMind | 2025년 4월 MCP 채택 발표 |
| Microsoft | Semantic Kernel, Azure OpenAI와 통합 |
| Cloudflare | MCP 서버 배포 지원 |
| Replit, Sourcegraph | AI 코딩 어시스턴트에 MCP 적용 |
9. 보안 고려사항
MCP는 강력한 기능(임의 데이터 접근, 코드 실행)을 가능하게 하므로 다음 원칙이 중요합니다:
- 사용자 동의 및 통제 — 모든 데이터 접근과 작업에 명시적 동의 필요
- 데이터 프라이버시 — 사용자 데이터 보호
- 도구 안전성 — 도구는 임의 코드 실행으로 간주되어 주의 필요
- LLM 샘플링 통제 — 사용자가 샘플링 요청을 승인해야 함
알려진 보안 이슈: 프롬프트 인젝션, 악성 도구를 통한 데이터 유출 가능성 등이 보고되었습니다.
10. MCP Apps (공식 확장)
MCP Apps는 MCP의 공식 확장으로, MCP 서버가 호스트 애플리케이션(Claude, ChatGPT 등)에 대시보드, 폼, 데이터 시각화 등 대화형 UI를 전달할 수 있도록 합니다. 기본 MCP 사양이 텍스트와 구조화된 데이터로 제한된 반면, MCP Apps는 이를 확장합니다.
11. 요약
MCP는 "AI를 위한 USB-C" 로 불리며, LLM 애플리케이션이 다양한 데이터 소스와 도구에 표준화된 방식으로 접근할 수 있게 합니다. Language Server Protocol(LSP)에서 영감을 받았으며, JSON-RPC 2.0 기반의 상태 저장 프로토콜을 통해 클라이언트-서버 간 기능 협상, 도구 실행, 리소스 제공, 프롬프트 템플릿 등을 지원합니다. Anthropic이 시작했지만 현재는 OpenAI, Google 등 주요 AI 기업들이 함께 참여하는 업계 표준으로 자리잡고 있습니다.