콘텐츠로 이동

Model Context Protocol (MCP) 개요

AI 에이전트가 외부 시스템(데이터베이스, API, 파일 시스템)과 통합될 때, 기존에는 각 LLM 제공자마다 서로 다른 방식으로 도구를 정의해야 했습니다. OpenAI 방식으로 작성한 도구는 Anthropic 모델에서 그대로 쓸 수 없고, 새 모델이 나올 때마다 통합 코드를 다시 작성해야 했습니다.

**MCP(Model Context Protocol)**는 Anthropic이 2024년 11월 공개한 오픈 표준입니다. LLM과 외부 도구 사이의 공통 언어를 정의하여, 한 번 만든 MCP 서버를 모든 호환 클라이언트에서 사용할 수 있습니다.

“MCP is to AI tools what USB-C is to device charging.” — 다양한 기기를 하나의 표준 포트로 연결하듯, MCP는 다양한 AI 클라이언트를 하나의 서버 인터페이스로 연결합니다.

┌─────────────────────────────────────────────────────┐
│ Host Application │
│ (Claude Desktop, Cursor, 커스텀 에이전트 등) │
│ │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ MCP Client 1 │ │ MCP Client 2 │ │
│ └──────┬───────┘ └────────────┬─────────────┘ │
└─────────│────────────────────────│─────────────────┘
│ JSON-RPC 2.0 │ JSON-RPC 2.0
▼ ▼
┌─────────────────┐ ┌──────────────────────────┐
│ MCP Server A │ │ MCP Server B │
│ (파일 시스템) │ │ (GitHub, Slack, DB 등) │
└─────────────────┘ └──────────────────────────┘

MCP 클라이언트는 단일 MCP 서버와 1:1로 연결됩니다. 하나의 호스트 애플리케이션은 여러 클라이언트를 통해 여러 서버에 동시에 연결할 수 있습니다.

통신은 JSON-RPC 2.0 프로토콜을 사용합니다. 전송 계층은 연결 방식에 따라 다릅니다.

전송 방식사용 시나리오특징
Stdio로컬 프로세스클라이언트가 서버를 자식 프로세스로 실행
HTTP + SSE원격 서버Server-Sent Events로 스트리밍
WebSocket양방향 실시간서버→클라이언트 푸시 지원

LLM이 호출할 수 있는 함수입니다. 타입이 명시된 입력/출력 스키마를 가집니다. 기존의 function calling과 가장 유사한 개념입니다.

{
"name": "read_file",
"description": "파일 내용을 읽습니다",
"inputSchema": {
"type": "object",
"properties": {
"path": { "type": "string", "description": "읽을 파일 경로" }
},
"required": ["path"]
}
}

LLM이 읽을 수 있는 데이터입니다. 파일, 데이터베이스 레코드, API 응답 등을 URI로 노출합니다. 도구와 달리 부작용(side effect) 없이 데이터를 제공합니다.

{
"uri": "file:///project/src/main.ts",
"name": "main.ts",
"mimeType": "text/typescript"
}

재사용 가능한 프롬프트 템플릿입니다. 서버가 클라이언트에게 제안하는 프롬프트 구조로, 일관된 방식으로 특정 작업을 요청할 때 사용합니다.

{
"name": "code_review",
"description": "코드 리뷰 요청 템플릿",
"arguments": [
{ "name": "language", "required": true },
{ "name": "focus", "required": false }
]
}

서버가 클라이언트를 통해 LLM을 호출하는 역방향 메커니즘입니다. MCP 서버가 복잡한 작업 처리 중 LLM의 추론을 활용해야 할 때 사용합니다.

일반적 흐름: 클라이언트 → LLM → 서버 도구 호출
Sampling: 서버 → 클라이언트 → LLM → 서버로 결과 반환
상황사용할 프리미티브
파일 읽기, 검색, 조회Resources
파일 쓰기, API 호출, 상태 변경Tools
표준화된 워크플로우 요청Prompts
서버에서 LLM 추론이 필요Sampling

MCP는 2025년 이후 빠르게 발전하고 있습니다.

  • Tasks 프리미티브 (SEP-1686): 장기 실행 작업을 위한 비동기 태스크 관리. 실험적으로 배포됨.
  • 에이전트 간 통신: MCP를 통한 에이전트 대 에이전트 메시지 표준화
  • 전송 확장성: 고성능 원격 배포를 위한 전송 계층 개선
  • 엔터프라이즈 거버넌스: 인증, 감사, 정책 적용 표준화

MCP는 LLM과 외부 도구 통합의 공통 표준입니다. 클라이언트/서버 모델로 동작하며, Tools(실행), Resources(데이터), Prompts(템플릿), Sampling(역방향 LLM 호출)의 네 프리미티브를 제공합니다. 한 번 작성한 MCP 서버는 모든 호환 AI 클라이언트에서 재사용할 수 있습니다.