MCP (Model Context Protocol) — 모델 컨텍스트 프로토콜
개요
MCP는 대규모 언어 모델(LLM) 애플리케이션이 외부 데이터 소스 및 도구와 표준화된 방식으로 통합될 수 있게 해주는 개방형 프로토콜입니다. 2024년 11월 25일 Anthropic이 발표했으며, 이후 OpenAI, Google DeepMind 등 주요 AI 기업들이 채택했습니다. 2025년 12월에는 Anthropic이 MCP를 Linux Foundation 산하 Agentic AI Foundation(AAIF)에 기부했습니다.
비유하자면, MCP는 AI 애플리케이션을 위한 USB-C 포트와 같습니다. USB-C가 다양한 주변기기를 표준화된 방식으로 연결하듯, MCP는 AI 모델을 다양한 데이터 소스와 도구에 표준화된 방식으로 연결합니다.
배경
MCP 이전에는 각 데이터 소스나 도구마다 개발자가 커스텀 커넥터를 직접 구축해야 했습니다. 이는 Anthropic이 표현한 "N×M 데이터 통합 문제"를 야기했습니다. MCP는 Language Server Protocol(LSP)의 메시지 흐름 아이디어를 차용하여 이 문제를 해결합니다.
아키텍처
MCP는 클라이언트-서버 아키텍처를 따릅니다.
| 구성 요소 | 설명 |
|---|---|
| MCP Host (호스트) | AI 애플리케이션(예: Claude Desktop, VS Code, IDE)으로, 하나 이상의 MCP 클라이언트를 생성하고 관리 |
| MCP Client (클라이언트) | 호스트 내에서 각 MCP 서버와 1:1 연결을 유지하는 컴포넌트 |
| MCP Server (서버) | 특정 기능(도구, 리소스, 프롬프트)을 노출하는 프로그램. 로컬 또는 원격으로 실행 가능 |
MCP Host (AI Application)
├── MCP Client 1 ──── MCP Server A (로컬: 파일시스템)
├── MCP Client 2 ──── MCP Server B (로컬: 데이터베이스)
└── MCP Client 3 ──── MCP Server C (원격: Sentry API)
계층 구조
MCP는 두 가지 계층으로 구성됩니다:
1. 데이터 계층 (Data Layer)
- JSON-RPC 2.0 기반 프로토콜
- 라이프사이클 관리: 연결 초기화, 기능 협상, 연결 종료
- 서버 프리미티브: Tools, Resources, Prompts
- 클라이언트 프리미티브: Sampling, Roots, Elicitation
- 유틸리티: 알림, 진행 추적, 로깅
2. 전송 계층 (Transport Layer)
- Stdio 전송: 표준 입출력 사용, 로컬 프로세스 간 통신
- Streamable HTTP 전송: HTTP POST + Server-Sent Events, 원격 통신 지원, OAuth 인증 가능
핵심 프리미티브
서버가 제공하는 기능
| 프리미티브 | 설명 | 예시 |
|---|---|---|
| Tools (도구) | AI 모델이 호출할 수 있는 실행 가능한 함수 | 파일 읽기, DB 쿼리, API 호출 |
| Resources (리소스) | AI 애플리케이션에 컨텍스트를 제공하는 데이터 소스 | 파일 내용, DB 스키마, 문서 |
| Prompts (프롬프트) | LLM과의 상호작용을 구조화하는 재사용 가능한 템플릿 | 시스템 프롬프트, Few-shot 예제 |
클라이언트가 제공하는 기능
| 프리미티브 | 설명 |
|---|---|
| Sampling (샘플링) | 서버가 클라이언트의 LLM에게 완성 요청 |
| Roots (루트) | 서버가 작업할 URI/파일시스템 경계 탐색 |
| Elicitation (elicitation) | 서버가 사용자에게 추가 정보 요청 |
동작 흐름 예시
- 초기화: 클라이언트가
initialize요청으로 프로토콜 버전과 기능 협상 - 도구 발견: 클라이언트가
tools/list로 서버의 도구 목록 조회 - 도구 실행: 클라이언트가
tools/call로 특정 도구 호출 - 알림: 서버가
notifications/tools/list_changed로 변경 사항 실시간 통지
보안 원칙
- 사용자 동의 및 통제: 모든 데이터 접근과 작업에 명시적 동의 필요
- 데이터 프라이버시: 사용자 데이터 보호, 무단 전송 금지
- 도구 안전성: 도구 실행 전 사용자 승인 필요
- LLM 샘플링 통제: 샘플링 요청 시 사용자 승인 필수
SDK 지원 언어
| 언어 | 저장소 |
|---|---|
| Python | python-sdk |
| TypeScript | typescript-sdk |
| Java | java-sdk |
| Kotlin | kotlin-sdk |
| C# | csharp-sdk |
| Go | go-sdk |
| Rust | rust-sdk |
| Swift | swift-sdk |
| Ruby | ruby-sdk |
| PHP | php-sdk |
참고 서버 구현 (modelcontextprotocol/servers)
- Everything: 테스트/참조 서버
- Fetch: 웹 콘텐츠 가져오기
- Filesystem: 파일 작업
- Git: Git 저장소 조작
- Memory: 지식 그래프 기반 메모리
- Sequential Thinking: 단계적 사고 프로세스
- Time: 시간/시간대 변환
주요 채택 현황
- OpenAI (2025년 3월): MCP 공식 채택, ChatGPT 데스크톱 앱 통합
- Google DeepMind (2025년 4월): MCP 채택 발표
- Microsoft: Semantic Kernel, Azure OpenAI와 통합
- Cloudflare: MCP 서버 배포 지원
- Salesforce: Headless 360 플랫폼에서 MCP 활용
참고 자료
- 공식 문서: modelcontextprotocol.io
- GitHub: github.com/modelcontextprotocol
- Wikipedia: Model Context Protocol