当前位置: 首页 > article >正文

spring ai mcp 和现有业务逻辑如何结合,现有项目用的是spring4.3.7

将 Spring AI 的 MCP(Model Context Protocol)协议集成到基于 Spring 4.3.7 的现有项目中,

需解决版本兼容性和架构适配问题。
有两种方式:1 mcp tool 封装, 2:如果是微服务,可以用spring ai alibaba的 Streamable HTTP 协议


⚠️ 一、核心挑战与兼容性策略

  1. 版本差异问题
    Spring AI 最低要求 Spring Boot 3.x(对应 Spring 6.x),而 Spring 4.3.7 属于旧版框架。直接升级可能破坏现有业务逻辑。
    推荐方案

    • 渐进式集成:在新模块中使用 Spring Boot 3.x + Spring AI,通过 REST API 或消息队列与旧系统交互。
    • 依赖隔离:通过 Maven/Gradle 模块化设计,隔离新老依赖(如将 Spring AI 放在独立子模块中)。
  2. MCP 协议适配
    MCP 通过标准化接口连接 AI 模型与外部工具(如数据库、API),但旧项目需封装现有业务逻辑为 MCP 兼容工具。
    操作步骤

    • 将业务逻辑封装为 Spring Bean(如 @Service 类)。
    • 通过 SyncMcpToolCallbackProvider 注册为 MCP 工具,暴露给 AI 模型调用。
      // 示例:封装订单查询服务为 MCP 工具
      @Service
      public class OrderService {@Tool("查询用户订单")public List<Order> getOrders(@Param("userId") String userId) {// 现有业务逻辑}
      }
      

🔧 二、具体集成方案

✅ 方案 1:渐进式升级(推荐)
  1. 新建 Spring Boot 3.x 模块
    引入 Spring AI 依赖(如 spring-ai-mcp-client):
    <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId><version>1.0.0-M6</version>
    </dependency>
    
  2. 通过 HTTP 调用旧系统
    在新模块中通过 Feign 或 RestTemplate 调用 Spring 4.3.7 项目的 REST API,将响应结果注入 AI 上下文。
✅ 方案 2:业务逻辑工具化
  1. 封装现有逻辑为 MCP 工具
    使用 @Tool 注解标记业务方法,使其可被 AI 模型动态调用:
    public class LegacyServiceAdapter {@Tool("库存检查")public boolean checkInventory(@Param("productId") String productId) {// 调用旧系统逻辑}
    }
    
  2. 配置 MCP 客户端
    application.yaml 中声明工具:
    spring:ai:mcp:client:tools:- inventoryService
    
✅ 方案 3:Streamable HTTP 优化企业集成

针对企业级场景,采用 MCP 的 Streamable HTTP 协议(由 Spring AI Alibaba 实现),解决旧版 HTTP+SSE 的断线重连问题:

# 配置 Streamable HTTP 端点
spring:ai:mcp:endpoint: /mcp-streamsession-recovery: true  # 支持会话恢复

优势

  • 无状态通信无需会话粘滞(Sticky Session),适合微服务架构。
  • 兼容负载均衡和 API 网关(如 Higress)。

🧩 三、关键技术点

  1. 依赖冲突解决

    • 使用 maven-shade-plugin 重命名冲突包(如旧版 Spring Core)。
    • 排除 Spring AI 中高版本依赖(如 Guava),改用兼容版本。
  2. 检索增强生成(RAG)整合
    结合现有数据库实现知识增强:

    // 注入向量存储实现 RAG
    @Autowired
    private VectorStore vectorStore;public String queryWithContext(String question) {QuestionAnswerAdvisor advisor = QuestionAnswerAdvisor.builder(vectorStore).build();return ChatClient.builder(chatModel).build().prompt().advisors(advisor).user(question).call().content();
    } 
    
  3. 性能与扩展性

    • 无状态工具:90% 的 MCP 工具可设计为无状态,避免会话管理开销。
    • 异步调用:使用 @Async 封装耗时业务逻辑,防止阻塞 AI 线程。

🔍 四、实践示例

场景:在电商旧系统中添加 AI 客服订单查询功能

  1. Step 1:在新模块创建 OrderMCPController(Spring Boot 3.x),调用旧系统订单 API。
  2. Step 2:注册为 MCP 工具:
    @RestController
    public class OrderMCPController {@PostMapping("/mcp/orders")public List<Order> getOrders(@RequestBody UserQuery query) {// 调用 Spring 4.3.7 的订单服务}
    }
    
  3. Step 3:AI 模型通过 MCP 协议调用该工具:
    spring:ai:mcp:client:stdio:connections:order-service:command: "curl -X POST http://legacy-system/orders"
    

⚠️ 五、注意事项

  1. 协议选择:优先采用 Streamable HTTP 替代 stdio 模式(更适合服务器部署)。
  2. 工具复用:将 Alita 等智能体生成的 MCP 工具集成到业务中,提升处理复杂任务的能力。
  3. 监控:通过 Micrometer 跟踪 MCP 调用延迟和错误率。

综上,渐进式升级 + 业务工具化封装是平衡改造风险与收益的最佳路径。重点在于通过 MCP 将旧逻辑包装为标准化工具,而非直接升级框架。Spring AI Alibaba 的 Streamable HTTP 实现可显著提升企业场景下的稳定性。

http://www.lryc.cn/news/2401362.html

相关文章:

  • 【设计模式-4.11】行为型——解释器模式
  • 【已解决】MACOS M4 芯片使用 Docker Desktop 工具安装 MICROSOFT SQL SERVER
  • Quipus系统的视频知识库的构建原理及使用
  • web3-去中心化金融深度剖析:DEX、AMM及兑换交易传播如何改变世界
  • 国芯思辰|SCS5501/5502芯片组打破技术壁垒,重构车载视频传输链路,兼容MAX9295A/MAX96717
  • 【图像处理3D】:点云图是怎么生成的
  • 压敏电阻的选型都要考虑哪些因素?同时注意事项都有哪些?
  • 用WPDRRC模型,构建企业安全防线
  • 使用 Amazon Q Developer CLI 快速搭建各种场景的 Flink 数据同步管道
  • Java应用服务在Kubernetes集群中的改造与配置
  • Linux 里 su 和 sudo 命令这两个有什么不一样?
  • 「数据分析 - Pandas 函数」【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • JAVASCRIPT 简化版数据库--智能编程——仙盟创梦IDE
  • YAML在自动化测试中的三大核心作用
  • 命名管道实现本地通信
  • iOS上传应用包错误问题 “Invalid bundle. The “UIInterfaceOrientationPortrait”“
  • 【LeetCode】1061. 按字典序排列最小的等效字符串(并查集)
  • 猎板厚铜PCB工艺能力如何?
  • Flutter快速上手,入门教程
  • 算法:前缀和
  • DEVICENET转MODBUS TCP网关与AB数据输出模块的高效融合方案研究
  • 牛客小白月赛113
  • Mac版本Android Studio配置LeetCode插件
  • 电子电路基础1(杂乱)
  • rocketmq延迟消息的底层原理浅析
  • 【openssl】升级为3.3.1,避免安全漏洞
  • 使用 HTML +JavaScript 从零构建视频帧提取器
  • 基于若依前后分离版-用户密码错误锁定
  • 论文速读《DexWild:野外机器人策略的灵巧人机交互》
  • Bug问题