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

SpringAI学习笔记-MCP服务器简单示例

模型上下文协议(MCP)是一种标准化协议,支持AI模型通过结构化方式与外部工具及资源进行交互。该协议支持多种传输机制,以在不同环境中提供灵活性、便捷性。
MCP服务器是MCP架构中的基础组件,负责为客户端提供工具、资源及能力支持。该服务器实现协议的服务端部分。
  • 核心职责包括:
    • 服务端协议操作实现 :处理协议交互逻辑。
    • 工具暴露与发现 :通过标准化接口提供可调用的外部工具(如函数/API)。
    • 基于URI的资源管理 :支持文件、数据库等本地资源的安全访问。
    • 提示模板提供与处理 :管理预定义的Prompt模板并动态注入上下文。
    • 能力协商 :与客户端协商支持的功能范围(如同步/异步模式)。
    • 结构化日志与通知 :记录操作日志并推送状态变更事件。
    • 多客户端并发管理 :支持高并发连接与会话隔离。
    • 同步与异步API支持 :适配不同场景的调用需求。
  • 传输实现 :
    • 基于标准输入/输出的传输(适用于进程间通信)。
    • 基于Servlet的SSE服务端传输(支持事件流HTTP响应)。
    • 基于WebFlux的响应式SSE传输(用于异步HTTP流式处理)。
    • 基于WebMVC的Servlet SSE传输(兼容传统HTTP流式交互)。
MCP服务器简单示例
  • 项目依赖

    <dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</artifactId></dependency>
    </dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-M7</version><type>pom</type><scope>import</scope></dependency></dependencies>
    </dependencyManagement>
    
  • 项目配置

    spring:profiles:active: devapplication:name: ai-demo-mcp-servermain:allow-bean-definition-overriding: trueai:mcp:server:enabled: truename: ai-demo-mcp-servertype: SYNC  # ASYNC / SYNCversion: 1.0.0resource-change-notification: trueprompt-change-notification: truetool-change-notification: trueserver:port: 10102
    
  • 项目代码

    • @Tool 注解用于标记这个方法是一个工具方法,并为其提供了名称和描述。
    @Service
    public class DemoService {@Tool(name = "addInteger", description = "计算两个整数的和")public String addInteger(@ToolParam(description = "整数1") Integer param1, @ToolParam(description = "整数2") Integer param2) {return String.format("%d + %d = %d", param1, param2, param1 + param2);}@Tool(description = "计算两个小数的和")public String addDouble(@ToolParam(description = "小数1") Double param1, @ToolParam(description = "参数2") Double param2) {return String.format("%f + %f = %f", param1, param2, param1 + param2);}}
    
    • 配置一个ToolCallbackProvider实例。将服务中的工具方法暴露给MCP服务器,使其能够通过标准化的接口被外部调用。
    @Configuration
    public class McpServerConfiguration {@Beanpublic ToolCallbackProvider demoTools(DemoService demoService) {return MethodToolCallbackProvider.builder().toolObjects(demoService).build();}}
    
  • 通过上述配置和代码,即可搭建一个简单的MCP服务器示例,用于暴露服务,供外部使用的工具。

http://www.dtcms.com/a/270146.html

相关文章:

  • 软考(软件设计师)数据库原理-SQL
  • HTML+JS+CSS制作一个数独游戏
  • CSS揭秘:9.自适应的椭圆
  • 记一次mount point is busy问题排查
  • 数据结构 —— 栈(stack)在算法思维中的巧妙运用
  • C++进阶—二叉树进阶
  • 笔记/TCP/IP四层模型
  • Fence-音视频设备资源同步
  • IT 技术领域创作者三周年纪念日
  • 【CodeTop】每日练习 2025.7.8
  • Java 阻塞队列:7种类型全解析
  • 起重机械的工作循环门限值计算逻辑
  • 容器技术入门与Docker环境部署
  • Ntfs!LfsRestartLogFile函数分析之两次调用Ntfs!LfsReadRestart函数的目的
  • (生活比喻-图文并茂)http2.0和http3.0的队头阻塞,http2.0应用层解决,TCP层存在,3.0就是彻底解决,到底怎么理解区别???
  • AI健康小屋“15分钟服务圈”:如何重构社区健康生态?
  • MyBatis-Plus:深入探索与最佳实践
  • C#,js如何对网页超文本内容按行拆分,选择第A-B个字符返回HTM?
  • stack_queue扩展学习 --- 反向迭代器
  • 戴尔3670装win11和ubuntu双系统踩坑教程
  • 自动驾驶传感器的标定与数据融合
  • 【Android】组件及布局介绍
  • CAN主站转Modbus TCP网关:高铁门控系统的“毫秒级响应”密码
  • 【ZYNQ Linux开发】BRAM的几种驱动方式
  • 微服务集成snail-job分布式定时任务系统实践
  • Mac安装Docker(使用orbstack代替)
  • 单机分布式一体化数据库的架构设计与优化
  • 一个猜想不等式的推广
  • 业务分析技术实践篇
  • kafka集群安装