Skip to main content

mcp_memory/
protocol.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct JsonRpcRequest {
6    pub jsonrpc: String,
7    pub method: String,
8    pub params: Option<Value>,
9    pub id: Option<Value>,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct JsonRpcResponse {
14    pub jsonrpc: String,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub result: Option<Value>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub error: Option<JsonRpcError>,
19    pub id: Option<Value>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct JsonRpcError {
24    pub code: i64,
25    pub message: String,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub data: Option<Value>,
28}
29
30impl JsonRpcResponse {
31    pub fn success(id: Option<Value>, result: Value) -> Self {
32        Self {
33            jsonrpc: "2.0".into(),
34            result: Some(result),
35            error: None,
36            id,
37        }
38    }
39
40    pub fn error(id: Option<Value>, code: i64, message: String) -> Self {
41        Self {
42            jsonrpc: "2.0".into(),
43            result: None,
44            error: Some(JsonRpcError { code, message, data: None }),
45            id,
46        }
47    }
48}
49
50