From f3597727825458b4d0b0ad4b44f926eff5fc1b23 Mon Sep 17 00:00:00 2001 From: jade Date: Tue, 14 Jul 2026 17:31:55 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20ObjectNode=20=EC=A7=81=EB=A0=AC=ED=99=94?= =?UTF-8?q?=20=EC=8B=9C=20getter=20=EC=86=8D=EC=84=B1=20=EB=85=B8=EC=B6=9C?= =?UTF-8?q?=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axhub/biz/mcp/gateway/guardrail/GuardrailService.java | 5 +++++ .../axhub/biz/mcp/gateway/service/ExecuteService.java | 5 +++++ .../axhub/biz/mcp/gateway/service/ToolPlanner.java | 1 + 3 files changed, 11 insertions(+) diff --git a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/guardrail/GuardrailService.java b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/guardrail/GuardrailService.java index 61db40a..ab3e274 100644 --- a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/guardrail/GuardrailService.java +++ b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/guardrail/GuardrailService.java @@ -20,6 +20,11 @@ public class GuardrailService { * ToolMetadata에 정의된 required/allowed arguments 기준으로 요청 인자를 검증합니다. */ public void validate(ToolMetadata metadata, ObjectNode arguments) { + if (metadata.getParametersSchema() == null) { + // 스키마 정보가 없으면(Fallback 툴 등) 검증을 생략합니다. + return; + } + Iterator fieldNames = arguments.fieldNames(); while (fieldNames.hasNext()) { String fieldName = fieldNames.next(); diff --git a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java index cf914a8..d5079c4 100644 --- a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java +++ b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java @@ -121,6 +121,11 @@ public class ExecuteService { } Object result = executeWithResilience(context, metadata, argumentsNode, payload); + + if (result instanceof com.fasterxml.jackson.databind.JsonNode) { + result = objectMapper.convertValue(result, Object.class); + } + long elapsedMillis = elapsedMillis(startedAt); String responseText = ""; diff --git a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java index 84e2f02..e3b7fda 100644 --- a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java +++ b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java @@ -74,6 +74,7 @@ public class ToolPlanner { toolMetadata = ToolMetadata.builder() .uid(toolName) + .name(toolName) .integrationType("DIRECT") .podUrl(fallbackPodUrl) .build();