Spring Al学习9:模型上下文协议(MCP)

模型上下文协议(Model Context Protocol,MCP) 是一种标准化协议,使 AI 模型能以结构化方式与外部工具及资源交互。它支持多种传输机制,以适应不同环境的灵活性需求。

MCP Java SDK 提供 MCP 的 Java 实现,支持通过同步和异步通信模式与 AI 模型及工具进行标准化交互。

Spring AI MCP 通过集成 Spring Boot 扩展了 MCP Java SDK,同时提供 客户端 和 服务端 Starter。使用 Spring Initializer可快速构建支持 MCP 的 AI 应用。

MCP Java SDK 0.8.0 重大变更 ⚠️

MCP Java SDK 0.8.0 版本引入多项重大变更,包括基于会话的新架构。若从 Java SDK 0.7.0 升级,请参阅 迁移指南 获取详细说明。

MCP Java SDK 架构

本节概述 MCP Java SDK 架构。有关 Spring AI MCP 集成的详细信息,请参阅 Spring AI MCP Boot Starters 文档。

Java MCP 实现采用三层架构:

MCP Stack Architecture

复制代码
Client/Server 层:McpClient 处理客户端操作,McpServer 管理服务端协议操作,二者均通过 McpSession 进行通信管理。

Session 层(McpSession):通过 DefaultMcpSession 实现管理通信模式及状态。

Transport 层(McpTransport):处理 JSON-RPC 消息的序列化与反序列化,支持多种传输协议实现。

MCP 客户端

MCP 客户端是 Model Context Protocol(MCP)架构的核心组件,负责建立并管理与 MCP 服务器的连接。它实现协议的客户端逻辑,主要处理以下功能:

复制代码
协议版本协商以确保与服务器的兼容性

功能协商以确定可用特性

消息传输及 JSON-RPC 通信

工具发现与执行

资源访问与管理

提示词系统交互

可选功能

    根目录管理

    采样支持

同步与异步操作

传输协议选项:

    基于 Stdio 的进程间通信传输协议

    基于 Java HttpClient 的 SSE 客户端传输协议

    WebFlux SSE 客户端传输协议(用于响应式 HTTP 流式通信)

Java MCP 客户端架构

MCP 服务器

MCP 服务器是 Model Context Protocol(MCP)架构的基础组件,用于向客户端提供工具、资源和功能。它实现协议的服务端逻辑,主要职责包括:

复制代码
服务端协议操作的实现

    工具暴露与发现

    基于 URI 的资源管理及访问

    提示(Prompt)模板的提供与处理

    与客户端的功能协商

    结构化日志记录与通知

并发客户端连接管理

同步与异步 API 支持

传输协议实现:

    基于 Stdio 的进程间通信传输协议

    基于 Servlet 的 SSE 服务器传输协议

    WebFlux SSE 服务器传输协议(用于响应式 HTTP 流式通信)

    WebMVC SSE 服务器传输协议(用于基于 Servlet 的 HTTP 流式通信)

Java MCP 服务器价格

具体实现指导(使用底层 MCP 客户端/服务端 API)请参阅 MCP Java SDK 文档。若需通过 Spring Boot 简化配置,请使用下文所述的 MCP Boot Starter。

Spring AI MCP 整合

Spring AI 通过以下 Spring Boot Starter 提供 MCP 集成:

Client Starter

复制代码
spring-ai-starter-mcp-client - 核心 starter(提供 STDIO 及基于 HTTP 的 SSE 支持)

spring-ai-starter-mcp-client-webflux - 基于 WebFlux 的 SSE 传输实现

Server Starter

复制代码
spring-ai-starter-mcp-server - 核心服务端(支持 STDIO 传输协议)

spring-ai-starter-mcp-server-webmvc - 基于 Spring MVC 的 SSE 传输实现

spring-ai-starter-mcp-server-webflux - 基于 WebFlux 的 SSE 传输实现
相关推荐
leikooo5 小时前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
Ivanqhz6 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
沙漠之主6 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
FPGA小徐7 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络
青柠之夏cc7 小时前
AI与教育:个性化学习助手让“因材施教“成为现实,但代价是隐私?
人工智能·学习
YOLO数据集集合7 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
知行EDI7 小时前
知行之桥 MaBang 端口使用指南——Create Order 订单创建篇
java·服务器·数据库
笑鸿的学习笔记7 小时前
C++笔记之大块顺序写
java·c++·笔记
for_ever_love__8 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI8 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战