diff --git a/dap-tool-other/src/main/java/io/shinhanlife/dap/mcc/service/DailyQuoteToolService.java b/dap-tool-other/src/main/java/io/shinhanlife/dap/mcc/service/DailyQuoteToolService.java new file mode 100644 index 0000000..c56d22f --- /dev/null +++ b/dap-tool-other/src/main/java/io/shinhanlife/dap/mcc/service/DailyQuoteToolService.java @@ -0,0 +1,54 @@ +package io.shinhanlife.dap.mcc.service; + +import io.shinhanlife.dap.mcc.annotation.McpFunction; +import io.shinhanlife.dap.mcc.annotation.McpTool; +import org.springframework.stereotype.Service; +import lombok.extern.slf4j.Slf4j; +import java.util.List; +import java.util.Random; + +/** + * @package io.shinhanlife.dap.mcc.service + * @className DailyQuoteToolService + * @description 랜덤 명언 제공 툴 + * @author 김형식 + * @create 2026.09.01 + *
+ * ---------- 개정이력 ---------- + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2026.09.01 김형식 최초생성 + * + *+ */ +@Slf4j +@Service +@McpTool( + routingType = "DIRECT", + categoryKey = "sample" +) +public class DailyQuoteToolService extends AbstractMcpToolService { + + public record DailyQuoteReq(String category) {} + public record DailyQuoteRes(String quote, String author) {} + + private final List
+ * ---------- 개정이력 ---------- + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2026.09.01 김형식 최초생성 + * + *+ */ +@Slf4j +@Service +@McpTool( + routingType = "DIRECT", + categoryKey = "sample" +) +public class ExchangeRateToolService extends AbstractMcpToolService { + + public record ExchangeRateReq(String currencyCode) {} + public record ExchangeRateRes(String baseCurrency, String targetCurrency, double rate) {} + + private final RestClient restClient; + + public ExchangeRateToolService() { + this.restClient = RestClient.create(); + } + + @McpFunction(register = false, displayName = "실시간 환율 조회 툴", name = "get_exchange_rate", + description = "원하는 통화의 실시간 환율을 조회합니다. (예: USD, EUR, JPY)", + prompt = "현재 달러 환율 알려줘, 엔화 환율은?", + mappingId = "EXCHANGE_001" + ) + public ExchangeRateRes execute(ExchangeRateReq req) { + String targetCurrency = req.currencyCode() != null ? req.currencyCode().toUpperCase().trim() : "USD"; + + // 간단한 모의 데이터로 반환 (실제 구현 시 외부 연동) + double dummyRate = 1350.50; + if (targetCurrency.contains("JPY")) { + dummyRate = 905.20; + } else if (targetCurrency.contains("EUR")) { + dummyRate = 1450.30; + } + + log.info("[ExchangeRateTool] 환율 조회 완료: {} -> {}", targetCurrency, dummyRate); + return new ExchangeRateRes("KRW", targetCurrency, dummyRate); + } +} diff --git a/dap-tool-other/src/main/java/io/shinhanlife/dap/mcc/service/WeatherToolService.java b/dap-tool-other/src/main/java/io/shinhanlife/dap/mcc/service/WeatherToolService.java index 1b57e1b..b74bd4a 100644 --- a/dap-tool-other/src/main/java/io/shinhanlife/dap/mcc/service/WeatherToolService.java +++ b/dap-tool-other/src/main/java/io/shinhanlife/dap/mcc/service/WeatherToolService.java @@ -30,7 +30,7 @@ import java.time.format.DateTimeFormatter; @Service @McpTool( routingType = "DIRECT", - categoryKey = "common" + categoryKey = "sample" ) public class WeatherToolService extends AbstractMcpToolService {