From ad2ab985d8a38b61c4141281823fee6c4b40b253 Mon Sep 17 00:00:00 2001 From: jade Date: Thu, 23 Jul 2026 23:46:04 +0900 Subject: [PATCH] feat: allow Chat AI to use unregistered (register=false) tools --- .../dap/dapms/presentation/ChatController.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/dapms/presentation/ChatController.java b/dap-gateway/src/main/java/io/shinhanlife/dap/dapms/presentation/ChatController.java index 7c3b1942..a109a7fe 100644 --- a/dap-gateway/src/main/java/io/shinhanlife/dap/dapms/presentation/ChatController.java +++ b/dap-gateway/src/main/java/io/shinhanlife/dap/dapms/presentation/ChatController.java @@ -41,6 +41,7 @@ public class ChatController { private final ObjectMapper objectMapper; private final RedisRegistryService registryService; private final ChatClient.Builder chatClientBuilder; + private final McpRouterController mcpRouterController; @PostMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter chatStream(@RequestBody Map request, @@ -54,9 +55,16 @@ public class ChatController { try { List callbacks = new ArrayList<>(); - for (ToolMetadata meta : registryService.getAllTools()) { - if (Boolean.TRUE.equals(meta.getVisible())) { - callbacks.add(new DynamicMcpToolCallback(meta, executeService, objectMapper, effectiveTenantId)); + io.shinhanlife.dap.common.adapter.dto.JsonRpcResponse toolsResponse = mcpRouterController.listTools(null).getBody(); + if (toolsResponse != null && toolsResponse.getResult() instanceof Map) { + Map resultMap = (Map) toolsResponse.getResult(); + if (resultMap.containsKey("tools")) { + List allTools = (List) resultMap.get("tools"); + for (ToolMetadata meta : allTools) { + if (Boolean.TRUE.equals(meta.getVisible())) { + callbacks.add(new DynamicMcpToolCallback(meta, executeService, objectMapper, effectiveTenantId)); + } + } } }