@@ -163,7 +163,7 @@ func main() {
163
163
result = x * y
164
164
case " divide" :
165
165
if y == 0 {
166
- return nil , errors. New ( " Cannot divide by zero" )
166
+ return mcp. NewToolResultError ( " cannot divide by zero" ), nil
167
167
}
168
168
result = x / y
169
169
}
@@ -325,7 +325,7 @@ s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest)
325
325
result = x * y
326
326
case " divide" :
327
327
if y == 0 {
328
- return nil , errors. New ( " Division by zero is not allowed " )
328
+ return mcp. NewToolResultError ( " cannot divide by zero" ), nil
329
329
}
330
330
result = x / y
331
331
}
@@ -370,20 +370,20 @@ s.AddTool(httpTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp
370
370
req, err = http.NewRequest (method, url, nil )
371
371
}
372
372
if err != nil {
373
- return nil , fmt. Errorf ( " Failed to create request: %v " , err)
373
+ return mcp. NewToolResultErrorFromErr ( " unable to create request" , err), nil
374
374
}
375
375
376
376
client := &http.Client {}
377
377
resp , err := client.Do (req)
378
378
if err != nil {
379
- return nil , fmt. Errorf ( " Request failed: %v " , err)
379
+ return mcp. NewToolResultErrorFromErr ( " unable to execute request " , err), nil
380
380
}
381
381
defer resp.Body .Close ()
382
382
383
383
// Return response
384
384
respBody , err := io.ReadAll (resp.Body )
385
385
if err != nil {
386
- return nil , fmt. Errorf ( " Failed to read response: %v " , err)
386
+ return mcp. NewToolResultErrorFromErr ( " unable to read request response " , err), nil
387
387
}
388
388
389
389
return mcp.NewToolResultText (fmt.Sprintf (" Status: %d \n Body: %s " , resp.StatusCode , string (respBody))), nil
0 commit comments