개요
MCP(Model Context Protocol)는 2024년 11월 25일 Anthropic이 발표한 개방형 프로토콜(open protocol)로, 대규모 언어 모델(LLM) 애플리케이션이 외부 데이터 소스 및 도구와 연결되는 방식을 표준화한다. 흔히 "AI를 위한 USB-C 포트"에 비유되며, 다양한 AI 모델과 외부 시스템 간의 표준화된 연결 인터페이스를 제공한다.
2025년 12월, Anthropic은 MCP를 Linux Foundation 산하 AAIF(Agentic AI Foundation)에 기증했으며, OpenAI, Block 등이 공동 창립에 참여했다.
배경 및 필요성
LLM은 본질적으로 정적인 지식(학습 시점 기준)을 가지며, 외부 데이터나 실시간 정보에 접근할 수 있는 기본 기능이 없다. 전통적으로는 각 애플리케이션-데이터 소스 쌍마다 커스텀 API 통합이 필요했는데, 이는 M×N 통합 문제(M개의 AI 앱 × N개의 데이터 소스)를 야기했다.
MCP는 이 문제를 M+N 구조로 단순화한다. 즉, 개발자는 M개의 클라이언트(자신의 앱용)와 N개의 서버(도구용)만 구축하면 된다.
아키텍처
MCP는 클라이언트-서버 아키텍처를 따르며, 세 가지 주요 참여자로 구성된다:
1. MCP 호스트 (Host)
- LLM 애플리케이션 자체 (예: Claude Desktop, VS Code, IDE 등)
- 하나 이상의 MCP 클라이언트를 생성하고 관리
- 보안 정책, 사용자 동의, 컨텍스트 집계를 조정
2. MCP 클라이언트 (Client)
- 호스트 내부에서 각 MCP 서버와 1:1 전용 연결을 유지하는 컴포넌트
- 프로토콜 협상, 메시지 라우팅, 알림 처리 담당
3. MCP 서버 (Server)
- 특정 기능(파일 시스템, 데이터베이스, API 등)을 노출하는 경량 프로그램
- 로컬(stdio transport) 또는 원격(Streamable HTTP transport)으로 실행 가능
┌─────────────────────────────┐
│ MCP 호스트 (AI 애플리케이션) │
│ ┌─────────┐ ┌─────────┐ │
│ │Client 1 │ │Client 2 │ ...│
│ └────┬────┘ └────┬────┘ │
└───────┼───────────┼─────────┘
│ │
┌────▼────┐ ┌───▼──────┐
│Server A │ │Server B │ ...
│(로컬) │ │(원격) │
└─────────┘ └──────────┘
프로토콜 계층
1. 데이터 계층 (Data Layer)
- JSON-RPC 2.0 기반 메시지 교환
- 생명주기 관리: 연결 초기화, 기능 협상(capability negotiation), 종료
- 서버 프리미티브: Tools, Resources, Prompts
- 클라이언트 프리미티브: Sampling, Elicitation, Logging
2. 전송 계층 (Transport Layer)
- Stdio transport: 로컬 프로세스 간 표준 입출력 통신
- Streamable HTTP transport: 원격 서버 통신, HTTP POST + Server-Sent Events, OAuth 인증 지원
핵심 프리미티브 (Primitives)
서버 측
| 프리미티브 | 설명 | 예시 |
|---|---|---|
| Tools | LLM이 호출할 수 있는 실행 가능한 함수 (Action) | 파일 읽기, DB 쿼리, API 호출 |
| Resources | LLM에 컨텍스트를 제공하는 데이터 소스 (읽기 전용) | 문서 내용, DB 스키마, API 응답 |
| Prompts | 상호작용을 구조화하는 재사용 가능한 템플릿 | 시스템 프롬프트, few-shot 예제 |
클라이언트 측
| 프리미티브 | 설명 |
|---|---|
| Sampling | 서버가 클라이언트의 LLM에게 추론(completion)을 요청 |
| Elicitation | 서버가 사용자에게 추가 정보를 요청 |
| Logging | 서버가 클라이언트에 로그 메시지 전송 |
통신 흐름 예시
1. 초기화 (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" }
}
}
2. 도구 발견 및 실행
// 도구 목록 요청
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }
// 도구 실행
{
"jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": {
"name": "weather_current",
"arguments": { "location": "San Francisco", "units": "imperial" }
}
}
SDK 지원 언어
MCP는 다양한 언어로 공식 SDK를 제공한다:
| 언어 | 저장소 |
|---|---|
| Python | @modelcontextprotocol/python-sdk |
| TypeScript | @modelcontextprotocol/typescript-sdk |
| Java | @modelcontextprotocol/java-sdk |
| Kotlin | @modelcontextprotocol/kotlin-sdk |
| C# | @modelcontextprotocol/csharp-sdk |
| Go | @modelcontextprotocol/go-sdk |
| Ruby | @modelcontextprotocol/ruby-sdk |
| Rust | @modelcontextprotocol/rust-sdk |
| Swift | @modelcontextprotocol/swift-sdk |
| PHP | @modelcontextprotocol/php-sdk |
참조 서버 구현 (Reference Servers)
공식 저장소(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 라우팅 (2026년 4월 기준 450만 건의 MCP 호출 처리)
- Elastic: Elasticsearch MCP 서버 (호스티드 엔드포인트) 제공
보안 고려사항
MCP는 강력한 기능(임의 데이터 접근, 코드 실행)을 가능하게 하므로 다음 원칙이 중요하다:
- 사용자 동의 및 통제: 모든 데이터 접근과 도구 실행에 명시적 동의 필요
- 데이터 프라이버시: 사용자 데이터는 동의 없이 서버에 전송 금지
- 도구 안전성: 도구 호출은 임의 코드 실행으로 간주, 주의 필요
- LLM 샘플링 제어: 샘플링 요청 시 사용자 승인 필수
2025년 4월, 보안 연구진은 MCP의 프롬프트 인젝션 및 중독된 도구를 통한 데이터 유출 가능성을 보고했다.
관련 프로젝트
- Agent2Agent (A2A): AI 에이전트 간 통신을 위한 개방형 프로토콜 (Google)
- MCP Apps: MCP의 공식 확장으로, 대화형 UI(대시보드, 폼, 데이터 시각화)를 MCP 서버에서 호스트 앱으로 전달
- Language Server Protocol (LSP): MCP가 영감을 받은 프로토콜 (개발 도구용)
참고 자료
- 공식 웹사이트: modelcontextprotocol.io
- GitHub 저장소: github.com/modelcontextprotocol
- 사양 문서: modelcontextprotocol.io/specification