大家好,欢迎来到IT知识分享网。
前言
上次我们分享了基于python搭建MCP Server的方式,详见《干货:手把手教你搭建自己的MCP Server》,今天我们来分享一下如何通过Spring AI把Java接口封装成MCP Server。

Spring AI已经支持MCP服务端和客户端,只需要引入对应的依赖,就可以开发自己的服务端和客户端程序。
官网:
https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html#_tools
使用工具说明
JDK17、Cursor(代码开发使用)、Trae(交叉验证MCP Server使用)

MCP Server 端配置
废话不多说直接上代码,你可以按小编的详细步骤轻松完成MCP Server的配置与使用。
1.添加Spring AI依赖
MCP Server有三种依赖方式,这里我们选择基于Spring MVC的SSE传输实现方式。
spring-ai-starter-mcp-server:支持STDIO(标准流)传输的核心服务器
spring-ai-starter-mcp-server-webmvc:基于Spring MVC的SSE传输实现
spring-ai-starter-mcp-server-webflux:基于Spring WebFlux的SSE传输实现
<!-- 依赖Spring AI 1.0,要放在dependencies外--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.0.0-M7</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 实际要用到的依赖,要放在dependencies内 --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId> </dependency>
2.创建一个接口类UserService.java
主要是定义MCP Server要提供哪些具体的tools。
public interface UserService { String queryUserAddress(String userName); String queryUserName(String userNumber); }
3.创建一个实现类UserServiceImpl.java
MCP Server提供的tools具体实现逻辑,为了演示方便,此处直接在代码中初始化了接口数据。
@Slf4j @Service public class UserServiceImpl implements UserService { // 初始化一些用户信息 private static final Map<String, String> userAddressMap = new HashMap<>(); private static final Map<String, String> userNameMap = new HashMap<>(); static { userAddressMap.put("张三", "北京市海淀区中关村大街1号"); userAddressMap.put("李四", "上海市浦东新区陆家嘴1号"); userAddressMap.put("王五", "广州市天河区珠江新城1号"); userAddressMap.put("赵六", "深圳市南山区科技园1号"); userNameMap.put("N001", "张三"); userNameMap.put("N002", "李四"); userNameMap.put("N003", "王五"); userNameMap.put("N004", "赵六"); } / * 定义为MCP tool */ @Tool(description = "按姓名查询住址") @Override public String queryUserAddress(@ToolParam(description = "姓名") String userName) { log.info("按姓名查询住址: {}", userName); return userAddressMap.get(userName); } / * 定义为MCP tool */ @Tool(description = "按学号查询姓名") @Override public String queryUserName(@ToolParam(description = "学号") String userNumber) { log.info("按学号查询姓名: {}", userNumber); return userNameMap.get(userNumber); } }
4.注册MCP方法
在启动类 DemoApplication.java 中追加如下MCP Server tools的注册
/ * 通过Spring beans实现工具规范配置 * * 用户信息查询tools * * @param userService * @return */ @Bean public ToolCallbackProvider userTools(UserService userService) { return MethodToolCallbackProvider.builder().toolObjects(userService).build(); }
5.配置文件
spring.application.name=mcp-demo server.port=7766 # MCP 服务 spring.ai.mcp.server.name=webmvc-mcp-server spring.ai.mcp.server.sse-message-endpoint=/mcp/messages spring.ai.mcp.server.version=1.0.0 spring.ai.mcp.server.type=SYNC # 日志配置 logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n logging.level.root=INFO
6.启动MCP Server
编译并启动Spring项目,可以从日志上看到,有2个tools已经注册成功

MCP Server验证
1.配置MCP Server:
将以下配置手动注册到Trae的MCP Server中,成功注册后,我们会发现有2个可用的tools。
{ "mcpServers": { "lyj-mcp-server": { "command": "java", "args": [ "-Dspring.ai.mcp.server.stdio=true", "-Dspring.main.web-application-type=none", "-Dlogging.pattern.console=", "-jar", "/Users/admin/02-Work/workspace_ai/mcp-server-test/target/demo-0.0.1-SNAPSHOT.jar" ], "env": {} } } }

2.添加智能体验证
把刚刚注册的MCP Server添加到某个智能体上,就可以在对话框中验证啦,以下是验证截图,大家可以参考。
示例1:查找张三住址

示例2:查询学号N001学生的住址

写在最后
基于Spring AI搭建MCP Server如此简单,大家赶紧实操一下吧。
关注小编并回复“MCP”即可获取完整示例代码。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/181298.html