fix(mcp): resolve panic on nil tags argument in toolAddService

This commit is contained in:
2026-09-29 17:48:35 +08:00
parent 2464222c94
commit b24e598446
+8 -12
View File
@@ -379,6 +379,13 @@ func toolAddService(args map[string]interface{}) (interface{}, error) {
}, nil }, nil
} }
tagsStr := ""
if rawTags, ok := args["tags"]; ok && rawTags != nil {
if arr, ok := rawTags.([]interface{}); ok {
tagsStr = tagsToString(arr)
}
}
svc := models.Service{ svc := models.Service{
Name: strings.TrimSpace(name), Name: strings.TrimSpace(name),
URL: url, URL: url,
@@ -386,22 +393,11 @@ func toolAddService(args map[string]interface{}) (interface{}, error) {
Icon: icon, Icon: icon,
CategoryID: categoryID, CategoryID: categoryID,
Status: "unknown", Status: "unknown",
Tags: tagsToString(args["tags"].([]interface{})), Tags: tagsStr,
IsEnabled: isEnabled, IsEnabled: isEnabled,
HealthCheckURL: strings.TrimSpace(healthURL), HealthCheckURL: strings.TrimSpace(healthURL),
HealthCheckEnabled: healthEnabled, HealthCheckEnabled: healthEnabled,
} }
// tags 需要单独处理(args["tags"] 可能不存在)
if rawTags, ok := args["tags"]; ok {
if arr, ok := rawTags.([]interface{}); ok {
svc.Tags = tagsToString(arr)
}
}
if svc.Tags == "" {
if arr, ok := args["tags"].([]interface{}); ok {
svc.Tags = tagsToString(arr)
}
}
if err := database.DB.Create(&svc).Error; err != nil { if err := database.DB.Create(&svc).Error; err != nil {
return nil, fmt.Errorf("创建失败: %v", err) return nil, fmt.Errorf("创建失败: %v", err)