MCP 프로토콜[번역본]

고동수·2025년 3월 26일

MCP

목록 보기
3/5

https://www.claudemcp.com/docs/protocol 의 내용을 번역 및 정리했습니다

  • MCP(Model Context Protocol)은 Client–Host–Server 구조를 따르는 양방향 메시지 통신 프로토콜입니다.

모든 메시지는 JSON-RPC 2.0 포맷을 따르며, LLM과 외부 자원 간의 안정적이고 명확한 통신을 가능하게 합니다.
JSON-RPC 정리


MCP 메시지 타입 (Message Types)

MCP는 총 3가지 메시지 타입을 정의합니다:

메시지 종류설명
request요청 메시지 (Client → Server or Server → Client)
response응답 메시지 (request에 대한 응답)
notification알림 메시지 (단방향, 응답 없음)

Request 예시

{
  "jsonrpc": "2.0",
  "id": "123",
  "method": "getData",
  "params": {
    "type": "file"
  }
}
  • id: 필수 (중복 불가), 문자열 또는 숫자
  • method: 실행할 메서드
  • params: 선택 (요청 인자)

Response 예시

{
  "jsonrpc": "2.0",
  "id": "123",
  "result": {
    "data": "example"
  }
}

또는 에러 발생 시:

{
  "jsonrpc": "2.0",
  "id": "123",
  "error": {
    "code": 400,
    "message": "Invalid request"
  }
}
  • id: 요청과 동일해야 함
  • result 또는 error 중 하나만 포함


Notification 예시

{
  "jsonrpc": "2.0",
  "method": "log",
  "params": {
    "level": "info",
    "message": "Server started"
  }
}
  • id 없음
  • 응답 필요 없음
  • 비동기 처리를 위한 상태 알림 용도로 사용

세션 생명 주기 (Life Cycle)

MCP는 세 단계를 가진 명확한 세션 구조를 가집니다:

1. Initialize 단계

  • 프로토콜 버전, 기능 협상
  • 초기 연결 세팅
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
      "roots": { "listChanged": true },
      "sampling": {}
    },
    "clientInfo": {
      "name": "MyClient",
      "version": "1.0.0"
    }
  }
}

응답 예시

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
      "logging": {},
      "prompts": { "listChanged": true },
      "resources": { "subscribe": true },
      "tools": { "listChanged": true }
    },
    "serverInfo": {
      "name": "MyServer",
      "version": "1.0.0"
    }
  }
}
{
  "jsonrpc": "2.0",
  "method": "initialized"
}

2. Operate 단계

  • 정상 메시지 송수신
  • 협상된 기능만 사용 가능

3. Close 단계

  • 연결 종료 알림 및 리소스 정리

메시지 전송 방식 (Transport Mechanism)

MCP는 2가지 전송 방식을 공식 지원합니다:


1. stdio (기본)

  • Server를 subprocess로 실행
  • 메시지를 stdin / stdout으로 주고받음
  • 로그는 stderr 사용 가능

특징

  • 가볍고 빠름
  • MCP CLI 도구에서 가장 일반적인 방식

2. HTTP + SSE (Server-Sent Events)

  • 서버가 독립 프로세스로 실행됨
  • 클라이언트는 SSE 스트림으로 응답을 받고, HTTP POST로 요청 전송

필요한 엔드포인트
1. SSE endpoint (서버 → 클라이언트)
2. HTTP POST endpoint (클라이언트 → 서버)


3. 커스텀 Transport

  • JSON-RPC 기반 양방향 통신만 보장하면 어떤 방식이든 가능
  • 예: WebSocket, IPC, TCP, Named Pipes 등

단, MCP 명세의 세션 흐름과 메시지 형식을 반드시 준수해야 함


요약

항목설명
프로토콜 기반JSON-RPC 2.0
메시지 유형request / response / notification
세션 단계initialize → operate → close
통신 방식stdio / HTTP(SSE) / 커스텀 가능
기능 협상capabilities 필드 사용

0개의 댓글