From b24e598446c0df59816aee093d071652a1d96d81 Mon Sep 17 00:00:00 2001 From: openclaw Date: Tue, 29 Sep 2026 17:48:35 +0800 Subject: [PATCH] fix(mcp): resolve panic on nil tags argument in toolAddService --- handlers/mcp.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/handlers/mcp.go b/handlers/mcp.go index 535ebf7..ab92374 100644 --- a/handlers/mcp.go +++ b/handlers/mcp.go @@ -379,6 +379,13 @@ func toolAddService(args map[string]interface{}) (interface{}, error) { }, nil } + tagsStr := "" + if rawTags, ok := args["tags"]; ok && rawTags != nil { + if arr, ok := rawTags.([]interface{}); ok { + tagsStr = tagsToString(arr) + } + } + svc := models.Service{ Name: strings.TrimSpace(name), URL: url, @@ -386,22 +393,11 @@ func toolAddService(args map[string]interface{}) (interface{}, error) { Icon: icon, CategoryID: categoryID, Status: "unknown", - Tags: tagsToString(args["tags"].([]interface{})), + Tags: tagsStr, IsEnabled: isEnabled, HealthCheckURL: strings.TrimSpace(healthURL), 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 { return nil, fmt.Errorf("创建失败: %v", err)