@@ -163,7 +163,7 @@ func main() {
163163 result = x * y
164164 case " divide" :
165165 if y == 0 {
166- return nil , errors. New ( " Cannot divide by zero" )
166+ return mcp. NewToolResultError ( " cannot divide by zero" ), nil
167167 }
168168 result = x / y
169169 }
@@ -325,7 +325,7 @@ s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest)
325325 result = x * y
326326 case " divide" :
327327 if y == 0 {
328- return nil , errors. New ( " Division by zero is not allowed " )
328+ return mcp. NewToolResultError ( " cannot divide by zero" ), nil
329329 }
330330 result = x / y
331331 }
@@ -370,20 +370,20 @@ s.AddTool(httpTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp
370370 req, err = http.NewRequest (method, url, nil )
371371 }
372372 if err != nil {
373- return nil , fmt. Errorf ( " Failed to create request: %v " , err)
373+ return mcp. NewToolResultErrorFromErr ( " unable to create request" , err), nil
374374 }
375375
376376 client := &http.Client {}
377377 resp , err := client.Do (req)
378378 if err != nil {
379- return nil , fmt. Errorf ( " Request failed: %v " , err)
379+ return mcp. NewToolResultErrorFromErr ( " unable to execute request " , err), nil
380380 }
381381 defer resp.Body .Close ()
382382
383383 // Return response
384384 respBody , err := io.ReadAll (resp.Body )
385385 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
387387 }
388388
389389 return mcp.NewToolResultText (fmt.Sprintf (" Status: %d \n Body: %s " , resp.StatusCode , string (respBody))), nil
0 commit comments