diff --git a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/presentation/BusinessToolController.java b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/presentation/BusinessToolController.java index 76e3cfd..830d025 100644 --- a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/presentation/BusinessToolController.java +++ b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/presentation/BusinessToolController.java @@ -76,7 +76,8 @@ public class BusinessToolController { Map toolBeans = applicationContext.getBeansWithAnnotation(McpTool.class); outerLoop: for (Object bean : toolBeans.values()) { - for (Method method : bean.getClass().getDeclaredMethods()) { + Class userClass = org.springframework.util.ClassUtils.getUserClass(bean); + for (Method method : userClass.getDeclaredMethods()) { McpFunction mcpFunc = method.getAnnotation(McpFunction.class); if (mcpFunc != null) { String baseName = mcpFunc.name(); 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 145dde8..f2ed605 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 @@ -67,9 +67,10 @@ public class ToolRegistryHeartbeatSender { private void scanAndBuildMetadata() { Map toolBeans = applicationContext.getBeansWithAnnotation(McpTool.class); for (Object bean : toolBeans.values()) { - McpTool toolAnnotation = bean.getClass().getAnnotation(McpTool.class); + Class userClass = org.springframework.util.ClassUtils.getUserClass(bean); + McpTool toolAnnotation = userClass.getAnnotation(McpTool.class); - for (Method method : bean.getClass().getDeclaredMethods()) { + for (Method method : userClass.getDeclaredMethods()) { McpFunction functionAnnotation = method.getAnnotation(McpFunction.class); if (functionAnnotation != null) { String baseName = functionAnnotation.name();