当前位置: 首页 > news >正文

SpringAI(1.1.2)-MCP

官网地址:https://docs.spring.io/spring-ai/reference/api/mcp/mcp-overview.html

1、描述

MCP:模型上下文协议(Model Context Protocol)是一种标准化协议,使 AI 模型能够以结构化方式与外部工具和资源交互。可以将其视为 AI 模型与现实世界之间的桥梁——允许它们通过一致的接口访问数据库、API、文件系统和其他外部服务。它支持多种传输机制,以提供跨不同环境的灵活性。
MCP Java SDK 提供了模型上下文协议的 Java 实现,通过同步和异步通信模式,实现与 AI 模型和工具的标准化交互。

Spring AI 通过专门的 Boot Starters 和 MCP Java 注解全面支持 MCP,使得构建能够无缝连接到外部系统的复杂 AI 驱动应用程序比以往任何时候都更容易。这意味着 Spring 开发人员可以参与 MCP 生态系统的两方面——构建消费 MCP 服务器的 AI 应用程序,以及创建向更广泛的 AI 社区公开基于 Spring 的服务的 MCP 服务器。

2、MCP Java SDK架构

Java MCP 实现遵循三层架构,将关注点分离以实现可维护性和灵活性
image

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

顶层处理主要应用程序逻辑和协议操作

  • McpClient - 管理客户端操作和服务器连接
  • McpServer - 处理服务器端协议操作和客户端请求
  • 这两个组件都利用下面的会话层进行通信管理

会话层(中间层)

中间层管理通信模式并维护连接状态

  • McpSession - 核心会话管理接口
  • McpClientSession - 客户端特定会话实现
  • McpServerSession - 服务器特定会话实现

传输层(底层)

底层处理实际的消息传输和序列化

  • McpTransport - 管理 JSON-RPC 消息序列化和反序列化
  • 支持多种传输实现(STDIO、HTTP/SSE、Streamable-HTTP 等)
  • 为所有更高级别的通信提供基础

3、MCP客户端

3.1、负责建立和管理与 MCP 服务器的连接。它实现了协议的客户端部分,处理

  • 协议版本协商,以确保与服务器兼容
  • 能力协商,以确定可用功能
  • 消息传输和 JSON-RPC 通信
  • 工具发现和执行
  • 资源访问和管理
  • 提示系统交互
  • 可选功能
    • 根管理
    • 采样支持
  • 同步和异步操作
  • 传输选项
    • 用于基于进程通信的 StdIO 传输
    • 基于 Java HttpClient 的 SSE 客户端传输
    • 用于响应式 HTTP 流的 WebFlux SSE 客户端传输

image

3.2、代码示例:

pom:

       <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-client</artifactId></dependency>

项目配置文件:

# 配置本地的 mcp 服务,使用 streamable
spring.ai.mcp.client.streamable-http.connections.demo-server.url = http://localhost:8081
spring.ai.mcp.client.streamable-http.connections.demo-server.endpoint = /mcp

chatClient 配置:

    @Beanpublic ChatClient chatClient(OllamaChatModel ollamaChatModel, ToolCallbackProvider toolCallbackProvider) {return ChatClient.builder(ollamaChatModel).defaultToolCallbacks(toolCallbackProvider.getToolCallbacks()).build();}

4、MCP服务端

4.1、它向客户端提供工具、资源和功能。它实现了协议的服务器端,负责

  • 服务器端协议操作实现
    • 工具公开和发现
    • 带 URI 访问的资源管理
    • 提示模板提供和处理
    • 与客户端的能力协商
    • 结构化日志记录和通知
  • 并发客户端连接管理
  • 同步和异步 API 支持
  • 传输实现
    • Stdio、Streamable-HTTP、Stateless Streamable-HTTP、SSE
      image

4.2、代码示例:

pom:

         <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</artifactId></dependency>

配置文件:

spring.ai.mcp.server.enabled = true
spring.ai.mcp.server.protocol = streamable
spring.ai.mcp.server.name = demo-server
spring.ai.mcp.server.version = 1.0.0
spring.ai.mcp.server.type = SYNC
spring.ai.mcp.server.streamable-http.mcp-endpoint= /mcp
spring.ai.mcp.server.streamable-http.keep-alive-interval= 30s

生命工具

@Component
public class DemoTool {@McpTool(name = "getLocalTime", description = "获取当前时间")public String demo() {return DateTime.now().toMsStr();}
}

测试结果:
image

http://www.zskr.cn/news/176479.html

相关文章:

  • Markdown文档编写+PyTorch实验记录:Jupyter集成工作流搭建
  • Latent Consistency Models试用:PyTorch-CUDA-v2.7支持情况
  • 量子威胁15年内或现,比特币不改变区块大小的情况下迁移后量子地址需20年
  • 解决installing this may take a few minutes...问题:PyTorch-CUDA-v2.7镜像提速秘诀
  • PyTorch-CUDA-v2.7镜像用户案例研究:某独角兽公司降本增效实践
  • 学习率调度器选择:PyTorch-CUDA-v2.7中不同LR策略对比
  • Google Colab替代方案:自建PyTorch-CUDA-v2.7云端实验室
  • GPU利用率实时查看:nvidia-smi结合PyTorch-CUDA-v2.7使用
  • T5文本到文本迁移:PyTorch-CUDA-v2.7框架实现
  • 一汽大众汽车前束检测培训系统
  • SpringBoot从0-1集成腾讯音视频通话
  • 金融风控模型训练:PyTorch-CUDA-v2.7处理海量交易数据
  • T型与NPC型三电平SVPWM的拓扑切换与算法生成技术研究,实时优化大小扇区与时间分配,实现1...
  • 学术论文复现实验:PyTorch-CUDA-v2.7保证结果可重现
  • 指标管理的AI自治之路:衡石平台如何实现异常检测、血缘分析与智能推荐的自动化治理
  • 各模态丝滑衔接的原理和方法
  • Kaggle Notebooks性能对比:本地镜像优势明显
  • 驻场工程师派遣方案:大型项目保驾护航
  • 2026年变压器铁芯接地厂家有哪些/变压器铁芯接地公司有哪些/哪个品牌变压器铁芯接地质量好 - 品牌推荐大师1
  • GitHub Actions自动化测试:集成PyTorch-CUDA-v2.7镜像流程
  • Weights Biases对接:PyTorch-CUDA-v2.7实验跟踪全流程
  • 大模型Token免费额度申请:个人开发者福利政策
  • 高校科研团队AI基础设施建设:采用PyTorch-CUDA-v2.7统一环境
  • GPU算力计价模型比较:按小时vs按任务哪种更合理?
  • Stable Diffusion WebUI部署:基于PyTorch-CUDA-v2.7的一键脚本
  • 屹晶微 EG21814 600V耐压、3A驱动、无闭锁高性价比半桥栅极驱动器技术解析
  • IGBT双脉冲测试Matlab仿真模型:探索IGBT开关特性与电机控制器驱动测试验证
  • PyTorch-CUDA-v2.7镜像是否包含cuDNN?版本信息确认
  • x86_64、x64、amd64
  • 天池大赛环境复现:使用PyTorch-CUDA-v2.7确保一致性