helper.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package helper
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/mark3labs/mcp-go/mcp"
  6. )
  7. // JSONResult 将任意数据序列化为 JSON 文本返回
  8. func JSONResult(data any) *mcp.CallToolResult {
  9. bytes, err := json.MarshalIndent(data, "", " ")
  10. if err != nil {
  11. return mcp.NewToolResultError(fmt.Sprintf("序列化失败: %v", err))
  12. }
  13. return mcp.NewToolResultText(string(bytes))
  14. }
  15. // TextResult 直接返回文本
  16. func TextResult(text string) *mcp.CallToolResult {
  17. return mcp.NewToolResultText(text)
  18. }
  19. // ParamError 参数缺失错误
  20. func ParamError(name string) *mcp.CallToolResult {
  21. return mcp.NewToolResultError(fmt.Sprintf("参数 %s 必填", name))
  22. }
  23. // ParamInvalidError 参数格式错误
  24. func ParamInvalidError(name string, detail string) *mcp.CallToolResult {
  25. return mcp.NewToolResultError(fmt.Sprintf("参数 %s 格式错误: %s", name, detail))
  26. }
  27. // ServiceError 业务调用错误
  28. func ServiceError(action string, err error) *mcp.CallToolResult {
  29. return mcp.NewToolResultError(fmt.Sprintf("%s失败: %v", action, err))
  30. }
  31. // EmptyResult 空结果
  32. func EmptyResult(msg string) *mcp.CallToolResult {
  33. return mcp.NewToolResultText(msg)
  34. }