MCP+springboot 王炸组合,拒绝CRUD,人人都是大牛程序员!!
是一种标准化协议,旨在让大语言模型更轻松地连接到外部数据源和工具。你可以把 MCP 类比为通用接口(如 USB-C)无论设备类型如何,只要支持这种接口,就可以实现互联互通。不同的是,MCP 连接的不是物理设备,而是AI 模型与外部资源,比如数据库、API、插件服务等。
1.什么是 Model Context Protocol(MCP)?
Model Context Protocol(MCP) 是一种标准化协议,旨在让大语言模型更轻松地连接到外部数据源和工具。
你可以把 MCP 类比为 通用接口(如 USB-C):
无论设备类型如何,只要支持这种接口,就可以实现互联互通。不同的是,MCP 连接的不是物理设备,而是 AI 模型与外部资源,比如数据库、API、插件服务等。

2.MCP总体架构

从本质上讲,MCP 遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器:
-
MCP 主机:
如 Claude Desktop、IDE 或其他 AI 工具中,用于通过 MCP 协议访问数据的程序。 -
MCP 客户端:
负责与 MCP 服务器建立 1:1 连接的协议客户端,起到通信桥梁作用。 -
MCP 服务器:
基于标准化模型上下文协议,暴露特定功能的轻量级服务程序。 -
本地数据源:
MCP 服务器可以安全访问本地计算机中的文件、数据库或服务。 -
远程服务:
MCP 服务器还可以连接互联网上的外部系统,如 API 服务,实现更丰富的功能调用。

MCP 服务器是 Model Context Protocol (MCP) 架构中的基础组件,为客户端提供工具、资源和功能。 它实现了协议的服务器端部分。
3.springAI + Mcp实战
本节将带您一步步搭建一个基于 Spring AI MCP 的 Java MCP 服务端,帮助您在各种客户端中便捷调用企业级 AI 服务。
前提条件安装MCP Java 开发工具包 MCP Java 开发工具包download
1.准备环境,maven坐标导入
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId>
</dependency>
对于 HTTP SSE 传输实现,添加以下依赖之一:
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webflux</artifactId>
</dependency>
<!-- 基于 Spring WebMVC 的 SSE 服务器传输 -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webmvc</artifactId>
</dependency>
2.service业务编写
@Service
public class MeilisearchService {
/**
* 使用工具方法注解,提供对 PIG ISSUE 知识库的检索功能,
* 用于辅助用户解决技术相关问题。
*
* @param question 用户描述的问题
* @return 匹配到的最相关知识内容
*/
@Tool(description = "检索 PIG ISSUE 知识库,辅助解决技术类问题")
public String queryQuestion(@ToolParam(description = "用户提出的问题描述") String question) {
// 创建 Meilisearch 客户端,使用默认或指定配置
Client client = new Client(new Config());
// 构造查询请求对象,指定查询内容和参数
SearchRequest request = new SearchRequest(question)
.setShowMatchesPosition(true) // 显示匹配位置
.setSort(new String[]{"lvl2:desc"}) // 根据层级 lvl2 降序排序
.setLimit(1); // 仅返回最相关的一条结果
// 执行查询
SearchResult results = client.index("pigx-doc").search(request);
// 将结果转换为字符串格式返回,格式如:[标题] 内容
return results.getHits().stream()
.map(hit -> "【" + hit.get("lvl0") + "】" + hit.get("text"))
.collect(Collectors.joining("\n\n")); // 多条结果间以空行分隔
}
}
3.注册服务
@Configuration // 表示该类是一个Spring配置类,提供配置给Spring容器
public class McpConfig {
/**
* 定义ToolCallbackProvider的Bean,它与MeilisearchService集成。
* 该方法设置回调提供者,使用给定的搜索服务。
*
* @param searchService 处理搜索操作的服务。
* @return 配置了提供的搜索服务的ToolCallbackProvider实例。
*/
@Bean // 将此方法标记为Spring管理的Bean
public ToolCallbackProvider documentTools(MeilisearchService searchService) {
// 创建并返回一个配置了MeilisearchService的ToolCallbackProvider实例
return MethodToolCallbackProvider.builder()
.toolObjects(searchService) // 设置搜索服务作为工具对象
.build(); // 构建并返回提供者实例
}
}
4.配置Mcp客户端
{
"mcpServers": {
"pig-issue": {
"isActive": true,
"command": "java",
"args": [
"-Dspring.ai.mcp.server.stdio=true",
"-jar",
"/Users/lengleng/env/repository/io/github/pig-mesh/pig-issue-query-mcp/0.0.1-SNAPSHOT/pig-issue-query-mcp-0.0.1-SNAPSHOT.jar"
]
}
}
}
5.进行测试
询问问题

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)