From 788b372e3273f4804e83d50608dc001c7fcf9b58 Mon Sep 17 00:00:00 2001
From: ageerle <ageerle@163.com>
Date: 星期四, 17 四月 2025 16:23:32 +0800
Subject: [PATCH] feat: mcp支持远程调用

---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java |   32 +++++++++++++++++++++++++++++---
 1 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
index 1f2f47e..2c9fd28 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.json.JSONUtil;
 import io.modelcontextprotocol.client.McpClient;
+import io.modelcontextprotocol.client.McpSyncClient;
 import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
 import io.modelcontextprotocol.spec.McpSchema;
 import lombok.RequiredArgsConstructor;
@@ -15,6 +16,12 @@
 import org.ruoyi.common.chat.openai.OpenAiStreamClient;
 import org.ruoyi.common.chat.request.ChatRequest;
 import org.ruoyi.common.core.exception.ServiceException;
+import org.springframework.ai.chat.client.ChatClient;
+import org.springframework.ai.chat.memory.ChatMemory;
+import org.springframework.ai.chat.memory.InMemoryChatMemory;
+import org.springframework.ai.mcp.SyncMcpToolCallbackProvider;
+import org.springframework.ai.tool.ToolCallbackProvider;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
@@ -27,14 +34,33 @@
 
 @Service
 @Slf4j
-@RequiredArgsConstructor
 public class OpenAIServiceImpl implements IChatService {
 
-    private final OpenAiStreamClient openAiStreamClient;
+    @Autowired
+    private OpenAiStreamClient openAiStreamClient;
+
+    private final ChatClient chatClient;
+
+    private final ChatMemory chatMemory = new InMemoryChatMemory();
+
+
+
+    public OpenAIServiceImpl(ChatClient.Builder chatClientBuilder, List<McpSyncClient> mcpSyncClients, ToolCallbackProvider tools) {
+        this.chatClient = chatClientBuilder
+                .defaultTools(new SyncMcpToolCallbackProvider(mcpSyncClients))
+                .build();
+    }
+
+
+    public String webMcpChat(String prompt){
+        return this.chatClient.prompt(prompt).call().content();
+
+    }
+
 
     @Override
     public SseEmitter chat(ChatRequest chatRequest,SseEmitter emitter) {
-        String toolString = mcpChat(chatRequest);
+        String toolString = webMcpChat(chatRequest.getPrompt());
 
         Message userMessage = Message.builder().content("宸ュ叿杩斿洖淇℃伅锛�"+toolString).role(Message.Role.ASSISTANT).build();
         List<Message> messages = chatRequest.getMessages();

--
Gitblit v1.9.3