Spring AI 1.0 GA!仅需3步开发一个MCP Server
千呼万唤始出来,Spring AI 1.0-GA 版本终于发布了!耽搁了几天简单研究了一遍,今天正式介绍一下这个里程碑版本。
官方手册奉上,英语强的可以自己看:https://docs.spring.io/spring-ai/reference/index.html
Spring AI提供了什么能力
Spring做为Java生态的老大,果然没让我失望,Spring AI提供的工具包非常强大,几乎涵盖了当前AI开发所需的所有技术。
当然Spring目标并不是做模型,而是在模型之上、应用之下做框架,来看看1.0版本提供了什么能力:
- 对话客户端API。Spring已经提供了便利的对话API工具,便于把用户的输入转化为对大模型的对话输入,并把大模型的输出返回给用户。只需写一个
Controller就可以完成聊天对话功能 - 多模态支持。Spring把多模态消息都抽象成了Spring AI Message API,降低了多模态AI的开发成本
- 集成了业界几乎所有的大模型。Deepseek、GPT、Claude,只要能叫得出名字的,几乎都集成了。不过我在列表里没找到豆包、混元、千问,不知道是不是因为咱国内的模型在海外的名气还不够大,不足以得到Spring的关注。当然这里只是集成,不是免费用,每个模型还是需要注册token,需要自己掏钱的
- MCP client/server。标题已经说了,下面手把手带你开发一个。
- RAG的支持
- 向量数据库
好多新词我也是刚接触不是很懂,比如这个向量数据库(Vector Database),大意上是说用于RAG(Retrieval Augmented Generation)中的信息检索,大模型检索数据不能用关系型数据库,而是要用向量数据库。
当给定一个向量作为查询时,向量数据库会返回与查询向量“相似”的向量。
跟着我3步开发一个MCP Server
这么多功能,一次也讲不完,今天就重点说一个MCP Server如何开发。我自己尝试了一下,真就只需3步。
先简单说下需求:我想开发一个可以读取数据库建表语句的MCP Server,这样我只需告诉AI:“帮我基于xxx表生成repository层的实现代码”,AI会自动从MCP Server上找到表结构定义
相关信息
如果你还不懂什么是MCP Server,可以先跳过开发的部分,直接看后面的演示效果
第一步:引入依赖
Spring AI 1.0版本需要基于Spring Boot 3.4.x,你可以先到https://start.spring.io/生成一个最基本的脚手架。
然后在pom.xml中引入:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- spring ai -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
<!-- spring jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.3.0</version>
</dependency>
</dependencies>第二步:改一下默认配置
调整application.yml或application.properties
spring:
ai:
mcp:
server:
name: mcp-db-connect
version: 0.0.1
type: ASYNC
sse-message-endpoint: /mcp/sse/message
# 退化为STDIO模式需要关闭banner
main:
banner-mode: off
application:
name: db-connect
datasource:
url: jdbc:mysql://localhost:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: root1234
# 退化为STDIO模式需要关闭控制台日志
logging:
file:
name: ./log/mcp-server.log有几点说明:
- MCP Server有2种模式:STDIO模式和SSE模式,STDIO可以认为是本地的一个命令行程序,SSE模式就是远程服务,默认端口8080
- 上面的代码中引入了webflux,默认就是SSE模式,可以退化为STDIO,需要关闭banner日志和关闭控制台日志
- SSE模式可以使用springmvc也可以用webflux来实现,区别是webflux是响应式的(Reactive),在对话模式中对用户友好
第三步:简单写几行代码
- 开发一个可以连接数据库,获取表结构的Tool,代码如下:
一个MCP Server上可以有多个Tool,每个Tool表示一个可以调用的工具。
@Slf4j
@Component
public class DbConnectTool {
@Autowired
private JdbcTemplate jdbcTemplate;
@Tool(description = "获取表结构定义,参数是表名")
public String getTableDefinition(String tableName) {
log.info("get table definition: {}", tableName);
String sql = "SHOW CREATE TABLE " + tableName;
return jdbcTemplate.queryForObject(sql, (rs, rowNum) -> rs.getString("Create Table"));
}
}- 把Tool注册上去,加一个Bean即可
@Configuration
public class AppConfiguration {
@Bean
public ToolCallbackProvider toolCallbackProvider(DbConnectTool dbConnectTool) {
return MethodToolCallbackProvider.builder()
.toolObjects(dbConnectTool).build();
}
}相信我,就这么简单,已经开发完了!
验证一下MCP Server
我们尝试在Cursor中验证一下效果,首先需要配置MCP Server
修改mcp.json,这里如果用STDIO模式,就按照mcp-server-1来配(需要先打出jar包),如果用SSE模式,就按mcp-server-2来配(需要先启动Server),配完看一下上图显示绿灯就表示成功。
{
"mcpServers": {
"mcp-server-1": {
"command": "java",
"args": [
"-Dspring.ai.mcp.server.stdio=true",
"-Dspring.main.web-application-type=none",
"-jar",
"/path/to/mcp-db-connect-0.0.1-SNAPSHOT.jar"
],
"type": "stdio"
},
"mcp-server-2": {
"url": "http://localhost:8080/sse",
"type": "sse"
}
}
}这时可以询问Cursor有哪些可用的MCP Tools,这里也可以直接用命令show tools:

这里我还另外写了一个toUpperCase Tool做为简单测试用
接下来尝试让Cursor生成代码,如果AI判断需要调用Tool,会暂停等待,需要我们点击Run Tool

点完Run Tool后,通过MCP tool顺利找到了表结构,并且生成了代码,在这个过程中,我与AI只对话了一次。


MCP的原理
原理如下所示:

关于什么是MCP,我就不再赘述了,网上到处都是资料。在这个示例中,因为Agent(Cursor)已经集成了MCP Client,因此我不需要再开发Client,只需提供MCP Server即可。
可以看到通过AI + MCP,原本可能需要30分钟写完的代码,现在只需要一次对话,2分钟就完成了。
关于AI编程
我最近一直在探索AI编程提效,经过2个多月探索,基本形成了一套完整的方法论,通过AI+DDD包子铺这个项目进行了实战,整个项目研发工作量大约40+工作日,在AI帮助下只用了10+工作日就差不多完成了。
我把这一套方法论进行了总结,从需求分析到详细设计到代码实现,全过程进行了记录,现在以课程的形式对外开放。
如果你想了解AI如何能够提效5-10倍,可以直接购买这个课程,购买后加群,上面的MCP代码免费赠送。
