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 传输实现
相关推荐
蓝狐社1 小时前
AI这艘船,谁在划桨,谁在凿洞?
人工智能
GlobalInfo1 小时前
AI与另类数据融合,市场研究正在从“经验驱动”走向“数据智能”
大数据·网络·人工智能·ai
AImoon11.11 小时前
MiniMax H3开源引发视频赛道变局,客易云关注AI模型从生成工具迈向生产力工具
人工智能·音视频
XMAIPC_Robot1 小时前
RK3588+STM32:高性能机器人运动控制解决方案,兼顾实时性与AI算力
人工智能·stm32·嵌入式硬件·算法·fpga开发·机器人·arm+fpga
vivo互联网技术2 小时前
MagicBokeh:单步统一生成式框架实现真实感长焦虚化渲染 | CVPR 2026 Oral
人工智能·算法
新点一讯2 小时前
聚焦流程数智升级,九科信息企业自动化智能体赋能高效运营
大数据·人工智能
千视kiloview2 小时前
“轻”不等于降级:IP时代广播制作系统的轻量化与Hybrid架构实践
网络·tcp/ip·架构
Dawson Zhu2 小时前
元宇宙对世界模型发展的启发与借鉴意义——以半导体晶圆厂为例
人工智能
武子康2 小时前
Pi Agent 为什么不内置 MCP:工具发现与上下文成本的真实争议
人工智能·llm·agent
樊小肆2 小时前
# 你还在等DeepSeek官方 agent Harness‌? 来试试 DeepSeeker-Code吧
前端·人工智能·后端