사양(초안)

프로토콜 리비전: draft

Model Context Protocol(MCP)은 LLM 애플리케이션과 외부 데이터 소스/도구를 매끄럽게 통합할 수 있게 하는 오픈 프로토콜입니다. AI 기반 IDE를 만들거나, 채팅 인터페이스를 확장하거나, 커스텀 AI 워크플로를 구축하는 경우에도 MCP는 LLM이 필요로 하는 컨텍스트를 표준화된 방식으로 연결합니다.

이 사양은 schema.ts의 TypeScript 스키마를 기반으로, 권위 있는(authoritative) 프로토콜 요구사항을 정의합니다.

구현 가이드와 예시는 modelcontextprotocol.info를 참고하세요.

이 문서에서 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, “OPTIONAL"과 같은 키워드는, 대문자로 표기된 경우에 한해서만 BCP 14 (RFC2119, RFC8174)의 정의에 따라 해석합니다.

개요

MCP는 애플리케이션이 다음을 수행할 수 있도록 표준화된 방법을 제공합니다:

  • 언어 모델과 컨텍스트 정보를 공유
  • AI 시스템에 도구와 capability를 노출
  • 조합 가능한(composable) 통합과 워크플로 구축

프로토콜은 JSON-RPC 2.0 메시지로 다음 구성 요소 간 통신을 수립합니다:

  • Hosts: 연결을 시작하는 LLM 애플리케이션
  • Clients: 호스트 애플리케이션 내부의 커넥터
  • Servers: 컨텍스트와 capability를 제공하는 서비스

MCP는 개발 도구 생태계 전반에서 프로그래밍 언어 지원을 표준화한 Language Server Protocol에서 일부 영감을 얻었습니다. 유사하게, MCP는 AI 애플리케이션 생태계에서 추가 컨텍스트와 도구를 통합하는 방식을 표준화합니다.

핵심 내용

기본 프로토콜

  • JSON-RPC 메시지 포맷
  • 상태를 갖는(stateful) 연결
  • 서버/클라이언트 capability 협상

Features

서버는 클라이언트에 다음 기능을 제공할 수 있습니다:

  • Resources: 사용자 또는 AI 모델이 사용할 컨텍스트/데이터
  • Prompts: 사용자를 위한 템플릿 메시지/워크플로
  • Tools: AI 모델이 실행할 함수

클라이언트는 서버에 다음 기능을 제공할 수 있습니다:

  • Sampling: 서버 주도 에이전틱 동작 및 재귀적 LLM 상호작용

추가 유틸리티

  • 구성(Configuration)
  • 진행 상황 트래킹
  • 취소(Cancellation)
  • 오류 보고
  • 로깅

보안과 Trust & Safety

Model Context Protocol은 임의의 데이터 접근과 코드 실행 경로를 통해 강력한 기능을 제공합니다. 그만큼 모든 구현자는 중요한 보안 및 신뢰 고려사항을 신중히 다뤄야 합니다.

핵심 원칙

  1. 사용자 동의와 통제

    • 사용자는 모든 데이터 접근과 작업을 명시적으로 동의하고 이해해야 합니다.
    • 사용자는 공유되는 데이터와 수행되는 액션에 대한 통제권을 유지해야 합니다.
    • 구현자는 활동을 검토하고 승인할 수 있는 명확한 UI를 제공해야 합니다.
  2. 데이터 프라이버시

    • 호스트는 사용자 데이터를 서버에 노출하기 전에 명시적 동의를 받아야 합니다.
    • 호스트는 사용자 동의 없이 리소스 데이터를 다른 곳으로 전송하면 안 됩니다.
    • 사용자 데이터는 적절한 접근 제어로 보호되어야 합니다.
  3. 도구 안전성

    • 도구는 임의 코드 실행을 의미할 수 있으므로, 적절한 주의가 필요합니다.
    • 호스트는 어떤 도구든 호출하기 전에 사용자에게 명시적 동의를 받아야 합니다.
    • 사용자는 도구의 동작을 이해한 뒤 사용을 승인해야 합니다.
  4. LLM 샘플링 통제

    • 사용자는 모든 LLM 샘플링 요청을 명시적으로 승인해야 합니다.
    • 사용자는 다음을 통제할 수 있어야 합니다:
      • 샘플링을 수행할지 여부
      • 실제로 전송될 프롬프트
      • 서버가 볼 수 있는 결과 범위
    • 이 프로토콜은 의도적으로 프롬프트에 대한 서버의 가시성을 제한합니다.

구현 가이드라인

MCP 자체가 프로토콜 레벨에서 이러한 보안 원칙을 강제할 수는 없지만, 구현자는 다음을 SHOULD 합니다:

  1. 애플리케이션에 견고한 동의/인가 플로우를 구축
  2. 보안 영향에 대한 명확한 문서 제공
  3. 적절한 접근 제어 및 데이터 보호 구현
  4. 통합 과정에서 보안 모범 사례 준수
  5. 기능 설계에서 프라이버시 영향을 고려

더 알아보기

각 프로토콜 구성 요소의 상세 사양은 아래에서 확인하세요: