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

相关推荐
IT_陈寒几秒前
JavaScript项目实战经验分享
前端·人工智能·后端
vanuan1 小时前
两个AI智能体第一次对话-A2A双Agent协作实战
人工智能
吃饱了得干活1 小时前
Spring Cloud Gateway 微服务网关:路由、断言、过滤器
java·spring cloud
kfaino3 小时前
码农的AI翻身(四)你好,我叫 Attention
人工智能·后端
lwx572803 小时前
探秘InnoDB:搞懂它的内存、线程、磁盘与日志刷盘策略
java·后端
Flynt4 小时前
从Spring Boot 4.0升到4.1,我在Maven和gRPC上栽了跟头
java·spring boot·后端
雨落Re5 小时前
如何设计一个高质量Skill
人工智能
plainGeekDev5 小时前
Activity 间传值 → Navigation 参数
android·java·kotlin
Token炼金师5 小时前
大模型权重文件全指南:从格式选择到优化实战
人工智能
plainGeekDev5 小时前
onActivityResult → ActivityResult API
android·java·kotlin