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();