干货:基于Spring AI把Java接口封装成MCP Server

干货:基于Spring AI把Java接口封装成MCP Server前言上次我们分享了基于 python 搭建 MCP Server 的方式 详见 干货 手把手教你搭建自己的 MCP Server 今天我们来分享一下如何通过 Spring AI 把 Java 接口封装成 MCP Server

大家好,欢迎来到IT知识分享网。

前言

上次我们分享了基于python搭建MCP Server的方式,详见《干货:手把手教你搭建自己的MCP Server》,今天我们来分享一下如何通过Spring AI把Java接口封装成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

使用工具说明

JDK17Cursor(代码开发使用)、Trae(交叉验证MCP Server使用)

干货:基于Spring AI把Java接口封装成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已经注册成功

干货:基于Spring AI把Java接口封装成MCP Server

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": {} } } }
干货:基于Spring AI把Java接口封装成MCP Server

2.添加智能体验证

把刚刚注册的MCP Server添加到某个智能体上,就可以在对话框中验证啦,以下是验证截图,大家可以参考。

示例1:查找张三住址

干货:基于Spring AI把Java接口封装成MCP Server

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

干货:基于Spring AI把Java接口封装成MCP Server

写在最后

基于Spring AI搭建MCP Server如此简单,大家赶紧实操一下吧。

关注小编并回复“MCP”即可获取完整示例代码。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/181298.html

(0)
上一篇 2025-06-19 11:33
下一篇 2025-06-19 11:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信