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

Spring AI(11)——SSE传输的MCP服务端

WebMVC的服务器传输

支持SSE(Server-Sent Events) 基于 Spring MVC 的服务器传输和可选的STDIO运输

导入jar

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

 服务类

该类中定义需要对外提供的调用的函数方法,本例仅为测试使用,没有实际意义。

package com.renr.springainew.mcpserver;import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;@Slf4j
@Service
public class NameMcpServer {@Tool(description = "根据孩子的出生日期和性别起名")public String childName(@ToolParam(description = "出生日期") String birth,@ToolParam(description = "性别") String gender) {log.info(birth, gender);return "老任与码";}
}

其中@Tool用与描述方法的作用,@ToolParam用于描述参数的作用。这些内容描述的越详细,大模型选择该工具的可能性越大。

配置类

用于向MCP客户端公开函数工具

package com.renr.springainew.config;import com.renr.springainew.mcpserver.NameMcpServer;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MyServerConfig {@Beanpublic ToolCallbackProvider nameTool(NameMcpServer nameMcpServer) {return MethodToolCallbackProvider.builder().toolObjects(nameMcpServer).build();}}

MCP 服务器支持四种主要功能类型,可以单独启用或禁用:

  • 工具 - 启用/禁用工具功能spring.ai.mcp.server.capabilities.tool=true|false
  • 资源 - 启用/禁用资源功能spring.ai.mcp.server.capabilities.resource=true|false
  • 提示 - 启用/禁用提示功能spring.ai.mcp.server.capabilities.prompt=true|false
  • 完成 - 启用/禁用完成功能spring.ai.mcp.server.capabilities.completion=true|false

默认情况下,所有功能均处于启用状态。禁用功能将阻止服务器注册和向客户端公开相应的功能。

本例仅配置了函数工具

yml配置


spring:ai:mcp:server:name: name-mcp-serverversion: 1.0.0type: SYNCserver:port: 8088

启动服务端

MCP客户端连接服务端

MCP客户端的使用,参考Spring AI(9)——MCP客户端-CSDN博客

导入jar

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

客户端的yml配置

spring:ai:zhipuai:api-key: XXXXXXXXXchat:options:model: glm-4-flashtemperature: 0.7mcp:client:name: my-mcp-clientversion: 1.0.0request-timeout: 10stype: syncsse:connections:server2:url: http://localhost:8088sse-endpoint: /sse

启动客户端并测试

输出

WebFlux的服务器传输

支持SSE(Server-Sent Events) 基于 Spring WebFlux 的服务器传输和可选的STDIO运输

导入jar

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

注意:由于使用WebFlux,springboot项目必须删除spring-boot-starter-web的依赖

yml配置


spring:ai:mcp:server:name: name-mcp-serverversion: 1.0.0type: SYNCserver:port: 8088

启动服务端

切记,pom中一定要删除spring-boot-starter-web的依赖

 启动日志中可以看到,webflux使用netty做服务器

MCP客户端连接服务端

导入jar

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

yml配置

spring:ai:zhipuai:api-key: XXXXXXXXXchat:options:model: glm-4-flashtemperature: 0.7mcp:client:name: my-mcp-clientversion: 1.0.0request-timeout: 10stype: syncsse:connections:server2:url: http://localhost:8088sse-endpoint: /sse

启动客户端测试 

测试结果与使用WebMvc服务器的一致,不再赘述

相关文章:

  • 智慧供水运维管理系统
  • RMSE可以融合均值与标准差
  • DFORMER: RETHINKING RGBD REPRESENTATION LEARNING FOR SEMANTIC SEGMENTATION 论文浅析
  • [科研理论]机器人路径规划算法总结及fast_planner经典算法解读
  • 管易云OMS系统对接流程
  • 残月个人拟态主页
  • 如何做好一份技术文档?(下篇)
  • ResolverActivity 优先级
  • 使用Hutool工具进行rsa加密解密示例:
  • 区间动态规划
  • 深度学习之模型压缩三驾马车:基于ResNet18的模型剪枝实战(1)
  • 使用ArcPy进行栅格数据分析(2)
  • 【时时三省】(C语言基础)多维数组名作函数参数
  • 树莓派超全系列教程文档--(55)如何使用网络文件系统NFS
  • Symbol as Points: Panoptic Symbol Spotting via Point-based Representation
  • 【Redis】Redis 的常见客户端汇总
  • 《Sora模型中Transformer如何颠覆U-Net》
  • SpringBoot3项目架构设计与模块解析
  • 制作官网水平导航栏
  • Grafana-ECharts应用讲解(玫瑰图示例)
  • 做传销网站违法吗/北仑seo排名优化技术
  • 网站开发 java/网络新闻发布平台发稿
  • 网站标题设置/网站友情链接的好处
  • 宁波汽车网站建设/接广告的平台
  • 网站建设教程免费夕滋湖南岚鸿官网/百度网站大全旧版
  • 优化网站的软件下载/广告软文范例大全100