Spring AI MCP 架构详解

Spring AI MCP 架构详解

1.什么是MCP?

MCP 是一种开放协议,它对应用程序向大语言模型(LLMs)提供上下文信息的方式进行了标准化。可以把 MCP 想象成人工智能应用程序的 USB-C 接口。就像 USB-C 为将设备连接到各种外围设备和配件提供了一种标准化方式一样,MCP 将人工智能模型连接到不同的数据源和工具提供了一种标准化方式。

MCP 可帮助你在 LLM 之上构建智能体和复杂的工作流。LLM 通常需要与数据和工具集成,而 MCP 可提供:

  1. 在 LLM 提供商和供应商之间切换的灵活性。
  2. 不断扩充的预构建集成列表,你的大语言模型可以直接接入其中;
  3. 保护基础设施内数据的最佳实践

MCP协议官网 https://modelcontextprotocol.io/

2.整体架构

MCP 的核心是客户端-服务器架构,其中主机应用程序可以连接到多个服务器:

在这里插入图片描述

MCP Hosts:想要通过 MCP 访问数据的程序(例如 Claude Desktop、IDE 或 AI 工具)

**MCP Clients:**与服务器保持 1:1 连接的协议客户端

**MCP Servers:**每个轻量级程序都通过标准化模型上下文协议公开提供特定功能

**Local Data Sources:**MCP 服务器可以安全访问您的计算机的文件、数据库和服务

**Remote Services:**MCP 服务器可以连接到互联网上的外部系统(例如通过 API)

Spring AI MCP

MCP Java SDK 提供了模型上下文协议的 Java 实现,支持通过同步和异步通信模式与 AI 模型和工具进行标准化交互。

Spring AI MCP 通过 Spring Boot 集成扩展了 MCP Java SDK,提供客户端和服务器启动器。使用 Spring Initializer 通过 MCP 支持引导您的 AI 应用程序。

MCP Java SDK Architecture

Java MCP 实现遵循三层架构:

在这里插入图片描述

客户端 / 服务器层:McpClient 处理客户端操作,而 McpServer 管理服务器端的协议操作。两者都使用 McpSession 来进行通信管理。

会话层(McpSession):通过 DefaultMcpSession 实现来管理通信模式和状态。

传输层(McpTransport):处理 JSON-RPC 消息的序列化和反序列化,支持多种传输实现方式。

MCP Client

在这里插入图片描述

MCP 客户端是模型上下文协议 (MCP) 架构中的关键组件,负责建立和管理与 MCP 服务器的连接。它实现了协议的客户端:

  1. 协议版本协商,确保与服务器的兼容性

  2. 能力协商以确定可用功能

  3. 消息传输和 JSON-RPC 通信

  4. 工具发现和执行

  5. 资源访问和管理

  6. Prompt系统交互

  7. 可选特性:Roots管理,采样支持

  8. 同步和异步操作

  9. 传输可选项:

         基于标准输入输出(Stdio)的传输,用于基于进程的通信
    
         基于 Java HttpClient 的 SSE 客户端传输
    
         反应式 HTTP 流的 WebFlux SSE 客户端传输
    

MCP Server

在这里插入图片描述

MCP 服务端是模型上下文协议 (MCP) 架构中的基础组件,为客户端提供工具、资源和功能。它实现协议的服务端,负责:

  1. 服务端协议操作实现
  • 工具暴露与发现
  • 基于统一资源标识符(URI)访问的资源管理
  • 提示词模板的提供与处理
  • 与客户端进行能力协商
  • 结构化日志记录与通知
  1. 客户端并发连接管理
  2. 同步和异步 API 支持
  3. 传输实现方式:
  • 基于标准输入输出(Stdio)的传输,用于基于进程的通信
  • 基于 Servlet 的服务器发送事件(SSE)服务器传输
  • 响应式 HTTP 流的基于 WebFlux 的服务器发送事件(SSE)服务器传输
  • Servlet 的 HTTP 流基于 WebMVC 的服务器发送事件(SSE)服务器传输

Spring AI MCP 集成

Spring AI 通过以下 Spring Boot Starters提供 MCP 集成:

Client Starters

  • spring-ai-starter-mcp-client - 核心starter,提供基于标准输入输出(STDIO)和基于HTTP的服务器发送事件(SSE)
  • spring-ai-starter-mcp-client-webflux - 基于 WebFlux 的服务器发送事件(SSE)传输实现

Server Starters

  • spring-ai-starter-mcp-server - 核心server,基于标准输入输出(STDIO)传输支持
  • spring-ai-starter-mcp-server-webmvc - 基于Spring MVC的 SSE 传输实现
  • spring-ai-starter-mcp-server-webflux - 基于WebFlux SSE 传输实现
### Spring AIMCP认证计划或框架的集成分析 Spring AI 是一种基于 Spring Framework 的扩展技术,专注于利用人工智能和机器学习的能力来增强应用程序的功能。而 MCP(Microsoft Certified Professional),通常指的是微软推出的微认证计划,旨在验证开发者在特定技术和领域中的技能水平。 以下是关于如何将 **Spring AI** 与 **MCP 认证计划或框架** 集成的一些关键点: #### 1. 技术栈兼容性 Spring Framework 使用 Java 编程语言作为其主要开发环境,并支持多种企业级功能,例如依赖注入、面向切面编程 (AOP)[^3] 和事务管理等功能。相比之下,MCP 更多关注的是 Microsoft 生态系统的技能认证,涉及的技术可能包括 .NET、C# 或 Azure 平台。因此,在讨论两者集成时,需考虑它们所处的不同生态系统和技术背景。 为了实现跨平台协作,可以采用 RESTful API 或 GraphQL 接口的方式让两个不同技术堆栈之间通信[^2]。通过这种方式,Java 应用程序能够调用由 C# 开发的服务端点,反之亦然。 #### 2. 微服务架构下的协同工作 如果目标是在同一项目中同时应用 Spring AI 和某些符合 MCP 要求的技术,则建议构建一个分布式系统结构——即每个子模块分别运行于各自擅长的语言环境中,但整体上遵循统一的设计原则并共享数据存储层。例如: - 前端部分可选用 AngularJS 来处理用户界面逻辑; - 后端则分为两大部分:一部分负责执行复杂的业务计算任务(使用 Spring Boot 实现);另一部分完成数据库操作以及安全性保障等工作(借助 ASP.NET Core 完成)。 这种设计模式不仅有助于发挥各组件的优势,还能简化后期维护流程,因为每种语言都只承担自己最擅长的任务类别。 #### 3. 数据交换标准的选择 当涉及到异构系统间的交互时,选择合适的数据传输协议至关重要。JSON 格式因其简单易读写的特点成为当今 Web 开发中最受欢迎的一种序列化方式之一。无论是从 PHP 到 MySQL 这样的传统 LAMP 架构还是现代云原生解决方案都可以很好地支持 JSON 文件格式 。此外,XML 曾经也是广泛使用的另一种备选方案,不过近年来由于冗余度较高且解析效率较低等原因逐渐被前者取代。 对于需要更高性能的应用场景来说,二进制编码形式如 Protocol Buffers 或 Avro 可能会更加适合。这些工具能够在保持良好互操性的前提下显著减少网络带宽消耗量,从而提升整个系统的响应速度和服务质量。 ```java // Example of a simple REST controller using Spring Boot @RestController @RequestMapping("/api/data") public class DataController { @GetMapping(value = "/fetch", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<String> fetchData() { String jsonData = "{\"message\": \"Hello from Spring!\"}"; return new ResponseEntity<>(jsonData, HttpStatus.OK); } } ``` 上述代码片段展示了一个基本的 Spring Boot 控制器类定义方法,它对外提供了一个 GET 请求接口用于返回一段简单的 JSON 字符串消息给客户端消费者。 --- ### 总结 尽管 Spring AI 属于 JVM 生态圈内的产物,而 MCP 主要围绕 Windows Server / Desktop Applications 打造而成,但这并不妨碍二者间建立有效的合作关系。只要合理规划好各自的职责范围并通过标准化手段促进彼此之间的交流联系,就能成功达成预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laopeng301

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值