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

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

maynowei9个月前 (08-19)技术知识81

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 TabLayout + ViewPager2使用

1、xml文件<!--明细列表--> <com.google.android.material.tabs.TabLayout android:id="@+id/ty_...

Linux系统编程—互斥量mutex(linux 互斥量)

##互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也...

如何优雅地使用嵌入式事件标志组?

事件标志组嵌入式事件标志组是一种在嵌入式系统中广泛使用的同步机制,主要用于实现多任务间的同步与通信。事件标志组是一组事件标志位的集合,每个位代表一个事件是否发生。它允许任务等待特定的事件发生,当事件发...

C语言进阶教程:线程同步:互斥锁、条件变量与信号量

在多线程编程中,线程同步是确保数据一致性和程序正确性的关键。当多个线程需要访问共享资源时,如果缺乏适当的同步机制,就可能导致竞态条件(Race Condition)、死锁(Deadlock)等问题。本...

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

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

Oracle标准化部署手册(oracle19c客户端)

很久之前写过一篇11g的windows安装手册, 这次是19c的windows安装手册,面向没有数据库安装部署经验的开发人员或想学习数据库的新手。希望能给想从事dba的入门人员小小的帮助。 毕竟每个高...