helper.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package helper
  2. import (
  3. "fmt"
  4. "github.com/mark3labs/mcp-go/mcp"
  5. )
  6. // JSONResult 将任意数据序列化为 JSON 文本返回,序列化前完成 PII 脱敏(A+B)。
  7. // 脱敏失败时返回错误,拒绝输出(fail-closed)。
  8. func JSONResult(data any) *mcp.CallToolResult {
  9. b, err := marshalSanitized(data)
  10. if err != nil {
  11. return mcp.NewToolResultError(err.Error())
  12. }
  13. return mcp.NewToolResultText(string(b))
  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. }