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 | 实践教程 - ScreenCoder | 多agents前端代码生成
前端·javascript·人工智能
玄同7653 分钟前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae
新缸中之脑5 分钟前
用RedisVL构建长期记忆
人工智能
消失的旧时光-19439 分钟前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
J_Xiong011712 分钟前
【Agents篇】07:Agent 的行动模块——工具使用与具身执行
人工智能·ai agent
SEO_juper18 分钟前
13个不容错过的SEO技巧,让您的网站可见度飙升
人工智能·seo·数字营销
小瑞瑞acd20 分钟前
【小瑞瑞精讲】卷积神经网络(CNN):从入门到精通,计算机如何“看”懂世界?
人工智能·python·深度学习·神经网络·机器学习
CoderJia程序员甲29 分钟前
GitHub 热榜项目 - 日榜(2026-02-06)
人工智能·ai·大模型·github·ai教程
wukangjupingbb34 分钟前
AI多模态技术在创新药研发中的结合路径、机制及挑战
人工智能
暮色妖娆丶42 分钟前
SpringBoot 启动流程源码分析 ~ 它其实不复杂
spring boot·后端·spring