package data import ( "context" "fmt" "strconv" "github.com/mark3labs/mcp-go/mcp" "github.com/mark3labs/mcp-go/server" "fwh-toolbox-server/cmd/mcp/tools/helper" "fwh-toolbox-server/repositories" ) func registerEmsparaTools(s *server.MCPServer) { s.AddTool( mcp.NewTool("data_emspara_vid_info", mcp.WithDescription("查询 EMS 参数 VID 信息(通过 VID ID 获取宏名和描述)"), mcp.WithString("id", mcp.Required(), mcp.Description("VID ID(数字)")), ), handleEmsparaVidInfo, ) s.AddTool( mcp.NewTool("data_emspara_pid_info", mcp.WithDescription("查询 EMS 参数 PID 信息(通过 PID ID 获取宏名和描述)"), mcp.WithString("id", mcp.Required(), mcp.Description("PID ID(数字)")), ), handleEmsparaPidInfo, ) } func handleEmsparaVidInfo(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { idStr, err := req.RequireString("id") if err != nil { return helper.ParamError("id"), nil } id, err := strconv.ParseUint(idStr, 10, 64) if err != nil { return helper.ParamInvalidError("id", "必须是数字"), nil } name, desc, err := repositories.GetEmsparaVidInfo(uint(id)) if err != nil { return helper.EmptyResult(fmt.Sprintf("未找到 VID %d 的信息: %v", id, err)), nil } return helper.JSONResultOrFileAuto(map[string]any{ "id": id, "type": "VID", "macro_name": name, "description": desc, }), nil } func handleEmsparaPidInfo(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) { idStr, err := req.RequireString("id") if err != nil { return helper.ParamError("id"), nil } id, err := strconv.ParseUint(idStr, 10, 64) if err != nil { return helper.ParamInvalidError("id", "必须是数字"), nil } name, desc, err := repositories.GetEmsparaPidInfo(uint(id)) if err != nil { return helper.EmptyResult(fmt.Sprintf("未找到 PID %d 的信息: %v", id, err)), nil } return helper.JSONResultOrFileAuto(map[string]any{ "id": id, "type": "PID", "macro_name": name, "description": desc, }), nil }