当前位置: 首页 > 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.xdnf.cn/news/1087885.html

相关文章:

  • 【UE5】虚幻引擎小百科
  • 后台设计指南:系统架构、交互规范与工具实战全流程解析
  • (C++)list列表相关基础用法(C++教程)(STL库基础教程)
  • Android T startingwindow使用总结
  • 深度剖析:向70岁老系统植入通信芯片——MCP注入构建未来级分布式通信
  • 容器技术技术入门与 Docker 环境部署
  • Flutter基础(前端教程④-组件拼接)
  • Python Web应用开发之Flask框架高级应用(三)——蓝图(Blueprints)
  • uniapp b树
  • 【LeetCode 热题 100】142. 环形链表 II——快慢指针
  • FairyGUI 实现 Boss 双层血条动画
  • Crazyflie无人机集群控制笔记(二)通过SDK实时对接Crazyswarm2及NOKOV度量动捕数据
  • jmeter 性能测试步骤是什么?
  • 代码详细注释:C语言实现控制台用户注册登录系统
  • C++进阶—二叉树进阶
  • [2025CVPR]SGC-Net:开放词汇人机交互检测的分层粒度比较网络解析
  • 【网络协议安全】任务14:路由器DHCP_AAA_TELNET配置
  • Redis基础数据结构
  • Serverless 数据库来了?无服务器数据库 vs 传统数据库有何不同?
  • 学习日记-spring-day43-7.8
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(1):新的开始-尊他开始
  • Docker企业级应用:从入门到生产环境最佳实践
  • ReactNative【实战系列教程】我的小红书 4 -- 首页(含顶栏tab切换,横向滚动频道,频道编辑弹窗,瀑布流布局列表等)
  • 论文略读:UniPELT: A Unified Framework for Parameter-Efficient Language Model Tuning
  • C++(STL源码刨析/vector)
  • PostgreSQL复制技术全解析:从物理复制到逻辑复制的实践指南
  • 从历史航拍图像中去除阴影
  • 把文件夹下所有的excle写入word文件中
  • Grok 4,来了。
  • 算法设计与分析 知识总结