MCP (Model Context Protocol)
개요
MCP(Model Context Protocol)는 Anthropic이 도입하고 주도하는 개방형 프로토콜(open protocol)로, LLM(대규모 언어 모델) 애플리케이션이 외부 데이터 소스 및 도구와 상호작용하는 방식을 표준화한다. 흔히 "AI 애플리케이션을 위한 USB-C 포트"에 비유된다. USB-C가 다양한 주변기기를 하나의 표준 포트로 연결하듯, MCP는 다양한 데이터 소스와 도구를 하나의 표준화된 인터페이스로 AI 모델에 연결한다.
배경 및 탄생
- 발표 시기: 2024년 11월 (Anthropic)
- 영감: LSP(Language Server Protocol) — LSP가 다양한 프로그래밍 언어 지원을 하나의 표준 프로토콜로 통일한 것에서 착안
- 목적: AI 에이전트가 도구(tool), 데이터(data), 컨텍스트(context)에 접근하는 방식을 표준화하여, 매 통합마다 맞춤형 어댑터를 작성할 필요를 없애는 것
아키텍처
MCP는 클라이언트-서버 아키텍처를 따르며, JSON-RPC 2.0을 기반으로 통신한다.
주요 구성 요소
| 구성 요소 | 설명 |
|---|---|
| MCP Host (호스트) | 사용자가 직접 상호작용하는 AI 애플리케이션 (예: Claude Desktop, VS Code, GitHub Copilot, IDE 등) |
| MCP Client (클라이언트) | 호스트 내부에서 각 MCP 서버와 1:1 연결을 유지하는 커넥터 |
| MCP Server (서버) | 특정 기능(도구, 리소스, 프롬프트)을 표준화된 방식으로 노출하는 경량 프로그램 |
통신 계층
MCP는 두 개의 계층으로 구성된다:
- 데이터 계층(Data Layer): JSON-RPC 2.0 기반 메시지 교환, 생명주기 관리, 핵심 프리미티브(도구/리소스/프롬프트) 정의
- 전송 계층(Transport Layer): 실제 통신 채널 관리
- Stdio Transport: 표준 입출력 스트림을 통한 로컬 프로세스 간 통신
- Streamable HTTP Transport: HTTP POST + Server-Sent Events(SSE)를 통한 원격 통신 (OAuth 인증 지원)
핵심 프리미티브 (Primitives)
MCP 서버는 다음 세 가지 기능을 클라이언트에 제공할 수 있다:
1. 도구 (Tools)
- AI 모델이 실행할 수 있는 함수 (예:
query_database,create_ticket,send_email) - 함수 호출(Function Calling)과 유사하지만, MCP는 이를 표준화된 방식으로 발견(discovery)하고 호출(call)하는 프로토콜을 제공
- 메서드:
tools/list(목록 조회),tools/call(실행)
2. 리소스 (Resources)
- AI 모델이 컨텍스트로 읽어들일 수 있는 데이터 (파일, DB 레코드, API 응답 등)
- REST의 GET 엔드포인트와 유사
- 메서드:
resources/list,resources/read
3. 프롬프트 (Prompts)
- 재사용 가능한 템플릿 형태의 사전 정의된 상호작용 패턴
- 메서드:
prompts/list,prompts/get
클라이언트 측 프리미티브
서버가 클라이언트에 요청할 수 있는 기능:
- Sampling: 서버가 호스트의 LLM에 완성(completion)을 요청 (
sampling/createMessage) - Elicitation: 서버가 사용자에게 추가 정보를 요청 (
elicitation/create) - Logging: 서버가 클라이언트에 로그 메시지 전송
생명주기 (Lifecycle)
MCP는 상태 기반 프로토콜(stateful protocol)로, 연결 시 다음 단계를 거친다:
- 초기화(Initialize): 클라이언트가
initialize요청을 보내 프로토콜 버전과 지원 기능(capabilities)을 협상 - 준비 완료(Initialized): 클라이언트가
notifications/initialized알림 전송 - 정상 운영: 도구/리소스/프롬프트 사용, 알림 수신 등
주요 활용 사례 및 생태계
지원 클라이언트 (일부)
- Claude Desktop / Claude Code (Anthropic)
- Visual Studio Code / Cursor / Windsurf (IDE)
- GitHub Copilot (Chat, CLI, Cloud Agent, Code Review)
- JetBrains IDEs, Xcode, Eclipse
- OpenAI ChatGPT (Apps/Deep Research)
- Google Cloud (Gemini CLI, Agent Registry)
주요 MCP 서버 예시
- GitHub MCP Server: 저장소 관리, 이슈, PR, 코드 검색 등
- Google Cloud MCP Servers: BigQuery, Cloud Storage 등 GCP 서비스
- OpenAI Vector Store MCP: 벡터 검색 기반 문서 검색/인출
- Sentry MCP Server: 에러 모니터링
- Filesystem MCP Server: 로컬 파일 시스템 접근
- Database MCP Server: SQL 데이터베이스 쿼리
SDK 지원 언어
- Python (
mcp패키지, PyPI 기준 주간 6,500만+ 다운로드) - TypeScript/JavaScript
- Java
- Kotlin
- C# (.NET)
보안 및 신뢰 원칙
MCP는 강력한 기능(임의 데이터 접근, 코드 실행)을 가능하게 하므로, 다음과 같은 보안 원칙을 강조한다:
- 사용자 동의 및 통제: 모든 데이터 접근과 작업에 명시적 동의 필요
- 데이터 프라이버시: 사용자 데이터를 타 서버에 전송하려면 사용자 동의 필요
- 도구 안전성: 도구는 임의 코드 실행을 의미하므로 주의 필요
- LLM 샘플링 통제: 샘플링 요청 시 사용자 승인 필수
MCP vs 다른 프로토콜
| 프로토콜 | 목적 | 계층 |
|---|---|---|
| MCP | AI 에이전트 ↔ 도구/데이터 연결 | 도구/컨텍스트 계층 |
| A2A (Agent-to-Agent) | 에이전트 간 작업 위임 | 에이전트 간 계층 |
| Agent Protocol | 클라이언트 ↔ 에이전트 REST API | 클라이언트-에이전트 계층 |
이들은 상호 보완적이며 함께 사용될 수 있다.