Spring AI MCP 架构详解

news2025/4/1 13:24:06

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 传输实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2324432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库

环境情况 ubuntu 18.04 → 20.04(最终) 安装Ubuntu1804虚拟机系统 Anaconda:可参考我的另一篇文章 Python 3.6.13 → 3.8(最终)Anaconda3-2021.05 目标识别:YOLOv5相关 1、安装git sudo apt install gi…

OpenAI API - Agent

文章目录 代理概述模型工具知识与记忆防护栏编排入门 语音代理选择正确的架构语音到语音(多模态)架构链式架构 构建语音代理使用语音到语音架构进行实时处理将音频输入链接到文本处理 → 音频输出 代理 了解如何使用 OpenAI API 构建代理。 https://pl…

Strawberry perl的下载,查询版本号,配置Path环境变量,查找perl解释器的位置

Strawberry Perl 是一个适用于 Microsoft Windows 的 Perl 环境,包含运行和开发 Perl 应用程序所需的一切。它旨在尽可能接近 UNIX 系统上的 Perl 环境。 下载 官网: Strawberry Perl for Windows - Releases 各个版本: Strawberry Perl for Windows - Releases …

MySQL的基础语法2(函数-字符串函数、数值函数、日期函数和流程函数 )

目录 一、字符串函数 1.常见字符串函数 ​编辑 2.字符串函数的基本使用 3.字符串函数的数据库案例演示 二、数值函数 1.常见数值函数(如下): 2.数值函数的基本使用 3.数值函数的数据库案例演示 三、日期函数 1.常见的日期函数 2.日…

5G_WiFi_CE_杂散测试

目录 一、规范要求 1、法规目录: 2、限值: (1)带外发射杂散 (2)带内发射杂散 (3)接收杂散 二、测试方法 1、带外发射杂散 (1)测试条件 &#xff08…

大数据Spark(五十五):Spark框架及特点

文章目录 Spark框架及特点 一、Spark框架介绍 二、Spark计算框架具备以下特点 Spark框架及特点 一、Spark框架介绍 Apache Spark 是一个专为大规模数据处理而设计的快速、通用的计算引擎。最初由加州大学伯克利分校的 AMP 实验室(Algorithms, Machines, and Pe…

UI产品经理基础(六):如何解决用户的质疑?

在需求调查中遇到用户质疑“不专业”或“不了解需求”,本质上是用户对产品经理的信任缺失或沟通鸿沟导致的。要化解这种质疑,需从专业能力展示、沟通方式优化、用户参与感提升三个维度切入,结合具体场景采取针对性策略。以下是系统化的解决方…

【大数据技术】大数据技术概念及概述

1. 大数据概念 数据 是实时或观察的结果是对客观事务的逻辑归纳是用于表示客观事物的未经加工的原始素材 数据的产生 对客观事务的计量和记录尝试的数据 单位换算1 byte8 bit1 k1024 byte1 mb1024 k1 g1024 m1 t1024 g1 p1024 t1 e1024 p1 z1024 e1 y1024 z1 b1024 y1 n10…

Python库()

1.概念 Matplotlib 库:是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂 Matplotlib 图形组成: Figure:指整个图形&#xf…

AI知识补全(八):多模态大模型是什么?

名人说:人生如逆旅,我亦是行人。 ——苏轼《临江仙送钱穆父》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(七):AI Agent 智能…

Docker-MySQL安装-命令解读-常见命令-数据卷挂载-本地目录挂载-自定义镜像-网络-前端部署-DockerCompose

目录 Docker: 安装MySQL: 镜像容器: 镜像仓库: ​编辑命令解读: 镜像命名规范: docker run中常见参数: Docker常见命令: ​编辑数据卷: ​编辑数据卷-操作命令&…

Docker 安装部署Harbor 私有仓库

Docker 安装部署Harbor 私有仓库 系统环境:redhat x86_64 一、首先部署docker 环境 定制软件源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install -y yum-utils device-mapper-persistent-data lvm2…

StarRocks 存算分离在京东物流的落地实践

康琪:京东物流高级技术专家、StarRocks & Apache Flink Contributor 导读:本文整理自京东物流高级技术专家在 StarRocks 年度峰会上的分享,UData 平台从存算一体到存算分离架构演进后,查询性能得到提升。Cache hit 时&#xf…

英伟达GB300新宠:新型LPDDR5X SOCAMM内存

随着人工智能(AI)、机器学习(ML)和高性能计算(HPC)应用的快速发展,对于高效能、大容量且低延迟内存的需求日益增长。NVIDIA在其GB系列GPU中引入了不同的内存模块设计,以满足这些严格…

具身智能 - Diffusion Policy:技术解析与应用实践

具身智能之 Diffusion Policy:技术解析与应用实践 一、Diffusion Policy 的核心概念 Diffusion Policy 是一种基于扩散模型(Diffusion Models)的决策生成框架,专为具身智能(Embodied Intelligence)设计。其核心思想是通过逐步去噪的过程,在复杂环境中生成鲁棒的动作序列…

[C++] 智能指针 进阶

标题:[C] 智能指针 进阶 水墨不写bug 在很久之前我们探讨了智能指针的浅显认识,接下来会更加深入,从源码角度认识智能指针,从而了解智能指针的设计原理,并应用到以后的工作项目中。 本文将会按照C智能指针的发展历史&…

kubernetes》》k8s》》 kubeadm、kubectl、kubelet

kubeadm 、kubectl 、kubelet kubeadm、kubectl和kubelet是Kubernetes中不可或缺的三个组件。kubeadm负责集群的快速构建和初始化,为后续的容器部署和管理提供基础;kubectl作为命令行工具,提供了与Kubernetes集群交互的便捷方式;而…

C++中的new、malloc、realloc、calloc——特点?函数原型?释放方式?区别?校招面试常问内容?

作者:求一个demo 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 内容通俗易懂,没有废话,文章最后是面试常问内容(建议通过标题目录学习) 废话不多…

27_promise

插入一下前端助手测试&#xff0c;顺手可以用来做安全 promise promise 是一个es6新增的语法 汉语&#xff1a;承诺的意思 作用:是专门用来解决回调地狱!!!! 什么是回调函数&#xff1f; <script>// 回调函数 callback回调// 就是把函数A当作参数传递到函数B中// 在函…