From 213917033bac65c5f0f48509ee9a8bde5cf6d54c Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 16:24:27 +0800
Subject: [PATCH] #AI.MCP暴露

---
 rsf-server/pom.xml                                                                  |    2 +-
 rsf-server/src/main/java/com/vincent/rsf/server/ai/config/AiMcpServerConfig.java    |   18 ++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java |    1 +
 rsf-server/src/main/resources/application.yml                                       |   28 ++++++++++++++++++++++------
 4 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/rsf-server/pom.xml b/rsf-server/pom.xml
index b6aecea..c67254f 100644
--- a/rsf-server/pom.xml
+++ b/rsf-server/pom.xml
@@ -54,7 +54,7 @@
 		</dependency>
 		<dependency>
 			<groupId>org.springframework.ai</groupId>
-			<artifactId>spring-ai-mcp</artifactId>
+			<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>RouteUtils</groupId>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/config/AiMcpServerConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/config/AiMcpServerConfig.java
new file mode 100644
index 0000000..f67f7bd
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/config/AiMcpServerConfig.java
@@ -0,0 +1,18 @@
+package com.vincent.rsf.server.ai.config;
+
+import com.vincent.rsf.server.ai.entity.AiMcpMount;
+import com.vincent.rsf.server.ai.service.BuiltinMcpToolRegistry;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.ai.tool.ToolCallbackProvider;
+
+@Configuration
+public class AiMcpServerConfig {
+
+    @Bean
+    public ToolCallbackProvider rsfBuiltinMcpToolCallbackProvider(BuiltinMcpToolRegistry builtinMcpToolRegistry) {
+        AiMcpMount builtinMount = new AiMcpMount()
+                .setBuiltinCode(AiDefaults.MCP_BUILTIN_RSF_WMS);
+        return ToolCallbackProvider.from(builtinMcpToolRegistry.createToolCallbacks(builtinMount, null));
+    }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
index 4efd031..15e7d60 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
@@ -55,6 +55,7 @@
             "/ws/**",
             "/wcs/**",
             "/monitor/**",
+            "/ai/mcp/**",
             "/mcp/**",
             "/mes/**"
     };
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index f87a285..90f5dad 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -1,9 +1,25 @@
-spring:
-  profiles:
-    active: dev
-
-config:
-  system-name: @pom.artifactId@
+spring:
+  profiles:
+    active: dev
+  ai:
+    mcp:
+      server:
+        name: rsf-wms-tools
+        version: @pom.version@
+        protocol: SSE
+        sse-endpoint: /ai/mcp/sse
+        sse-message-endpoint: /ai/mcp/message
+        streamable-http:
+          mcp-endpoint: /ai/mcp
+        instructions: 鎻愪緵 WCS 璁惧鐘舵�併�佷换鍔°�佹棩蹇楀拰閰嶇疆鏌ヨ鑳藉姏
+        capabilities:
+          tool: true
+          resource: false
+          prompt: false
+          completion: false
+
+config:
+  system-name: @pom.artifactId@
   system-version: @pom.version@
   system-mode: OFFLINE
   token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2

--
Gitblit v1.9.1