fix: align tool validation and source updates with MCP SDK

This commit is contained in:
jade
2026-08-06 00:48:50 +09:00
parent 4a343d018a
commit a88122bd09
11 changed files with 255 additions and 139 deletions

View File

@@ -6,12 +6,14 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.util.JsonSchemaGenerator;
import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
import io.shinhanlife.dap.lib.annotation.ToolHint;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.impl.ClaimSearchSchemaSampleUseCaseImpl;
import io.shinhanlife.dap.lib.validation.ToolArgumentSchemaValidator;import io.shinhanlife.dap.mcc.biz.cmm.usecase.ClaimSearchSchemaSampleUseCase;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;
import org.springframework.ai.mcp.annotation.McpTool;
class ClaimSearchRequestSchemaTest {
@@ -33,10 +35,11 @@ class ClaimSearchRequestSchemaTest {
void resolvesSchemaFromToolModuleResource() throws Exception {
Method method = ClaimSearchSchemaSampleUseCase.class
.getDeclaredMethod("search", ClaimSearchRequest.class);
McpFunction function = method.getAnnotation(McpFunction.class);
McpTool function = method.getAnnotation(McpTool.class);
ToolHint hint = method.getAnnotation(ToolHint.class);
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper())
.resolve(function, ClaimSearchRequest.class);
.resolve(function, hint, ClaimSearchRequest.class);
assertEquals("https://json-schema.org/draft/2020-12/schema", schema.get("$schema"));
assertTrue(schema.containsKey("anyOf"));
@@ -47,8 +50,10 @@ class ClaimSearchRequestSchemaTest {
void resolvesOutputSchemaFromToolModuleResource() throws Exception {
Method method = ClaimSearchSchemaSampleUseCase.class
.getDeclaredMethod("search", ClaimSearchRequest.class);
McpFunction function = method.getAnnotation(McpFunction.class);
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper()).resolveOutput(function);
McpTool function = method.getAnnotation(McpTool.class);
ToolHint hint = method.getAnnotation(ToolHint.class);
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper())
.resolveOutput(function, ClaimSearchResponse.class, hint);
assertEquals("https://json-schema.org/draft/2020-12/schema", schema.get("$schema"));
assertTrue(properties(schema).containsKey("resultCode"));
assertTrue(properties(schema).containsKey("statusLabel"));
@@ -61,7 +66,8 @@ class ClaimSearchRequestSchemaTest {
Method method = ClaimSearchSchemaSampleUseCase.class
.getDeclaredMethod("search", ClaimSearchRequest.class);
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper())
.resolveOutput(method.getAnnotation(McpFunction.class));
.resolveOutput(method.getAnnotation(McpTool.class), ClaimSearchResponse.class,
method.getAnnotation(ToolHint.class));
ClaimSearchResponse response = new ClaimSearchSchemaSampleUseCaseImpl().search(new ClaimSearchRequest());
ToolArgumentSchemaValidator validator = new ToolArgumentSchemaValidator(new ObjectMapper());