diff --git a/pom.xml b/pom.xml
index 3dc8b7f..d8dc16c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,7 +64,13 @@
org.jsoup
jsoup
1.20.1
+
+
+ dev.langchain4j
+ langchain4j-mcp
+ 1.1.0-beta7
+
diff --git a/src/main/java/com/huangge1199/ai/config/LangChainConfig.java b/src/main/java/com/huangge1199/ai/config/LangChainConfig.java
index 659a794..32be567 100644
--- a/src/main/java/com/huangge1199/ai/config/LangChainConfig.java
+++ b/src/main/java/com/huangge1199/ai/config/LangChainConfig.java
@@ -2,6 +2,7 @@ package com.huangge1199.ai.config;
import com.huangge1199.ai.service.LangChainService;
import com.huangge1199.ai.tool.InterviewQuestionTool;
+import dev.langchain4j.mcp.McpToolProvider;
import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatModel;
@@ -26,6 +27,9 @@ public class LangChainConfig {
@Resource
private ContentRetriever contentRetriever;
+ @Resource
+ private McpToolProvider mcpToolProvider;
+
@Bean
public LangChainService langChainService() {
ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(10);
@@ -35,6 +39,7 @@ public class LangChainConfig {
.chatMemoryProvider(memoryId->MessageWindowChatMemory.withMaxMessages(10))
.contentRetriever(contentRetriever)
.tools(new InterviewQuestionTool())
+ .toolProvider(mcpToolProvider)
.build();
}
}
diff --git a/src/main/java/com/huangge1199/ai/config/McpConfig.java b/src/main/java/com/huangge1199/ai/config/McpConfig.java
new file mode 100644
index 0000000..c4d044a
--- /dev/null
+++ b/src/main/java/com/huangge1199/ai/config/McpConfig.java
@@ -0,0 +1,44 @@
+package com.huangge1199.ai.config;
+
+import dev.langchain4j.mcp.McpToolProvider;
+import dev.langchain4j.mcp.client.DefaultMcpClient;
+import dev.langchain4j.mcp.client.McpClient;
+import dev.langchain4j.mcp.client.transport.McpTransport;
+import dev.langchain4j.mcp.client.transport.http.HttpMcpTransport;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * McpConfig
+ *
+ * @author huangge1199
+ * @since 2025/7/14 10:13:43
+ */
+@Configuration
+public class McpConfig {
+
+ @Value("${bigmodel.api-key}")
+ private String apiKey;
+
+ @Bean
+ public McpToolProvider mcpToolProvider() {
+ // 和 MCP 服务通讯
+ McpTransport transport = new HttpMcpTransport.Builder()
+ .sseUrl("https://open.bigmodel.cn/api/mcp/web_search/sse?Authorization=" + apiKey)
+ .logRequests(true)
+ .logResponses(true)
+ .build();
+
+ // 创建 MCP 客户端
+ McpClient mcpClient = new DefaultMcpClient.Builder()
+ .key("test")
+ .transport(transport)
+ .build();
+ // 从 MCP 客户端获取工具
+ return McpToolProvider.builder()
+ .mcpClients(mcpClient)
+ .build();
+ }
+}
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 19bb20d..b403f4c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -4,6 +4,8 @@ spring:
name: ai-langChain4j
profiles:
active: local
+server:
+ port: 8888
langchain4j:
community:
dashscope:
@@ -13,5 +15,5 @@ langchain4j:
embedding-model:
model-name: text-embedding-v4
api-key:
-server:
- port: 8888
\ No newline at end of file
+bigmodel:
+ api-key: