MCP 사양 개요
MCP 사양 개요 (Specification)
Model Context Protocol (MCP)이 무엇이고, LLM 애플리케이션과 외부 데이터 소스·도구를 어떻게 표준화된 방식으로 연결해 주는지를 설명하는 사양 문서의 입문 페이지예요. 이 페이지에서는 프로토콜의 핵심 구성 요소(호스트, 클라이언트, 서버)와 기본 기능, 보안 원칙, 확장 체계까지 전체 그림을 먼저 잡아 드려요.
출처: 문서
본문
Model Context Protocol (MCP)은 LLM 애플리케이션과 외부 데이터 소스·도구 사이의 매끄러운 통합을 가능하게 해 주는 오픈 프로토콜이에요. AI 기반 IDE를 만들고 있든, 채팅 인터페이스를 개선하든, 커스텀 AI 워크플로를 만들고 있든, MCP는 LLM이 필요한 컨텍스트에 연결되는 표준화된 방법을 제공해요.
이 사양은 schema.ts의 TypeScript 스키마를 기준으로 한, 권위 있는 프로토콜 요구사항을 정의해요.
구현 안내와 예제는 modelcontextprotocol.io를 참조하세요.
이 문서에 등장하는 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", "OPTIONAL" 같은 핵심 단어는 모두 대문자로 표기될 때만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석돼요.
개요 (Overview)
MCP는 애플리케이션이 다음과 같은 일을 할 수 있는 표준화된 방법을 제공해요:
- 언어 모델과 컨텍스트 정보를 공유한다
- AI 시스템에 도구와 기능을 노출한다
- 조합 가능한(composable) 통합과 워크플로를 구축한다
프로토콜은 JSON-RPC 2.0 메시지를 사용해 다음과 같은 주체들 사이의 통신을 구축해요:
- 호스트 (Hosts): 연결을 시작하는 LLM 애플리케이션
- 클라이언트 (Clients): 호스트 애플리케이션 안의 커넥터
- 서버 (Servers): 컨텍스트와 기능을 제공하는 서비스
MCP는 Language Server Protocol에서 일부 영감을 얻었는데, 그 프로토콜은 개발 도구 생태계 전체에 걸쳐 프로그래밍 언어 지원을 추가하는 방법을 표준화한 것이에요. 비슷하게 MCP는 AI 애플리케이션 생태계에 추가 컨텍스트와 도구를 통합하는 방법을 표준화해요.
핵심 세부 사항 (Key Details)
기본 프로토콜 (Base Protocol)
- JSON-RPC 메시지 형식
- 무상태(stateless)의 자기 완결적(self-contained) 요청
- 요청별 기능 협상(per-request capability negotiation)
기능 (Features)
서버는 클라이언트에게 다음 기능 중 아무 것이나 제공할 수 있어요:
- 리소스 (Resources): 사용자나 AI 모델이 사용할 컨텍스트와 데이터
- 프롬프트 (Prompts): 사용자를 위한 템플릿화된 메시지와 워크플로
- 도구 (Tools): AI 모델이 실행할 함수
클라이언트는 서버에게 다음 기능을 제공할 수 있어요:
- Elicitation: 서버가 사용자에게 추가 정보를 요청하는 서버 발신(server-initiated) 요구
추가 유틸리티 (Additional Utilities)
- 설정 (Configuration)
- 진행 상황 추적 (Progress tracking)
- 취소 (Cancellation)
- 오류 보고 (Error reporting)
확장 (Extensions)
핵심 프로토콜을 넘어서, MCP는 모듈형·전문화·실험적 기능을 더하는 선택적 확장을 정의해요. 확장은 항상 옵트인(opt-in)이며 클라이언트와 서버 양쪽 모두의 명시적 지원이 필요하고, 초기화 중에 협상돼요. 주목할 만한 확장으로는:
- Tasks: 폴링, 중간 입력, 지속적 핸들(durable handles)을 갖춘 장기 실행 작업의 비동기 실행
- Skills over MCP: 에이전트 워크플로를 위한 풍부하고 구조화된 지시문으로, MCP를 통해 발견되고 소비됨
- MCP Apps: 대화 안에 인라인으로 렌더링되는 대화형 UI 요소 (차트, 폼, 비디오 플레이어)
보안과 신뢰·안전 (Security and Trust & Safety)
Model Context Protocol은 임의 데이터 접근과 코드 실행 경로를 통해 강력한 기능을 가능하게 해요. 이 힘에는 모든 구현자가 주의 깊게 다뤄야 할 중요한 보안과 신뢰 고려 사항이 따라와요.
핵심 원칙 (Key Principles)
-
사용자 동의와 통제 (User Consent and Control)
- 사용자는 모든 데이터 접근과 작업에 명시적으로 동의하고 이해해야 한다
- 사용자는 어떤 데이터가 공유되고 어떤 작업이 수행되는지에 대한 통제권을 유지해야 한다
- 구현자는 활동을 검토하고 승인하는 명확한 UI를 제공해야 한다
-
데이터 프라이버시 (Data Privacy)
- 호스트는 사용자 데이터를 서버에 노출하기 전에 명시적 사용자 동의를 받아야 한다
- 호스트는 사용자 동의 없이 리소스 데이터를 다른 곳으로 전송해서는 안 된다
- 사용자 데이터는 적절한 접근 통제로 보호해야 한다
-
도구 안전 (Tool Safety)
- 도구는 임의 코드 실행을 나타내므로 적절한 주의를 기울여 다뤄야 한다.
- 특히 annotation 같은 도구 동작 설명은 신뢰할 수 있는 서버에서 얻은 것이 아니라면 신뢰할 수 없는 것으로 간주해야 한다.
- 호스트는 도구를 호출하기 전에 명시적 사용자 동의를 받아야 한다
- 사용자는 도구 사용을 승인하기 전에 각 도구가 무엇을 하는지 이해해야 한다
- 도구는 임의 코드 실행을 나타내므로 적절한 주의를 기울여 다뤄야 한다.
구현 지침 (Implementation Guidelines)
MCP 자체는 프로토콜 수준에서 이 보안 원칙을 강제할 수 없지만, 구현자는 SHOULD:
- 애플리케이션에 견고한 동의·승인 흐름을 구축한다
- 보안 영향에 대한 명확한 문서를 제공한다
- 적절한 접근 통제와 데이터 보호를 구현한다
- 통합에서 보안 모범 사례를 따른다
- 기능 설계에서 프라이버시 영향을 고려한다