byteforce

CPN 한국어 자습서 · 외부 문서 한국어 미러

MCP 문서 · Specification

개요

Overview · 원문: modelcontextprotocol.io/specification/2025-11-25/basic/index

아래는 원문을 한국어로 옮긴 미러입니다. 코드·명령은 원문 그대로이며, 가장 최신 정보는 하단 원문 링크에서 확인하세요.

Model Context Protocol은 함께 동작하는 여러 핵심 구성 요소로 이루어져 있습니다:

모든 구현체는 기본 프로토콜과 수명 주기 관리 구성 요소를 반드시 지원해야 합니다. 다른 구성 요소는 애플리케이션의 특정 요구에 따라 구현할 수 있습니다.

이러한 프로토콜 레이어는 클라이언트와 서버 간의 풍부한 상호작용을 가능하게 하면서도 명확한 관심사 분리를 확립합니다. 모듈형 설계를 통해 구현체는 필요한 기능만 정확히 지원할 수 있습니다.

메시지

MCP 클라이언트와 서버 간의 모든 메시지는 반드시 JSON-RPC 2.0 명세를 따라야 합니다. 프로토콜은 다음 메시지 유형을 정의합니다:

요청(Requests)

요청은 작업을 시작하기 위해 클라이언트에서 서버로, 또는 그 반대 방향으로 전송됩니다.

코드 · 명령
{
  jsonrpc: "2.0";
  id: string | number;
  method: string;
  params?: {
    [key: string]: unknown;
  };
}

응답(Responses)

응답은 요청에 대한 답변으로 전송되며, 작업의 결과 또는 오류를 포함합니다.

성공 응답(Result Responses)

성공 응답은 작업이 성공적으로 완료되면 전송됩니다.

코드 · 명령
{
  jsonrpc: "2.0";
  id: string | number;
  result: {
    [key: string]: unknown;
  }
}

오류 응답(Error Responses)

오류 응답은 작업이 실패하거나 오류가 발생하면 전송됩니다.

코드 · 명령
{
  jsonrpc: "2.0";
  id?: string | number;
  error: {
    code: number;
    message: string;
    data?: unknown;
  }
}

알림(Notifications)

알림은 클라이언트에서 서버로, 또는 그 반대 방향으로 단방향 메시지로 전송됩니다. 수신자는 응답을 보내서는 안 됩니다.

코드 · 명령
{
  jsonrpc: "2.0";
  method: string;
  params?: {
    [key: string]: unknown;
  };
}

인증(Auth)

MCP는 HTTP 사용을 위한 인가(Authorization) 프레임워크를 제공합니다. HTTP 기반 전송을 사용하는 구현체는 이 명세를 따르는 것이 좋으며, STDIO 전송을 사용하는 구현체는 이 명세를 따르지 말고 환경에서 자격증명을 가져와야 합니다.

또한 클라이언트와 서버는 자체 맞춤형 인증 및 인가 전략을 협상할 수 있습니다.

MCP의 인증 메커니즘 발전에 대한 추가 토론 및 기여는 GitHub Discussions에서 참여하세요!

스키마(Schema)

프로토콜의 전체 명세는 TypeScript 스키마로 정의됩니다. 이는 모든 프로토콜 메시지와 구조에 대한 진실의 원천입니다.

또한 다양한 자동화 도구에서 사용할 수 있도록 TypeScript 진실의 원천에서 자동으로 생성된 JSON Schema도 있습니다.

JSON Schema 사용

Model Context Protocol은 프로토콜 전반에 걸쳐 유효성 검사에 JSON Schema를 사용합니다. 이 섹션은 MCP 메시지 내에서 JSON Schema를 사용하는 방법을 명확히 합니다.

스키마 방언(Schema Dialect)

MCP는 다음 규칙에 따라 JSON Schema를 지원합니다:

  1. 기본 방언: 스키마에 $schema 필드가 없으면 JSON Schema 2020-12가 기본값입니다
  2. 명시적 방언: 스키마는 다른 방언을 지정하기 위해 $schema 필드를 포함할 수 있습니다
  3. 지원 방언: 구현체는 최소한 2020-12를 지원해야 하며, 추가로 지원하는 방언을 문서화해야 합니다
  4. 권장 사항: 구현자는 JSON Schema 2020-12 사용을 권장합니다.

사용 예시

기본 방언(2020-12):

코드 · 명령
{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}

명시적 방언(draft-07):

코드 · 명령
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}

구현 요구사항

스키마 유효성 검사

일반 필드

_meta

_meta 속성/파라미터는 클라이언트와 서버가 상호작용에 추가 메타데이터를 첨부할 수 있도록 MCP가 예약한 필드입니다.

특정 키 이름은 아래에 명시된 바와 같이 프로토콜 수준 메타데이터용으로 MCP가 예약합니다. 구현체는 이러한 키의 값에 대해 가정을 해서는 안 됩니다.

키 이름 형식: 유효한 _meta 키 이름은 선택적 접두사(prefix)이름(name) 두 세그먼트로 구성됩니다.

접두사:

이름:

icons

icons 속성은 서버가 리소스, 도구, 프롬프트, 구현체의 시각적 식별자를 노출하는 표준화된 방법을 제공합니다. 아이콘은 시각적 컨텍스트를 제공하고 사용 가능한 기능의 발견 가능성을 향상시켜 사용자 인터페이스를 개선합니다.

아이콘은 Icon 객체 배열로 표현되며, 각 아이콘에는 다음이 포함됩니다:

필수 MIME 타입 지원:

아이콘 렌더링을 지원하는 클라이언트는 최소한 다음 MIME 타입을 반드시 지원해야 합니다:

아이콘 렌더링을 지원하는 클라이언트는 다음도 지원해야 합니다:

보안 고려사항:

아이콘 메타데이터 소비자는 침해를 방지하기 위해 아이콘 처리 시 적절한 보안 주의사항을 반드시 취해야 합니다:

사용법:

아이콘은 다음에 첨부할 수 있습니다:

다양한 표시 컨텍스트와 해상도를 지원하기 위해 여러 아이콘을 제공할 수 있습니다. 클라이언트는 UI 요구사항에 따라 가장 적합한 아이콘을 선택해야 합니다.

원문(영어): https://modelcontextprotocol.io/specification/2025-11-25/basic/index · 본 문서는 학습용 한국어 번역이며 원본의 권리는 원저작자(Model Context Protocol)에게 있습니다.

원문(영어): https://modelcontextprotocol.io/specification/2025-11-25/basic/index