@@ -109,23 +109,41 @@ func ShellCmd() *cobra.Command { //nolint:gocyclo
109109 case "tools" :
110110 var listToolsResult * mcp.ListToolsResult
111111 listToolsResult , listErr = mcpClient .ListTools (context .Background (), mcp.ListToolsRequest {})
112- resp = map [string ]any {"tools" : ConvertJSONToSlice (listToolsResult .Tools )}
112+
113+ var tools []any
114+ if listErr == nil && listToolsResult != nil {
115+ tools = ConvertJSONToSlice (listToolsResult .Tools )
116+ }
117+
118+ resp = map [string ]any {"tools" : tools }
113119 if formatErr := FormatAndPrintResponse (thisCmd , resp , listErr ); formatErr != nil {
114120 fmt .Fprintf (os .Stderr , "%v\n " , formatErr )
115121 continue
116122 }
117123 case "resources" :
118124 var listResourcesResult * mcp.ListResourcesResult
119125 listResourcesResult , listErr = mcpClient .ListResources (context .Background (), mcp.ListResourcesRequest {})
120- resp = map [string ]any {"resources" : ConvertJSONToSlice (listResourcesResult .Resources )}
126+
127+ var resources []any
128+ if listErr == nil && listResourcesResult != nil {
129+ resources = ConvertJSONToSlice (listResourcesResult .Resources )
130+ }
131+
132+ resp = map [string ]any {"resources" : resources }
121133 if formatErr := FormatAndPrintResponse (thisCmd , resp , listErr ); formatErr != nil {
122134 fmt .Fprintf (os .Stderr , "%v\n " , formatErr )
123135 continue
124136 }
125137 case "prompts" :
126138 var listPromptsResult * mcp.ListPromptsResult
127139 listPromptsResult , listErr = mcpClient .ListPrompts (context .Background (), mcp.ListPromptsRequest {})
128- resp = map [string ]any {"prompts" : ConvertJSONToSlice (listPromptsResult .Prompts )}
140+
141+ var prompts []any
142+ if listErr == nil && listPromptsResult != nil {
143+ prompts = ConvertJSONToSlice (listPromptsResult .Prompts )
144+ }
145+
146+ resp = map [string ]any {"prompts" : prompts }
129147 if formatErr := FormatAndPrintResponse (thisCmd , resp , listErr ); formatErr != nil {
130148 fmt .Fprintf (os .Stderr , "%v\n " , formatErr )
131149 continue
@@ -215,19 +233,31 @@ func callCommand(thisCmd *cobra.Command, mcpClient *client.Client, commandArgs [
215233 request .Params .Name = entityName
216234 request .Params .Arguments = params
217235 toolResponse , execErr = mcpClient .CallTool (context .Background (), request )
218- resp = ConvertJSONToMap (toolResponse )
236+ if execErr == nil && toolResponse != nil {
237+ resp = ConvertJSONToMap (toolResponse )
238+ } else {
239+ resp = map [string ]any {}
240+ }
219241 case EntityTypeRes :
220242 var resourceResponse * mcp.ReadResourceResult
221243 request := mcp.ReadResourceRequest {}
222244 request .Params .URI = entityName
223245 resourceResponse , execErr = mcpClient .ReadResource (context .Background (), request )
224- resp = ConvertJSONToMap (resourceResponse )
246+ if execErr == nil && resourceResponse != nil {
247+ resp = ConvertJSONToMap (resourceResponse )
248+ } else {
249+ resp = map [string ]any {}
250+ }
225251 case EntityTypePrompt :
226252 var promptResponse * mcp.GetPromptResult
227253 request := mcp.GetPromptRequest {}
228254 request .Params .Name = entityName
229255 promptResponse , execErr = mcpClient .GetPrompt (context .Background (), request )
230- resp = ConvertJSONToMap (promptResponse )
256+ if execErr == nil && promptResponse != nil {
257+ resp = ConvertJSONToMap (promptResponse )
258+ } else {
259+ resp = map [string ]any {}
260+ }
231261 default :
232262 fmt .Fprintf (os .Stderr , "Error: unsupported entity type: %s\n " , entityType )
233263 }
0 commit comments