diff --git a/pom.xml b/pom.xml
index e3a775e..ac9ce42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -140,6 +140,13 @@
9.1.0
test
+
+
+ org.springframework.ai
+ spring-ai-mcp-client-spring-boot-starter
+ 1.0.0-M6
+
+
diff --git a/src/main/java/com/huangge1199/aiagent/controller/ResController.java b/src/main/java/com/huangge1199/aiagent/controller/ResController.java
index 01b7fb6..122d2cf 100644
--- a/src/main/java/com/huangge1199/aiagent/controller/ResController.java
+++ b/src/main/java/com/huangge1199/aiagent/controller/ResController.java
@@ -1,10 +1,13 @@
package com.huangge1199.aiagent.controller;
import com.huangge1199.aiagent.common.R;
+import com.huangge1199.aiagent.config.MyLoggerAdvisor;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatResponse;
+import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -34,6 +37,11 @@ public class ResController {
record ActorFilms(String actor, List movies) {
}
+ // AI 调用 MCP 服务
+
+ @Resource
+ private ToolCallbackProvider toolCallbackProvider;
+
@PostMapping("/chatRes")
@Operation(summary = "返回 ChatResponse")
public R chatResRes(@RequestBody String question) {
@@ -85,4 +93,19 @@ public class ResController {
.chatResponse();
return R.ok(output);
}
+
+ @PostMapping("/doChatWithMcp")
+ @Operation(summary = "使用mcp返回会话")
+ public R doChatWithMcp(@RequestBody String question) {
+ ChatResponse chatResponse = chatClient
+ .prompt()
+ .user(question)
+ // 开启日志,便于观察效果
+ .advisors(new MyLoggerAdvisor())
+ .tools(toolCallbackProvider)
+ .call()
+ .chatResponse();
+ String content = chatResponse.getResult().getOutput().getText();
+ return R.ok(content);
+ }
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 92f3a5c..2c51b80 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -18,6 +18,10 @@ spring:
distance-type: COSINE_DISTANCE
dimensions: 1536
max-document-batch-size: 10000
+ mcp:
+ client:
+ stdio:
+ servers-configuration: classpath:mcp-servers.json
server:
port: 8123
servlet: