개요
MCP(Model Context Protocol)는 Anthropic이 2024년 11월 25일에 발표한 오픈 표준 프로토콜로, 대규모 언어 모델(LLM) 애플리케이션과 외부 데이터 소스 및 도구 간의 원활한 통합을 가능하게 한다. 흔히 "AI를 위한 USB-C 포트"에 비유되며, 다양한 AI 애플리케이션이 표준화된 방식으로 데이터와 도구에 접근할 수 있게 해준다.
2025년 12월, Anthropic은 MCP를 Agentic AI Foundation(AAIF)에 기부했으며, 이는 Linux Foundation 산하의 기금으로 Anthropic, Block, OpenAI가 공동 창립했다.
배경 및 필요성
MCP 이전에는 개발자가 각 데이터 소스나 도구마다 맞춤형 커넥터를 구축해야 했고, 이는 N×M 데이터 통합 문제로 불렸다. OpenAI의 2023년 "function-calling" API나 ChatGPT 플러그인 프레임워크 같은 이전 접근법도 유사한 문제를 해결했지만, 벤더별 커넥터가 필요했다. MCP는 Language Server Protocol(LSP)의 메시지 흐름 아이디어를 재사용하여 이 문제를 해결한다.
아키텍처
MCP는 클라이언트-서버 아키텍처를 따르며, 세 가지 주요 참여자로 구성된다:
1. MCP Host (호스트)
- AI 애플리케이션(Claude Desktop, IDE, AI 도구 등)
- 여러 MCP 클라이언트를 생성하고 관리
- 보안 정책 및 사용자 동의 처리
- 컨텍스트 집계 조정
2. MCP Client (클라이언트)
- 호스트 내에서 각 MCP 서버와 1:1 연결을 유지하는 구성 요소
- 프로토콜 협상 및 기능 교환 처리
- 메시지 양방향 라우팅
3. MCP Server (서버)
- 컨텍스트와 기능을 제공하는 프로그램
- 로컬(stdio transport) 또는 원격(Streamable HTTP transport)으로 실행 가능
- 각 서버는 특화된 책임을 가짐
MCP Host (AI Application)
├── MCP Client 1 ─── MCP Server A (로컬: 파일시스템)
├── MCP Client 2 ─── MCP Server B (로컬: 데이터베이스)
└── MCP Client 3 ─── MCP Server C (원격: Sentry)
프로토콜 계층
MCP는 두 개의 계층으로 구성된다:
데이터 계층 (Data Layer)
- JSON-RPC 2.0 기반 메시지 교환 프로토콜
- 생명주기 관리: 연결 초기화, 기능 협상, 연결 종료
- 서버 프리미티브: Tools, Resources, Prompts
- 클라이언트 프리미티브: Sampling, Roots, Elicitation
- 유틸리티: 알림(Notifications), 진행 추적, 취소, 로깅
전송 계층 (Transport Layer)
- Stdio transport: 표준 입출력 스트림을 통한 로컬 프로세스 간 통신
- Streamable HTTP transport: HTTP POST + Server-Sent Events(SSE)를 통한 원격 통신, OAuth 인증 지원
핵심 프리미티브 (Primitives)
서버 기능
| 프리미티브 | 설명 | 예시 | 제어 주체 |
|---|---|---|---|
| Tools | LLM이 능동적으로 호출할 수 있는 실행 가능 함수 | 항공편 검색, DB 쿼리, 파일 쓰기 | 모델 |
| Resources | 읽기 전용 데이터 소스 (컨텍스트 제공) | 문서 조회, DB 스키마, API 문서 | 애플리케이션 |
| Prompts | 재사용 가능한 템플릿 (워크플로우 안내) | 휴가 계획, 이메일 초안 작성 | 사용자 |
클라이언트 기능
- Sampling: 서버가 클라이언트의 LLM에 완성(completion) 요청 가능
- Roots: 서버가 URI나 파일시스템 경계를 탐색할 수 있도록 함
- Elicitation: 서버가 사용자에게 추가 정보 요청 가능
동작 방식 예시
1. 초기화 (Lifecycle Management)
클라이언트가 initialize 요청을 보내 프로토콜 버전과 지원 기능을 협상한다.
2. 도구 발견 (Tool Discovery)
tools/list 요청으로 서버가 제공하는 도구 목록과 JSON Schema를 조회한다.
3. 도구 실행 (Tool Execution)
tools/call 요청으로 특정 도구를 인자와 함께 호출하고 결과를 받는다.
4. 실시간 업데이트 (Notifications)
서버가 notifications/tools/list_changed 같은 알림을 보내 변경사항을 실시간으로 전달한다.
보안 원칙
- 사용자 동의 및 제어: 모든 데이터 접근과 작업에 명시적 동의 필요
- 데이터 프라이버시: 사용자 데이터 보호, 무단 전송 금지
- 도구 안전성: 도구는 임의 코드 실행으로 간주되어 주의 필요
- LLM 샘플링 제어: 사용자가 샘플링 요청을 승인하고 제어
SDK 지원 언어
- 공식 SDK: Python, TypeScript, Java, Kotlin, C#
- 커뮤니티 SDK: Go, PHP, Perl, Ruby, Rust, Swift
채택 현황
- OpenAI (2025년 3월): MCP 공식 채택, ChatGPT 데스크톱 앱에 통합
- Google DeepMind (2025년 4월): MCP 채택 발표
- Microsoft: Semantic Kernel, Azure OpenAI와 통합
- Cloudflare: MCP 서버 배포 지원
- Salesforce: Headless 360 플랫폼에서 MCP 활용 (4,500만+ 호출 처리)
- IDE 도구: Replit, Sourcegraph 등에서 채택
관련 프로젝트
- Agent2Agent (A2A): AI 에이전트 간 통신을 위한 오픈 프로토콜 (Google)
- MCP Apps: MCP의 공식 확장으로, 대화형 UI(대시보드, 폼, 데이터 시각화)를 MCP 서버에서 호스트 앱(Claude, ChatGPT)으로 전달하는 표준화
참고 자료
- 공식 웹사이트: modelcontextprotocol.io
- GitHub: github.com/modelcontextprotocol
- Python SDK: github.com/modelcontextprotocol/python-sdk
- Hugging Face MCP Course: huggingface.co/learn/mcp-course