当前位置:首页 > 技术知识 > 正文内容

Spring AI MCP:一个用于模型上下文协议的 Java SDK

maynowei8个月前 (08-19)技术知识69

MCP 是什么?



模型上下文协议 (MCP) 是一个开放协议,它标准化了应用程序如何为大语言模型 (LLM) 提供上下文。MCP 提供了一种标准化的方式,将 AI 模型连接到不同的数据源和工具,使集成变得无缝且一致。它可以帮助你在大语言模型的基础上构建智能体和复杂的流程。大语言模型通常需要与数据和工具集成,而 MCP 提供了:

  • 一个不断增长的预构建集成列表,你的大语言模型可以直接接入
  • 在大语言模型提供商和供应商之间切换的灵活性


总体架构

在核心层面,MCP 遵循客户端 - 服务器架构,一个宿主应用程序可以连接到多个服务器。



Spring AI MCP 实现了一个模块化架构,包含以下组件:

  • Spring AI 应用程序:使用 Spring AI 框架构建生成式 AI 应用程序,这些应用程序希望通过 MCP 访问数据
  • Spring MCP 客户端:Spring AI 对 MCP 协议的实现,它们与服务器保持 1:1 的连接
  • MCP 服务器:轻量级程序,每个程序都通过标准化的模型上下文协议(MCP)暴露特定的功能
  • 本地数据源:你的计算机上的文件、数据库和服务,MCP 服务器可以安全地访问它们
  • 远程服务:通过互联网(例如通过 API)可用的外部系统,MCP 服务器可以连接到这些系统


该架构支持从简单的文件系统访问到复杂的多模型 AI 交互,涵盖数据库和互联网连接等多种用例。


MCP Server

MCP 服务器是模型上下文协议(MCP)架构中的一个基础组件,它为客户端提供工具、资源和能力。



它实现了协议的服务器端,负责以下内容:

(1)服务器端协议操作的实现

  • 工具的暴露和发现
  • 基于 URI 的资源管理
  • 提供和处理提示模板
  • 与客户端进行能力协商
  • 结构化日志记录和通知


(2)并发客户端连接管理

(3)同步和异步 API 支持

(4)传输实现:

  • 基于标准输入输出(Stdio)的传输,用于基于进程的通信
  • 基于 Servlet 的 SSE(服务器发送事件)服务器传输
  • 基于 WebFlux 的 SSE 服务器传输,用于响应式 HTTP 流式传输
  • 基于 WebMVC 的 SSE 服务器传输,用于基于 Servlet 的 HTTP 流式传输


#上头条 聊热点##mcp#

相关文章

Android让视图折叠(安卓叠加视图设置)

Android UI Libs之ExpandableLayout1. 说明ExpandableLayout,顾名思义,可扩展的布局,是一个可以帮助我们实现折叠功能的第三方库,折叠时,只显示头部,打开时...

分析 Rust 程序的火焰图(rust火吗)

分析 Rust 程序的火焰图(Flame Graph)是定位性能瓶颈的核心手段,其核心是通过可视化的函数调用栈和时间分布,找到 CPU 耗时、内存分配、锁竞争等热点。以下是详细的分析方法和步骤,结合...

Go 语言中的 RWMutex 源码解析、使用场景及应用分析

Go 语言标准库的 sync 包提供了一些非常重要的并发原语来帮助程序开发者处理并发任务。本文将详细解析 sync 包中的 RWMutex,即读写互斥锁(Reader/Writer Mutex),并结...

C++11 同步机制:互斥锁和条件变量

前段时间,我研究了 ROS2(Jazzy)机器人开发系统,并将官网中比较重要的教程和概念,按照自己的学习顺序翻译成了中文,进行了整理和记录。到目前为止,已经整理了20多篇文章。如果你想回顾之前的内容,...

Qt QWaitCondition 的正确使用方法

简单用法QWaitCondition 用于多线程的同步,一个线程调用QWaitCondition::wait() 阻塞等待,直到另一个线程调用QWaitCondition::wake() 唤醒才继续往...

什么?Java 中的锁还有状态?(java中的锁都有哪些类型)

线程如果锁住了某个资源,致使其他线程无法访问的这种锁被称为悲观锁,相反,线程不锁住资源的锁被称为乐观锁,而自旋锁是基于 CAS 机制实现的,CAS又是乐观锁的一种实现,那么对于锁来说,多个线程同步访问...