JSON-RPC는 JSON(JavaScript Object Notation) 포맷을 사용하는 원격 프로시저 호출(Remote Procedure Call) 프로토콜입니다.
즉, 클라이언트가 서버에게 "이 함수 호출해줘"라고 JSON 메시지로 요청을 보내는 규격입니다.
method, params, id 등 정해진 필드로 구성됨 {
"jsonrpc": "2.0",
"id": 1,
"method": "add",
"params": {
"a": 3,
"b": 5
}
}
| 필드 | 설명 |
|---|---|
jsonrpc | 버전 (무조건 "2.0") |
id | 요청 고유 ID (응답 매칭용) |
method | 호출할 함수 이름 |
params | 함수에 전달할 인자 (object or array) |
성공 시:
{
"jsonrpc": "2.0",
"id": 1,
"result": 8
}
에러 시:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32601,
"message": "Method not found"
}
}
| 필드 | 설명 |
|---|---|
result | 함수 실행 결과 |
error | 에러 코드, 메시지, 추가 정보 |
※ result와 error는 동시에 존재할 수 없습니다.
{
"jsonrpc": "2.0",
"method": "ping",
"params": { "time": "now" }
}
id 없음 → 응답도 없음 method와 params를 포함한 JSON 메시지를 보냄 result 또는 error로 응답 id를 기준으로 응답을 원래 요청과 매칭Claude MCP에서는:
initialize, listFiles, readFile 같은 메서드를 호출 stdio, HTTP, 또는 커스텀 transport로 수행됨예:
{
"jsonrpc": "2.0",
"id": 7,
"method": "getFileList",
"params": {
"path": "/Documents"
}
}
JSON-RPC 자체는 보안 기능이 없습니다.
→ 암호화/인증은 별도로 Transport 계층에서 처리해야 함 (예: HTTPS, 인증 토큰 등)
| 항목 | 설명 |
|---|---|
| 프로토콜 | JSON 기반 RPC |
| 주요 메시지 | request, response, notification |
| 장점 | 경량, 명확한 구조, 다양한 transport 지원 |
| Claude MCP | 전면적으로 JSON-RPC 2.0 사용 |