diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index bc654111..29c367f1 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -319,5 +319,15 @@ wechat:
secret: ''
token: ''
aesKey: ''
-
+spring:
+ ai:
+ openai:
+ api-key: sk-xXe1WMPjhlVb1aiI1b4c6c8934D8463f9e4b67Ed8718B772
+ base-url: https://api.pandarobot.chat/
+ mcp:
+ client:
+ enabled: true
+ name: call-mcp-server
+ stdio:
+ servers-configuration: classpath:mcp-server.json
diff --git a/ruoyi-admin/src/main/resources/mcp-server.json b/ruoyi-admin/src/main/resources/mcp-server.json
new file mode 100644
index 00000000..869ca5de
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mcp-server.json
@@ -0,0 +1,12 @@
+{
+ "mcpServers": {
+ "fileSystem": {
+ "command": "C:\\Program Files\\nodejs\\npx.cmd",
+ "args": [
+ "-y",
+ "@modelcontextprotocol/server-filesystem",
+ "D:\\software"
+ ]
+ }
+ }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/pom.xml b/ruoyi-modules-api/ruoyi-chat-api/pom.xml
index 62578a0c..6fbae9ea 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/pom.xml
+++ b/ruoyi-modules-api/ruoyi-chat-api/pom.xml
@@ -32,6 +32,14 @@
+
+
+ io.modelcontextprotocol.sdk
+ mcp-spring-webflux
+ 0.8.0
+
+
+
org.ruoyi
ruoyi-common-chat
@@ -55,16 +63,27 @@
org.springframework.ai
- spring-ai-mcp-client-webflux-spring-boot-starter
+ spring-ai-openai-spring-boot-starter
- io.modelcontextprotocol.sdk
- mcp-spring-webflux
- 0.8.0
- compile
+ org.springframework.ai
+ spring-ai-mcp-client-spring-boot-starter
+
+ org.springframework.ai
+ spring-ai-mcp
+
+
+
+
+ org.springframework.ai
+ spring-ai-mcp-client-webflux-spring-boot-starter
+
+
+
+
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 1f2f47e6..2c9fd28a 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 @@ package org.ruoyi.chat.service.chat.impl;
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.entity.chat.tool.ToolsFunction;
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 @@ import java.util.Map;
@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 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 messages = chatRequest.getMessages();