首页 抖音快讯文章正文

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

抖音快讯 2025年07月25日 22:34 1 admin

前言

上次我们分享了基于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@Servicepublic 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-demoserver.port=7766# MCP 服务spring.ai.mcp.server.name=webmvc-mcp-serverspring.ai.mcp.server.sse-message-endpoint=/mcp/messagesspring.ai.mcp.server.version=1.0.0spring.ai.mcp.server.type=SYNC# 日志配置logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%nlogging.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”即可获取完整示例代码。

发表评论

泰日号Copyright Your WebSite.Some Rights Reserved. 网站地图 备案号:川ICP备66666666号 Z-BlogPHP强力驱动