From 3fe04a93d51ac02426acea9708950582dabbe47d Mon Sep 17 00:00:00 2001 From: jade Date: Tue, 7 Jul 2026 13:00:14 +0900 Subject: [PATCH] feat: Add selective registration to exclude specific tools from Redis and heartbeats --- .../axhub/biz/mcp/tool/annotation/McpFunction.java | 3 +++ .../axhub/biz/mcp/tool/config/McpProperties.java | 1 + .../biz/mcp/tool/service/ToolRegistryHeartbeatSender.java | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/annotation/McpFunction.java b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/annotation/McpFunction.java index d4a92a4..c9d20de 100644 --- a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/annotation/McpFunction.java +++ b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/annotation/McpFunction.java @@ -13,4 +13,7 @@ public @interface McpFunction { // 추가: 해당 함수가 요구하는 비즈니스 파라미터(JSON 형태의 properties)를 정의 String parameterSchema() default "{}"; + + // 추가: Redis 자동 등록 및 Heartbeat 대상 여부 제어 + boolean register() default true; } diff --git a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/config/McpProperties.java b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/config/McpProperties.java index a99a2ba..72b5387 100644 --- a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/config/McpProperties.java +++ b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/config/McpProperties.java @@ -18,5 +18,6 @@ public class McpProperties { private String description; private String prompt; private String mappingId; + private Boolean register; } } diff --git a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/service/ToolRegistryHeartbeatSender.java b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/service/ToolRegistryHeartbeatSender.java index 9283d3b..a9da007 100644 --- a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/service/ToolRegistryHeartbeatSender.java +++ b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/service/ToolRegistryHeartbeatSender.java @@ -63,6 +63,12 @@ public class ToolRegistryHeartbeatSender { prop = mcpProperties.getFunctions().get(functionAnnotation.name()); } + boolean isRegister = prop != null && prop.getRegister() != null ? prop.getRegister() : functionAnnotation.register(); + if (!isRegister) { + log.info(" [HeartbeatSender] '{}' 툴은 설정에 의해 외부 등록(Redis) 대상에서 제외되었습니다.", functionAnnotation.name()); + continue; + } + ToolMetadata meta = new ToolMetadata(); meta.setToolName(functionAnnotation.name()); meta.setDescription(prop != null && prop.getDescription() != null ? prop.getDescription() : functionAnnotation.description());