Skip to content

Commit 1f67654

Browse files
authored
fix: serializations to skip None Params (#25)
* fix: implemented Error trait for JsonrpcErrorError * feat: add new utility functions * fix: serialization to skip None values
1 parent 859b5db commit 1f67654

File tree

4 files changed

+107
-23
lines changed

4 files changed

+107
-23
lines changed

src/generated_schema/2024_11_05/mcp_schema.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
///
77
/// Generated from : <https://github.com/modelcontextprotocol/specification.git>
88
/// Hash : 63e1dbb75456b359b9ed8b27d21f4ac68cbb753e
9-
/// Generated at : 2025-02-17 17:23:32
9+
/// Generated at : 2025-02-17 18:04:41
1010
/// ----------------------------------------------------------------------------
1111
///
1212
/// MCP Protocol Version

src/generated_schema/2024_11_05/schema_utils.rs

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -836,15 +836,31 @@ impl ::serde::Serialize for ClientJsonrpcRequest {
836836
match &self.request {
837837
RequestFromClient::ClientRequest(message) => match message {
838838
InitializeRequest(msg) => state.serialize_field("params", &msg.params)?,
839-
PingRequest(msg) => state.serialize_field("params", &msg.params)?,
839+
PingRequest(msg) => {
840+
if let Some(params) = &msg.params {
841+
state.serialize_field("params", params)?
842+
}
843+
}
840844
ListResourcesRequest(msg) => state.serialize_field("params", &msg.params)?,
841-
ListResourceTemplatesRequest(msg) => state.serialize_field("params", &msg.params)?,
845+
ListResourceTemplatesRequest(msg) => {
846+
if let Some(params) = &msg.params {
847+
state.serialize_field("params", params)?
848+
}
849+
}
842850
ReadResourceRequest(msg) => state.serialize_field("params", &msg.params)?,
843851
SubscribeRequest(msg) => state.serialize_field("params", &msg.params)?,
844852
UnsubscribeRequest(msg) => state.serialize_field("params", &msg.params)?,
845-
ListPromptsRequest(msg) => state.serialize_field("params", &msg.params)?,
853+
ListPromptsRequest(msg) => {
854+
if let Some(params) = &msg.params {
855+
state.serialize_field("params", params)?
856+
}
857+
}
846858
GetPromptRequest(msg) => state.serialize_field("params", &msg.params)?,
847-
ListToolsRequest(msg) => state.serialize_field("params", &msg.params)?,
859+
ListToolsRequest(msg) => {
860+
if let Some(params) = &msg.params {
861+
state.serialize_field("params", params)?
862+
}
863+
}
848864
CallToolRequest(msg) => state.serialize_field("params", &msg.params)?,
849865
SetLevelRequest(msg) => state.serialize_field("params", &msg.params)?,
850866
CompleteRequest(msg) => state.serialize_field("params", &msg.params)?,
@@ -919,9 +935,17 @@ impl ::serde::Serialize for ServerJsonrpcRequest {
919935
use ServerRequest::*;
920936
match &self.request {
921937
RequestFromServer::ServerRequest(message) => match message {
922-
PingRequest(msg) => state.serialize_field("params", &msg.params)?,
938+
PingRequest(msg) => {
939+
if let Some(params) = &msg.params {
940+
state.serialize_field("params", params)?
941+
}
942+
}
923943
CreateMessageRequest(msg) => state.serialize_field("params", &msg.params)?,
924-
ListRootsRequest(msg) => state.serialize_field("params", &msg.params)?,
944+
ListRootsRequest(msg) => {
945+
if let Some(params) = &msg.params {
946+
state.serialize_field("params", params)?
947+
}
948+
}
925949
},
926950
RequestFromServer::CustomRequest(value) => state.serialize_field("params", value)?,
927951
}
@@ -993,9 +1017,17 @@ impl ::serde::Serialize for ClientJsonrpcNotification {
9931017
match &self.notification {
9941018
NotificationFromClient::ClientNotification(message) => match message {
9951019
CancelledNotification(msg) => state.serialize_field("params", &msg.params)?,
996-
InitializedNotification(msg) => state.serialize_field("params", &msg.params)?,
1020+
InitializedNotification(msg) => {
1021+
if let Some(params) = &msg.params {
1022+
state.serialize_field("params", params)?
1023+
}
1024+
}
9971025
ProgressNotification(msg) => state.serialize_field("params", &msg.params)?,
998-
RootsListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1026+
RootsListChangedNotification(msg) => {
1027+
if let Some(params) = &msg.params {
1028+
state.serialize_field("params", params)?
1029+
}
1030+
}
9991031
},
10001032
NotificationFromClient::CustomNotification(value) => state.serialize_field("params", value)?,
10011033
}
@@ -1065,10 +1097,22 @@ impl ::serde::Serialize for ServerJsonrpcNotification {
10651097
NotificationFromServer::ServerNotification(message) => match message {
10661098
CancelledNotification(msg) => state.serialize_field("params", &msg.params)?,
10671099
ProgressNotification(msg) => state.serialize_field("params", &msg.params)?,
1068-
ResourceListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1100+
ResourceListChangedNotification(msg) => {
1101+
if let Some(params) = &msg.params {
1102+
state.serialize_field("params", params)?
1103+
}
1104+
}
10691105
ResourceUpdatedNotification(msg) => state.serialize_field("params", &msg.params)?,
1070-
PromptListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1071-
ToolListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1106+
PromptListChangedNotification(msg) => {
1107+
if let Some(params) = &msg.params {
1108+
state.serialize_field("params", params)?
1109+
}
1110+
}
1111+
ToolListChangedNotification(msg) => {
1112+
if let Some(params) = &msg.params {
1113+
state.serialize_field("params", params)?
1114+
}
1115+
}
10721116
LoggingMessageNotification(msg) => state.serialize_field("params", &msg.params)?,
10731117
},
10741118
NotificationFromServer::CustomNotification(value) => state.serialize_field("params", value)?,

src/generated_schema/draft/mcp_schema.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
///
77
/// Generated from : <https://github.com/modelcontextprotocol/specification.git>
88
/// Hash : 63e1dbb75456b359b9ed8b27d21f4ac68cbb753e
9-
/// Generated at : 2025-02-17 17:23:32
9+
/// Generated at : 2025-02-17 18:04:41
1010
/// ----------------------------------------------------------------------------
1111
///
1212
/// MCP Protocol Version

src/generated_schema/draft/schema_utils.rs

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -836,14 +836,26 @@ impl ::serde::Serialize for ClientJsonrpcRequest {
836836
match &self.request {
837837
RequestFromClient::ClientRequest(message) => match message {
838838
InitializeRequest(msg) => state.serialize_field("params", &msg.params)?,
839-
PingRequest(msg) => state.serialize_field("params", &msg.params)?,
839+
PingRequest(msg) => {
840+
if let Some(params) = &msg.params {
841+
state.serialize_field("params", params)?
842+
}
843+
}
840844
ListResourcesRequest(msg) => state.serialize_field("params", &msg.params)?,
841845
ReadResourceRequest(msg) => state.serialize_field("params", &msg.params)?,
842846
SubscribeRequest(msg) => state.serialize_field("params", &msg.params)?,
843847
UnsubscribeRequest(msg) => state.serialize_field("params", &msg.params)?,
844-
ListPromptsRequest(msg) => state.serialize_field("params", &msg.params)?,
848+
ListPromptsRequest(msg) => {
849+
if let Some(params) = &msg.params {
850+
state.serialize_field("params", params)?
851+
}
852+
}
845853
GetPromptRequest(msg) => state.serialize_field("params", &msg.params)?,
846-
ListToolsRequest(msg) => state.serialize_field("params", &msg.params)?,
854+
ListToolsRequest(msg) => {
855+
if let Some(params) = &msg.params {
856+
state.serialize_field("params", params)?
857+
}
858+
}
847859
CallToolRequest(msg) => state.serialize_field("params", &msg.params)?,
848860
SetLevelRequest(msg) => state.serialize_field("params", &msg.params)?,
849861
CompleteRequest(msg) => state.serialize_field("params", &msg.params)?,
@@ -918,9 +930,17 @@ impl ::serde::Serialize for ServerJsonrpcRequest {
918930
use ServerRequest::*;
919931
match &self.request {
920932
RequestFromServer::ServerRequest(message) => match message {
921-
PingRequest(msg) => state.serialize_field("params", &msg.params)?,
933+
PingRequest(msg) => {
934+
if let Some(params) = &msg.params {
935+
state.serialize_field("params", params)?
936+
}
937+
}
922938
CreateMessageRequest(msg) => state.serialize_field("params", &msg.params)?,
923-
ListRootsRequest(msg) => state.serialize_field("params", &msg.params)?,
939+
ListRootsRequest(msg) => {
940+
if let Some(params) = &msg.params {
941+
state.serialize_field("params", params)?
942+
}
943+
}
924944
},
925945
RequestFromServer::CustomRequest(value) => state.serialize_field("params", value)?,
926946
}
@@ -992,9 +1012,17 @@ impl ::serde::Serialize for ClientJsonrpcNotification {
9921012
match &self.notification {
9931013
NotificationFromClient::ClientNotification(message) => match message {
9941014
CancelledNotification(msg) => state.serialize_field("params", &msg.params)?,
995-
InitializedNotification(msg) => state.serialize_field("params", &msg.params)?,
1015+
InitializedNotification(msg) => {
1016+
if let Some(params) = &msg.params {
1017+
state.serialize_field("params", params)?
1018+
}
1019+
}
9961020
ProgressNotification(msg) => state.serialize_field("params", &msg.params)?,
997-
RootsListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1021+
RootsListChangedNotification(msg) => {
1022+
if let Some(params) = &msg.params {
1023+
state.serialize_field("params", params)?
1024+
}
1025+
}
9981026
},
9991027
NotificationFromClient::CustomNotification(value) => state.serialize_field("params", value)?,
10001028
}
@@ -1064,10 +1092,22 @@ impl ::serde::Serialize for ServerJsonrpcNotification {
10641092
NotificationFromServer::ServerNotification(message) => match message {
10651093
CancelledNotification(msg) => state.serialize_field("params", &msg.params)?,
10661094
ProgressNotification(msg) => state.serialize_field("params", &msg.params)?,
1067-
ResourceListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1095+
ResourceListChangedNotification(msg) => {
1096+
if let Some(params) = &msg.params {
1097+
state.serialize_field("params", params)?
1098+
}
1099+
}
10681100
ResourceUpdatedNotification(msg) => state.serialize_field("params", &msg.params)?,
1069-
PromptListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1070-
ToolListChangedNotification(msg) => state.serialize_field("params", &msg.params)?,
1101+
PromptListChangedNotification(msg) => {
1102+
if let Some(params) = &msg.params {
1103+
state.serialize_field("params", params)?
1104+
}
1105+
}
1106+
ToolListChangedNotification(msg) => {
1107+
if let Some(params) = &msg.params {
1108+
state.serialize_field("params", params)?
1109+
}
1110+
}
10711111
LoggingMessageNotification(msg) => state.serialize_field("params", &msg.params)?,
10721112
},
10731113
NotificationFromServer::CustomNotification(value) => state.serialize_field("params", value)?,

0 commit comments

Comments
 (0)