모든 MCP 메시지 밑은 JSON-RPC 2.0. Spec 짧아 — 10 페이지 미만 — 한 번 읽을 가치 있어. MCP framing 의 모든 quirk 가 거기서 와.
JSON-RPC 메시지 타입 셋. Request 는 method, params, unique id; 받는 쪽이 같은 id 로 result 또는 error 답 MUST. Notification 은 같은 모양인데 id 없음; 받는 쪽 답 MUST NOT. Response 는 result 또는 error 필드 — 둘 다 동시에 안 함.
에러는 first-class. 모든 JSON-RPC 에러는 numeric code, 짧은 message, optional data. 표준 코드: -32700 Parse error, -32600 Invalid request, -32601 Method not found, -32602 Invalid params, -32603 Internal error, server-defined 범위 -32099 ~ -32000 protocol-specific. MCP 가 그 마지막 코드들에 자기 의미 얹음.
새 MCP server 작가가 잡히는 부분: batch 와 concurrency. JSON-RPC 가 batched request (request object 배열) 와 같은 connection 에서 out-of-order response 허용. MCP transport 구현마다 batch 지원 엄격성 다름; 안전한 룰은 — 현재 transport 가 직렬화하더라도 — interleaved request 와 out-of-order response 처리 가능하게 server 짜는 거.