Spring AI 1.x 系列【39】MCP Java SDK 与 Spring AI 集成

文章目录

  • [1. MCP Java SDK](#1. MCP Java SDK)
  • [2. Spring AI 集成 MCP](#2. Spring AI 集成 MCP)
    • [2.1 客户端 Starters](#2.1 客户端 Starters)
    • [2.2 服务端 Starters](#2.2 服务端 Starters)
    • [2.3 MCP 注解](#2.3 MCP 注解)
    • [2.4 相关参考文档](#2.4 相关参考文档)

1. MCP Java SDK

1.1 概述

MCP Java SDK 是模型上下文协议的 Java 语言实现,依托同步、异步两种通信模式,实现 AI 模型与工具之间的标准化交互。

1.2 版本说明

20262 月份,才发布了 1.0.0 正式版本,过渡到稳定、语义版本化的发布线:

2026314 日,发布了 1.1.0 正式版本:

SDK 支持 2025-06-18MCP 规范,并支持在 2024-11-052025-03-262025-06-18 之间进行协议版本协商。 2025-11-25 规范的工作正在积极进行中:

1.x 版本的路线图可以参考官方文档说明

1.3 三层架构

JavaMCP 采用三层架构,职责分离,便于维护与扩展:

1.3.1客户端/服务端层(顶层)

负责核心业务逻辑与协议操作:

  • McpClient:管理客户端逻辑与服务端连接
  • McpServer:处理服务端协议逻辑与客户端请求
客户端

MCP 客户端是协议架构的核心组件,负责建立并维护与 MCP 服务端的连接,实现协议客户端逻辑,主要能力包括:

  • 协议版本协商,保障与服务端兼容
  • 能力协商,确认双方可用功能
  • 消息传输与 JSON-RPC 通信
  • 工具发现与调用执行
  • 资源访问与管理
  • 交互提示词系统

可选扩展能力:

  • 根路径管理
  • 采样能力支持
  • 同步、异步双模式操作

传输方式:

  • 标准输入输出传输:适用于进程间通信
  • 基于 Java 原生 HttpClientSSE 客户端传输
  • 基于 WebFluxSSE 客户端传输:适配响应式 HTTP 流式场景

Java SDK 实现了协议的客户端部分:

服务端

MCP 服务端为架构基础组件,向客户端提供工具、资源与各项能力,实现协议服务端逻辑,

主要职责:

  • 实现服务端协议相关逻辑
  • 对外暴露工具并支持工具发现
  • 基于URI实现资源管理与访问
  • 提供并处理提示词模板
  • 与客户端进行能力协商
  • 结构化日志与消息通知
  • 多客户端并发连接管理
  • 同步、异步API兼容

支持的传输方式:

  • 标准输入输出(STDIO)、流式 HTTP、无状态流式 HTTPSSE

Java MCP 服务端架构:

1.3.2 会话层(中层)

管控通信模式与连接状态:

  • McpSession:会话管理核心接口
  • McpClientSession:客户端专属会话实现
  • McpServerSession:服务端专属会话实现

1.3.3 传输层(底层)

负责消息传输与序列化:

  • McpTransport :实现 JSON-RPC 消息的序列化与反序列化
  • 支持多种传输方案:标准输入输出(STDIO)、HTTP/SSE、流式 HTTP
  • 为上层所有通信能力提供底层支撑

2. Spring AI 集成 MCP

Spring AI 全面兼容 MCP,通过专属 Spring Boot 启动器与 MCP Java 注解提供完整能力,大幅降低开发门槛,助力搭建可无缝对接外部系统的高级 AI 应用。

Spring 开发者可参与 MCP 生态的两端开发:

  • 构建调用 MCP 服务端的 AI 应用
  • 搭建 MCP 服务端,将基于 Spring 开发的服务对外开放给整个 AI生态。

2.1 客户端 Starters

包含:

  • spring-ai-starter-mcp-client:核心 Starter,支持 STDIO、基于 ServletStreamable‑HTTP、无状态
    Streamable‑HTTPSSE
  • spring-ai-starter-mcp-client-webflux:基于 WebFluxStreamable‑HTTP、无状态 Streamable‑HTTPSSE 传输实现

2.2 服务端 Starters

标准输入输出(STDIO):

服务器类型 依赖 配置属性
标准输入输出(STDIO) spring-ai-starter-mcp-server spring.ai.mcp.server.stdio=true

WebMVC

服务器类型 依赖 配置属性
SSE WebMVC spring-ai-starter-mcp-server-webmvc spring.ai.mcp.server.protocol=SSE 或留空
Streamable-HTTP WebMVC spring-ai-starter-mcp-server-webmvc spring.ai.mcp.server.protocol=STREAMABLE
Stateless Streamable-HTTP WebMVC spring-ai-starter-mcp-server-webmvc spring.ai.mcp.server.protocol=STATELESS

WebMVC (响应式):

服务器类型 依赖 配置属性
SSE WebFlux spring-ai-starter-mcp-server-webflux spring.ai.mcp.server.protocol=SSE 或留空
Streamable-HTTP WebFlux spring-ai-starter-mcp-server-webflux spring.ai.mcp.server.protocol=STREAMABLE
Stateless Streamable-HTTP WebFlux spring-ai-starter-mcp-server-webflux spring.ai.mcp.server.protocol=STATELESS

2.3 MCP 注解

除代码编程方式外,Spring AI 提供注解模块 ,支持通过注解快速编写 MCP 客户端与服务端逻辑。该方案采用声明式编程模型,简化 MCP 功能的开发与注册。

核心能力:

  • 通过简易注解快速创建 MCP 工具、资源、提示词
  • 以声明式方式处理客户端通知与请求
  • 减少样板代码,提升项目可维护性
  • 自动为工具参数生成 JSON 结构定义
  • 支持获取特殊参数与上下文信息

主要注解与组件:

  1. 服务端注解@McpTool@McpResource@McpPrompt@McpComplete
  2. 客户端注解@McpLogging@McpSampling@McpElicitation@McpProgress
  3. 特殊参数类McpSyncServerExchangeMcpAsyncServerExchangeMcpTransportContextMcpMeta
  4. 自动扫描:支持注解扫描,可自定义扫描/排除指定包路径
  5. Spring Boot 适配 :与 MCP启动器无缝结合

2.4 相关参考文档

相关推荐
X54先生(人文科技)1 小时前
ELR-SELLM 碳硅光阴协同演进系统架构文档
人工智能·深度学习·系统架构·开源协议
继续商行1 小时前
性能优化的工程美学与极致追求
人工智能
超梦dasgg1 小时前
详细讲解 AI 上下文(Context)
人工智能·状态模式
救救孩子把1 小时前
87-机器学习与大模型开发数学教程-8-5 微分方程与神经微分方程(Neural ODEs)
人工智能·机器学习
完成大叔1 小时前
模块二,Agent个性化模式的价值呈现
人工智能
Shan12051 小时前
机器学习之平均精确率均值(Average Precision)
人工智能·机器学习·均值算法
共享家95271 小时前
Skill的概述与使用
人工智能·学习·openclaw
`流年づ1 小时前
人工智能学习笔记-KNN
人工智能·笔记·学习
极客先躯1 小时前
高级java每日一道面试题-2026年01月19日-实战篇[Docker]-如何配置镜像仓库的垃圾回收 (GC)?
java·运维·docker·容器