MCP 메시지 패턴 개요
MCP 메시지 패턴 개요
이 페이지는 코어 프로토콜의 메시지 패턴을 정의합니다. 즉 클라이언트와 서버가 JSON-RPC 요청, 응답, 알림을 어떻게 조합해 상호작용을 만드는지를 설명해요. 모든 전송이 이 패턴들을 전부 운반합니다. 전송은 메시지를 어떻게 프레이밍하고 전달하는지만 다를 뿐이에요.
모든 상호작용은 클라이언트에서 시작됩니다:
- 클라이언트가 JSON-RPC 요청과 알림을 보냅니다.
- 서버가 각 요청에 JSON-RPC 응답(결과 또는 오류)으로 답하고, 선택적으로 그 요청에 한정된 알림을 먼저 보낼 수 있어요.
서버는 JSON-RPC 요청을 시작하면 안 되고(MUST NOT), 클라이언트는 JSON-RPC 응답을 보내지 않아요.
요청-응답 (Request and Response)
클라이언트가 요청을 보내면 서버가 결과나 오류로 답합니다. 요청이 진행 중인 동안 서버는 그 요청에 한정된 알림, 예를 들어 notifications/progress나 notifications/message를 보낼 수 있어요(MAY).
sequenceDiagram
participant Client
participant Server
Client->>Server: request
Server-->>Client: notifications/progress (optional)
Server-->>Client: response
다중 왕복 요청 (Multi Round-Trip Requests)
서버가 요청을 완료하는 데 클라이언트 입력(sampling, elicitation, roots)이 필요하면 InputRequiredResult로 답하고, 클라이언트는 일치하는 inputResponses를 붙여 요청을 재시도합니다. 자세한 내용은 Multi Round-Trip Requests를 참고하세요.
sequenceDiagram
participant Client
participant Server
Client->>Server: request (id: 1)
Server-->>Client: InputRequiredResult (inputRequests)
Client->>Server: request (id: 2, original params + inputResponses)
Server-->>Client: response
구독·알림 (Subscribe and Notify)
변경 알림(목록 변경, 리소스 갱신)을 받으려면 클라이언트가 subscriptions/listen 요청을 보내요. 답변은 요청한 알림 유형들의 오래 지속되는(장수명) 스트림입니다. 스트림 상태는 요청에 한정되며, 밑의 채널이 유실되면 클라이언트가 요청을 다시 발행합니다.
sequenceDiagram
participant Client
participant Server
Client->>Server: subscriptions/listen
Server-->>Client: notifications/subscriptions/acknowledged
note over Client,Server: Stream stays open
Server-->>Client: notifications/* (tagged with subscriptionId)
패턴 추가하기 (Adding Patterns)
코어 프로토콜의 모든 기능은 이 패턴들로 만들어져요. 패턴을 추가하는 프로토콜 개정판은 그 패턴을 이 페이지에 정의합니다. 패턴은 전적으로 요청, 응답, 알림으로 표현되기 때문에 전송은 변경 없이 새 패턴을 운반할 수 있어요.
더 알아보기 (Learn more)
- 전송 계층 개요 — 패턴을 실어 나르는 전송
- MRTR 패턴 상세 — 입력 왕복 요청
- 구독·알림 패턴 상세 — 변경 알림 스트림
- 취소 패턴 — 진행 중 요청 취소
- 진행률 패턴 — 장기 작업 진행 보고