微信扫码
添加专属顾问
我要投稿
Spring AI与MCP强强联合,教你如何零代码将传统服务接入大模型生态,实现智能化升级。核心内容: 1. 使用Spring Boot和Spring AI构建MCP Server的技术选型 2. 三种不同方式提供MCP服务的实现方案 3. 通过pom.xml配置快速集成MCP功能的实战示例
上一篇文章我们介绍了MCP的基本原理MCP:大模型的"万能接口"革命,但是对于开发者来说更关心如何实现我们的自己的MCP Server,接下来我们将使用MCP提供的java sdk和spring-ai来实现一个MCP Server。
技术选型:
Spring AI supports Spring Boot 3.4.x. When Spring Boot 3.5.x is released, we will support that as well.
webmvc
pom.xml
文件示例:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.4.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- MCP -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- Apache HttpClient -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.core5</groupId>
<artifactId>httpcore5</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.core5</groupId>
<artifactId>httpcore5-h2</artifactId>
</dependency>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring:
application:
name:mcp-name
ai:
mcp:
server:
name:mcp-name
version:1.0.0
type:SYNC
sse-endpoint: /sse
/**
* @date 2025/03/27 14:52
**/
@Service
publicclassSmdMcpService {
@Autowired
private RestTemplate restTemplate;
@Value("${smd.service.url}")
private String smdServiceUrl;
@Tool(name = "getSmdInfo", description = "获取表结构信息")
public String getSmdInfo(@ToolParam(description = "业务系统") String businessSystem,
@ToolParam(description = "表名") Set<String> tableNames) {
Map<String, Object> params = newHashMap<>();
params.put("businessSystem", businessSystem);
params.put("tableNames", tableNames);
ResponseEntity<String> response = restTemplate.postForEntity(
smdServiceUrl + "/mcp/api/getSmdInfo",
params,
String.class);
return response.getBody();
}
@Tool(name = "getCRUDCode", description = "根据表名生成增删改查代码")
public List<Map<String, Object>> getCRUDByTable(@ToolParam(description = "业务系统") String businessSystem,
@ToolParam(description = "表名") Set<String> tableNames,
@ToolParam(description = "模块名,非必填") String moduleName
) {
Map<String, Object> params = newHashMap<>();
params.put("businessSystem", businessSystem);
params.put("tableNames", tableNames);
params.put("moduleName", moduleName);
params.put("author", "smd-mcp");
HttpEntity<Map<String, Object>> httpEntity = newHttpEntity<>(params);
ResponseEntity<List<Map<String, Object>>> response = restTemplate.exchange(
smdServiceUrl + "/mcp/api/crud",
HttpMethod.POST,
httpEntity,
newParameterizedTypeReference<List<Map<String, Object>>>() {});
return response.getBody();
}
}
/**
* MCP配置类
*
* @author AI Assistant
* @date 2024/03/21
*/
@Configuration
@Slf4j
public class McpConfig {
@Bean
public ToolCallbackProvider smdToolCallbackProvider(SmdMcpService smdMcpService, RulesMcpService rulesMcpService) {
return MethodToolCallbackProvider.builder()
.toolObjects(smdMcpService, rulesMcpService)
.build();
};
}
使用支持MCP的客户端进行测试,客户端支持情况可查看:https://modelcontextprotocol.io/clients
这里使用Cursor进行测试:
配置mcp.json
{
"mcpServers": {
"mcp-name": {
"url": "http://localhost:8089/sse",
"env": {
"API_KEY": "value"
}
}
}
}
配置后即可看到MCP Server提供的Tools,如下图所示:MCP 还处于发展初期,现阶段更重要的是生态构建,基于统一标准下构筑的生态也会正向的促进整个领域的发展。
对于普通开发者我们可以直接使用已有的MCP工具平台:https://mcp.so/
对于企业,我们可以通过代理的方式将已有HTTP接口暴露为MCP Server:
后续考虑将其做成MCP代理服务,通过简单配置即可将已有业务转换为MCP Server,为AI智能体打开新世界的大门。
参考文档:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-14
32K Star狂欢!这个可视化AI助手平台让人人都能搭建专属智能体!
2025-06-04
Dify结合Echarts实现数据可视化-数据库篇
2025-06-03
刚刚,全球第一CRM收购AI Agent平台Moonhub
2025-06-02
Albus:重新定义文件管理,AI 驱动的智能网盘
2025-05-29
Dify工作流:用爬虫批量把公众号文章存到AI知识库 | 保姆级教程
2025-05-27
企业当前适合引入大模型驱动的智能运维吗?
2025-05-26
AI 硬件产品怎么做?——儿童智能硬件
2025-05-24
微软CEO:不卷大模型,微软要造AI时代的通用工具箱
2025-03-25
2025-03-25
2025-03-20
2025-03-18
2025-03-23
2025-03-17
2025-03-19
2025-03-19
2025-03-22
2025-03-28
2025-05-27
2025-05-24
2025-05-17
2025-05-14
2025-05-12
2025-05-09
2025-04-30
2025-04-26