对于企业级应用而言,MCP的价值不仅在于技术实现,更重要的是它提供了一种AI与传统业务系统融合的新范式。随着MCP生态的不断完善,我们有理由相信,这种"对话即服务"的模式将在企业数字化升级中发挥越来越重要的作用。还是那句话:AI早就无限可能!
MCP(模型上下文协议)技术已经火热了一段时间,最近冰河也正在利用MCP来优化业务场景。借此机会,深入研究了SpringAI框架中的MCP实现。
与以往的技术学习路径不同,AI领域的学习更加注重理论指导实践——因为AI技术本身仍在快速演进,坚实的理论基础比单纯的代码实践更为重要。
一、构建智能业务Agent的设计思路
假设我们需要实现"智能套餐推荐"功能:用户通过自然对话表达需求,系统自动分析并推荐合适的套餐,生成支付链接供用户完成购买。传统方案需要用户经过多个步骤——选择类型、浏览套餐、填写信息等,涉及复杂的页面跳转和交互。
构建这样一个智能Agent,需要从三个核心层面进行设计:
1.1 大脑:大模型的能力定制
以大模型作为决策核心,负责理解用户意图并提取关键信息。例如,当用户表达"我最近经常加班到很晚,总觉得肩颈酸痛,眼睛干涩"时,模型需要识别出"职场人群"、"久坐办公"、"肩颈护理"、"眼部疲劳"等关键特征。
又例如,当用户表达"工作三年感觉遇到了技术瓶颈,想要系统学习但不知道从哪开始"时,模型需要识别出"职业发展阶段"、"技能提升需求"、"学习规划"、"技术成长"等关键特征。
通用大模型虽然强大,但往往无法直接满足特定业务需求。我们需要通过两个关键手段进行定制:
角色定义提示词:通过精心设计的提示词,让模型理解其作为"套餐推荐专家"的角色定位,掌握业务领域的专业知识和对话风格。
动态知识注入:模型本身不具备企业内部数据,需要通过RAG(检索增强生成)技术为其提供业务知识支撑。但这里有个关键考量——套餐数据频繁变化,传统的静态知识库更新机制显然不够高效。
1.2 手脚:MCP接口的能力扩展
既然套餐数据实时变化,为什么不直接让AI访问现有的业务接口呢?这就是MCP的价值所在。我们可以将现有的RESTful接口封装为MCP接口,让AI能够直接查询实时数据、获取相关信息、创建支付订单等。
1.3 架构总结与平台选择
综合来看,构建智能Agent需要完成三个核心任务:
(1)选择合适的大模型,并通过提示词工程进行角色定制
(2)构建知识库体系,为模型提供业务背景知识
(3)开发MCP接口,让AI能够操作业务系统
但在实施过程中,我们面临几个技术挑战:
对话状态管理:大模型本身是无状态的,需要额外维护对话历史
向量数据库:知识库需要使用专门的向量数据库技术
模型对接:不同模型的API对接存在兼容性问题
考虑到这些复杂性,手动构建整个Agent体系效率较低。我们选择基于Dify等专业平台进行开发,这样能够专注于业务逻辑的实现,而非基础设施的搭建。
二、实战:构建天气查询MCP服务
为了验证技术可行性,我们先从一个相对简单的天气查询MCP服务开始验证。这里,使用SpringAI框架将其封装为MCP服务。
PS:基于开放的天气API:https://api.open-meteo.com/v1
2.1 环境配置
项目依赖(pom.xml):
要求JDK 17及以上版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.5</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp-server-spring-boot-autoconfigure</artifactId>
<version>1.0.0-M6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-mcp</artifactId>
<version>1.0.0-M6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webflux</artifactId>
<version>0.8.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
2.2 应用配置
server:
port:8082
spring:
ai:
mcp:
server:
name:my-weather-server
sse-endpoint:/sse
sse-message-endpoint:/mcp/messages
type:ASYNC
version:0.0.1
2.3 核心服务实现
(1)应用启动类:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ToolCallbackProvider weatherTools(OpenMeteoService openMeteoService) {
return MethodToolCallbackProvider.builder()
.toolObjects(openMeteoService)
.build();
}
}
(2)天气服务实现:
通过@Tool注解将业务方法暴露为MCP工具。
@Service
publicclass OpenMeteoService {
privatefinal WebClient webClient;
public OpenMeteoService(WebClient.Builder webClientBuilder) {
this.webClient = webClientBuilder
.baseUrl("https://api.open-meteo.com/v1")
.build();
}
@Tool(description = "根据经纬度获取天气预报")
public String getWeatherForecastByLocation(
@ToolParam(description = "纬度,例如:39.9042") String latitude,
@ToolParam(description = "经度,例如:116.4074") String longitude) {
try {
String response = webClient.get()
.uri(uriBuilder -> uriBuilder
.path("/forecast")
.queryParam("latitude", latitude)
.queryParam("longitude", longitude)
.queryParam("current", "temperature_2m,wind_speed_10m")
.queryParam("timezone", "auto")
.build())
.retrieve()
.bodyToMono(String.class)
.block();
return"当前位置(纬度:" + latitude + ",经度:" + longitude + ")的天气信息:\n" + response;
} catch (Exception e) {
return"获取天气信息失败:" + e.getMessage();
}
}
@Tool(description = "根据经纬度获取空气质量信息")
public String getAirQuality(
@ToolParam(description = "纬度,例如:39.9042") String latitude,
@ToolParam(description = "经度,例如:116.4074") String longitude) {
// 模拟数据,实际应用中应调用真实API
return"当前位置(纬度:" + latitude + ",经度:" + longitude + ")的空气质量:\n" +
"- PM2.5: 15 μg/m³ (优)\n" +
"- PM10: 28 μg/m³ (良)\n" +
"- 空气质量指数(AQI): 42 (优)\n" +
"- 主要污染物: 无";
}
}
三、MCP服务调试与实践
完成MCP服务开发后,我们需要进行充分的测试验证。类比REST API的开发流程,MCP服务同样需要专业的调试工具和方法。
3.1 使用Inspector进行基础测试
MCP官方提供的Inspector工具相当于传统开发中的Postman,能够直接调用MCP接口进行测试。
安装和使用步骤:
npx @modelcontextprotocol/inspector node build/index.js
通过Inspector界面,我们可以:
- 查看所有可用的MCP工具列表
- 直接调用工具方法并查看返回结果
- 验证参数传递和数据格式的正确性

3.2 集成到AI开发环境
真正的价值在于将MCP服务集成到AI应用中使用。目前主流的AI开发工具都支持MCP协议,包括:
VsCode Cline扩展:在对话窗口中直接使用自然语言调用MCP工具

Dify等AI应用平台:在可视化界面中配置和使用MCP工具。
自定义SpringAI客户端:根据业务需求开发专用的客户端应用。
需要注意的是,不同工具对MCP的支持程度有所差异。例如,当前版本的Cursor由于客户端限制,暂时无法直接调用我们开发的MCP服务。
四、总结
通过实战构建查询天气的MCP服务,我们验证了SpringAI MCP技术的可行性。从技术架构上看,MCP为AI应用提供了一种标准化的能力扩展机制,让大模型能够安全、可控地访问外部系统和服务。
对于企业级应用而言,MCP的价值不仅在于技术实现,更重要的是它提供了一种AI与传统业务系统融合的新范式。随着MCP生态的不断完善,我们有理由相信,这种"对话即服务"的模式将在企业数字化升级中发挥越来越重要的作用。还是那句话:AI早就无限可能!
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
学习资源推荐 如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量
698

被折叠的 条评论
为什么被折叠?



