Răsfoiți Sursa

feat:mcp-server模块,开发自定义MCP server;

yangyi 7 luni în urmă
părinte
comite
a996dd94f7

+ 11 - 0
mcp-server/src/main/java/space/anyi/mcpServer/MCPServerApplication.java

@@ -0,0 +1,11 @@
+package space.anyi.mcpServer;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MCPServerApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(MCPServerApplication.class,args);
+    }
+}

+ 19 - 0
mcp-server/src/main/java/space/anyi/mcpServer/config/MCPConfig.java

@@ -0,0 +1,19 @@
+package space.anyi.mcpServer.config;
+
+import org.springframework.ai.tool.ToolCallbackProvider;
+import org.springframework.ai.tool.method.MethodToolCallbackProvider;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.context.annotation.Bean;
+import space.anyi.mcpServer.tool.MyTool;
+
+@Configurable
+public class MCPConfig {
+    /**
+     * 配置对外提供服务的MCPProvider
+     */
+    @Bean
+    public ToolCallbackProvider toolCallbackProvider(MyTool myTool){
+        //以method的方式提供tool
+        return MethodToolCallbackProvider.builder().toolObjects(myTool).build();
+    }
+}

+ 24 - 0
spring-ai-learn/src/main/java/space/anyi/springAiAlibabaLearn/tool/MyTool.java

@@ -0,0 +1,24 @@
+package space.anyi.springAiAlibabaLearn.tool;
+
+import org.springframework.ai.tool.annotation.Tool;
+import org.springframework.ai.tool.annotation.ToolParam;
+
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class MyTool {
+    /**
+     * 使用@Tool注解标注这是一个供LLM调用的tool
+     * @param zoneId 时区ID
+     * @return 当前时间的字符串
+     */
+    @Tool(name = "getLocalDateTimeByZoneId",description = "根据ZoneId获取当前的本地时间(格式为:yyyy-MM-dd HH:mm:ss z)")
+    public String getLocalDateTimeByZoneId(@ToolParam(description = "时区ID(ZoneId),例如:",required = true) String zoneId){
+        ZoneId zone = ZoneId.of(zoneId);
+        ZonedDateTime zonedDateTime = ZonedDateTime.now(zone);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
+        return zonedDateTime.format(formatter);
+
+    }
+}