From 1aa7787cedda10834eb48c7bdb0f759088720ef8 Mon Sep 17 00:00:00 2001 From: DayByDay <43409392+gx-ydd@users.noreply.github.com> Date: Mon, 4 May 2026 14:16:43 +0800 Subject: [PATCH] fix(mcp): clear stale MCP connection errors Update MCP server status with an explicit wrapper so successful reconnects can persist lastError=null while keeping updateTime refreshed. --- .../mate/tool/mcp/service/McpServerService.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/mateclaw-server/src/main/java/vip/mate/tool/mcp/service/McpServerService.java b/mateclaw-server/src/main/java/vip/mate/tool/mcp/service/McpServerService.java index 58a2c713..294ace0f 100644 --- a/mateclaw-server/src/main/java/vip/mate/tool/mcp/service/McpServerService.java +++ b/mateclaw-server/src/main/java/vip/mate/tool/mcp/service/McpServerService.java @@ -2,6 +2,7 @@ package vip.mate.tool.mcp.service; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -313,15 +314,16 @@ public class McpServerService { private void updateStatus(Long id, String status, String error, int toolCount) { try { - McpServerEntity update = new McpServerEntity(); - update.setId(id); - update.setLastStatus(status); - update.setLastError(error); - update.setToolCount(toolCount); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(McpServerEntity::getId, id); + wrapper.set(McpServerEntity::getLastStatus, status); + wrapper.set(McpServerEntity::getLastError, error); + wrapper.set(McpServerEntity::getToolCount, toolCount); if ("connected".equals(status)) { - update.setLastConnectedTime(LocalDateTime.now()); + wrapper.set(McpServerEntity::getLastConnectedTime, LocalDateTime.now()); } - mcpServerMapper.updateById(update); + wrapper.set(McpServerEntity::getUpdateTime, LocalDateTime.now()); + mcpServerMapper.update(null, wrapper); } catch (Exception e) { log.warn("Failed to update MCP server status: {}", e.getMessage()); }