Skip to content

Commit 7daca9b

Browse files
authored
Merge pull request #1 from f/migration/client-fixes
null checks
2 parents fae59c5 + e93f654 commit 7daca9b

File tree

7 files changed

+89
-14
lines changed

7 files changed

+89
-14
lines changed

cmd/mcptools/commands/call.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,31 @@ func CallCmd() *cobra.Command {
111111
request.Params.Name = entityName
112112
request.Params.Arguments = params
113113
toolResponse, execErr = mcpClient.CallTool(context.Background(), request)
114-
resp = ConvertJSONToMap(toolResponse)
114+
if execErr == nil && toolResponse != nil {
115+
resp = ConvertJSONToMap(toolResponse)
116+
} else {
117+
resp = map[string]any{}
118+
}
115119
case EntityTypeRes:
116120
var resourceResponse *mcp.ReadResourceResult
117121
request := mcp.ReadResourceRequest{}
118122
request.Params.URI = entityName
119123
resourceResponse, execErr = mcpClient.ReadResource(context.Background(), request)
120-
resp = ConvertJSONToMap(resourceResponse)
124+
if execErr == nil && resourceResponse != nil {
125+
resp = ConvertJSONToMap(resourceResponse)
126+
} else {
127+
resp = map[string]any{}
128+
}
121129
case EntityTypePrompt:
122130
var promptResponse *mcp.GetPromptResult
123131
request := mcp.GetPromptRequest{}
124132
request.Params.Name = entityName
125133
promptResponse, execErr = mcpClient.GetPrompt(context.Background(), request)
126-
resp = ConvertJSONToMap(promptResponse)
134+
if execErr == nil && promptResponse != nil {
135+
resp = ConvertJSONToMap(promptResponse)
136+
} else {
137+
resp = map[string]any{}
138+
}
127139
default:
128140
fmt.Fprintf(os.Stderr, "Error: unsupported entity type: %s\n", entityType)
129141
os.Exit(1)

cmd/mcptools/commands/get_prompt.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,14 @@ func GetPromptCmd() *cobra.Command {
8787
request.Params.Name = promptName
8888
resp, execErr := mcpClient.GetPrompt(context.Background(), request)
8989

90-
if formatErr := FormatAndPrintResponse(thisCmd, ConvertJSONToMap(resp), execErr); formatErr != nil {
90+
var responseMap map[string]any
91+
if execErr == nil && resp != nil {
92+
responseMap = ConvertJSONToMap(resp)
93+
} else {
94+
responseMap = map[string]any{}
95+
}
96+
97+
if formatErr := FormatAndPrintResponse(thisCmd, responseMap, execErr); formatErr != nil {
9198
fmt.Fprintf(os.Stderr, "%v\n", formatErr)
9299
os.Exit(1)
93100
}

cmd/mcptools/commands/prompts.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,13 @@ func PromptsCmd() *cobra.Command {
3232
}
3333

3434
resp, listErr := mcpClient.ListPrompts(context.Background(), mcp.ListPromptsRequest{})
35-
promptsMap := map[string]any{"prompts": ConvertJSONToSlice(resp.Prompts)}
35+
36+
var prompts []any
37+
if listErr == nil && resp != nil {
38+
prompts = ConvertJSONToSlice(resp.Prompts)
39+
}
40+
41+
promptsMap := map[string]any{"prompts": prompts}
3642
if formatErr := FormatAndPrintResponse(thisCmd, promptsMap, listErr); formatErr != nil {
3743
fmt.Fprintf(os.Stderr, "%v\n", formatErr)
3844
os.Exit(1)

cmd/mcptools/commands/read_resource.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,15 @@ func ReadResourceCmd() *cobra.Command {
7474
request := mcp.ReadResourceRequest{}
7575
request.Params.URI = resourceName
7676
resp, execErr := mcpClient.ReadResource(context.Background(), request)
77-
if formatErr := FormatAndPrintResponse(thisCmd, ConvertJSONToMap(resp), execErr); formatErr != nil {
77+
78+
var responseMap map[string]any
79+
if execErr == nil && resp != nil {
80+
responseMap = ConvertJSONToMap(resp)
81+
} else {
82+
responseMap = map[string]any{}
83+
}
84+
85+
if formatErr := FormatAndPrintResponse(thisCmd, responseMap, execErr); formatErr != nil {
7886
fmt.Fprintf(os.Stderr, "%v\n", formatErr)
7987
os.Exit(1)
8088
}

cmd/mcptools/commands/resources.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,13 @@ func ResourcesCmd() *cobra.Command {
3232
}
3333

3434
resp, listErr := mcpClient.ListResources(context.Background(), mcp.ListResourcesRequest{})
35-
resourcesMap := map[string]any{"resources": ConvertJSONToSlice(resp.Resources)}
35+
36+
var resources []any
37+
if listErr == nil && resp != nil {
38+
resources = ConvertJSONToSlice(resp.Resources)
39+
}
40+
41+
resourcesMap := map[string]any{"resources": resources}
3642
if formatErr := FormatAndPrintResponse(thisCmd, resourcesMap, listErr); formatErr != nil {
3743
fmt.Fprintf(os.Stderr, "%v\n", formatErr)
3844
os.Exit(1)

cmd/mcptools/commands/shell.go

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

cmd/mcptools/commands/tools.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@ func ToolsCmd() *cobra.Command {
3131
}
3232

3333
resp, listErr := mcpClient.ListTools(context.Background(), mcp.ListToolsRequest{})
34-
toolsMap := map[string]any{"tools": ConvertJSONToSlice(resp.Tools)}
34+
35+
var tools []any
36+
if listErr == nil && resp != nil {
37+
tools = ConvertJSONToSlice(resp.Tools)
38+
}
39+
40+
toolsMap := map[string]any{"tools": tools}
3541
if formatErr := FormatAndPrintResponse(thisCmd, toolsMap, listErr); formatErr != nil {
3642
fmt.Fprintf(os.Stderr, "%v\n", formatErr)
3743
os.Exit(1)

0 commit comments

Comments
 (0)