McpFunction에 MCP 표준 힌트 4개 추가

This commit is contained in:
jade
2026-07-17 18:08:12 +09:00
parent 8359371122
commit 0ebac4e375
5 changed files with 41 additions and 3 deletions

View File

@@ -71,6 +71,18 @@ public class ToolMetadata {
@Builder.Default @Builder.Default
private Boolean requiresApproval = false; private Boolean requiresApproval = false;
@Builder.Default
private Boolean readOnlyHint = false;
@Builder.Default
private Boolean destructiveHint = false;
@Builder.Default
private Boolean idempotentHint = false;
@Builder.Default
private Boolean openWorldHint = false;
// 3. 연동 아키텍처 구분 (DIRECT / MCI_EAI) // 3. 연동 아키텍처 구분 (DIRECT / MCI_EAI)

View File

@@ -52,6 +52,12 @@ public class RegistryMcpToolSpecificationFactory {
.name(entry.getName()) .name(entry.getName())
.description(description(entry)) .description(description(entry))
.inputSchema(inputSchema(entry)) .inputSchema(inputSchema(entry))
.annotations(McpSchema.ToolAnnotations.builder()
.readOnlyHint(Boolean.TRUE.equals(entry.getReadOnlyHint()))
.destructiveHint(Boolean.TRUE.equals(entry.getDestructiveHint()))
.idempotentHint(Boolean.TRUE.equals(entry.getIdempotentHint()))
.openWorldHint(Boolean.TRUE.equals(entry.getOpenWorldHint()))
.build())
.build(); .build();
return McpServerFeatures.SyncToolSpecification.builder() return McpServerFeatures.SyncToolSpecification.builder()

View File

@@ -39,5 +39,10 @@ public @interface McpFunction {
// 추가: HITL 승인 체계 지원 (실행 전 사용자 승인 필요 여부) // 추가: HITL 승인 체계 지원 (실행 전 사용자 승인 필요 여부)
boolean requiresApproval() default false; boolean requiresApproval() default false;
boolean readOnlyHint() default false;
boolean destructiveHint() default false;
boolean idempotentHint() default false;
boolean openWorldHint() default false;
// 추가: 툴 별 기본 Timeout 설정 (기본 300초 = 300000ms) // 추가: 툴 별 기본 Timeout 설정 (기본 300초 = 300000ms)
} }

View File

@@ -58,6 +58,17 @@ public class ToolMetadata {
@Builder.Default @Builder.Default
private Boolean requiresApproval = false; private Boolean requiresApproval = false;
@Builder.Default
private Boolean readOnlyHint = false;
@Builder.Default
private Boolean destructiveHint = false;
@Builder.Default
private Boolean idempotentHint = false;
@Builder.Default
private Boolean openWorldHint = false;
} }

View File

@@ -107,6 +107,10 @@ public class ToolRegistryHeartbeatSender {
meta.setVisible(isVisible); meta.setVisible(isVisible);
meta.setIsRegistered(isRegister); meta.setIsRegistered(isRegister);
meta.setRequiresApproval(functionAnnotation.requiresApproval()); meta.setRequiresApproval(functionAnnotation.requiresApproval());
meta.setReadOnlyHint(functionAnnotation.readOnlyHint());
meta.setDestructiveHint(functionAnnotation.destructiveHint());
meta.setIdempotentHint(functionAnnotation.idempotentHint());
meta.setOpenWorldHint(functionAnnotation.openWorldHint());
Map<String, String> prompts = new HashMap<>(); Map<String, String> prompts = new HashMap<>();
String promptText = functionAnnotation.prompt(); String promptText = functionAnnotation.prompt();