@@ -8,7 +8,7 @@ use crate::{
88 ArgumentInfo , CallToolRequest , CallToolRequestParam , CallToolResult , CancelledNotification ,
99 CancelledNotificationParam , ClientInfo , ClientJsonRpcMessage , ClientNotification ,
1010 ClientRequest , ClientResult , CompleteRequest , CompleteRequestParam , CompleteResult ,
11- CompletionContext , CompletionInfo , GetPromptRequest , GetPromptRequestParam ,
11+ CompletionContext , CompletionInfo , ErrorData , GetPromptRequest , GetPromptRequestParam ,
1212 GetPromptResult , InitializeRequest , InitializedNotification , JsonRpcResponse ,
1313 ListPromptsRequest , ListPromptsResult , ListResourceTemplatesRequest ,
1414 ListResourceTemplatesResult , ListResourcesRequest , ListResourcesResult , ListToolsRequest ,
@@ -44,6 +44,9 @@ pub enum ClientInitializeError {
4444 context : Cow < ' static , str > ,
4545 } ,
4646
47+ #[ error( "JSON-RPC error: {0}" ) ]
48+ JsonRpcError ( ErrorData ) ,
49+
4750 #[ error( "Cancelled" ) ]
4851 Cancelled ,
4952}
9295 ServerJsonRpcMessage :: Response ( JsonRpcResponse { id, result, .. } ) => {
9396 break Ok ( ( result, id) ) ;
9497 }
98+ // Handle JSON-RPC error responses
99+ ServerJsonRpcMessage :: Error ( error) => {
100+ break Err ( ClientInitializeError :: JsonRpcError ( error. error ) ) ;
101+ }
95102 // Server could send logging messages before handshake
96103 ServerJsonRpcMessage :: Notification ( mut notification) => {
97104 let ServerNotification :: LoggingMessageNotification ( logging) =
0 commit comments