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 相关参考文档

相关推荐
dreamread4 小时前
2026不用联网也能用的八字排盘工具怎么选:离线记录、同步和删除要分开看
人工智能·软件工具·传统文化
Vaxmzzy4 小时前
AI直播技术持续迭代 萤瓴AI探索无人直播智能化落地新路径
大数据·人工智能
jjh+++(求关注版)5 小时前
Vibe Coding 开发流程:一套可照着执行的 AI 项目开发使用说明书
人工智能
薛定e的猫咪5 小时前
在 vibe coding开发项目过程中使用过的命令和概念整理
人工智能·学习·算法·开源
OpenApi.cc5 小时前
tiktok-person-detection || tiktok-scene-detection
人工智能·深度学习·神经网络·目标检测·数据挖掘
AC赳赳老秦5 小时前
OpenClaw 合规公开数据采集入门:合法边界、数据源选型与反爬规避实操指南
大数据·人工智能·python·信息可视化·php·deepseek·openclaw
棒球1号位5 小时前
中国棒球联盟矩阵建设白皮书:解码本土化创新与国际接轨路径·棒球1号位
大数据·人工智能·矩阵
带娃的IT创业者5 小时前
赋予AI“品味”:拒绝平庸,OpenCV如何重塑生成式内容的审美边界
人工智能·opencv·计算机视觉·生成式ai·内容过滤·ai审美
ShiMetaPi5 小时前
ShiMetaPi Pico-G1:百元级黑光全彩AI ISP开发板
人工智能·嵌入式硬件·pico·isp
沈浩(种子思维作者)5 小时前
心理的研究,我从何来?
数据库·人工智能·量子计算