SpringBoot MCP 入门使用

随着AI的火爆,最近发现MCP在未来确实大有可为,作为一名javaer怎么可以落后在历史洪流呢,根据官网和cursor也从零开始体验一下自定义mcp server。以后可以根据自己业务场景做出各种适合自身业务的工具。
至于什么是MCP 可以到https://modelcontextprotocol.io/introduction看看,里面有非常详细的介绍,这里就不赘述了。
下面开始我们自己的第一个mcp server,按照各种demo 我这里也以获取当前天气和报警信息作为demo,这里会提供两个工具:

  • 根据经纬度获取天气,获取天气后会返回一个token信息
  • 根据token信息获取天气报警
    那下面开始我们的开发

第一步 初始化pom

新建项目,并且引入spirng-ai

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

第二步 编写tools

getWeatherForecastByLocation:这里也是根据官方demo信息进行稍微改造,在获取天气的时候除了经纬度入参外,还需要传入一个期望值,这个值可选范围为aa和hh,主要是mock一些业务场景下入参是枚举类型的场景。
getAlerts:模拟业务场景中有流程上数据依赖的场景,这里的token入参信息是从第一步中获取的


@Service
public class WeatherService {/*** Get forecast for a specific latitude/longitude** @param latitude  Latitude* @param longitude Longitude* @return The forecast for the given location* @throws RestClientException if the request fails*/@Tool(description = "根据经纬度获取当前天气,expectValue可选值为[\"aa\",\"hh\"]")public String getWeatherForecastByLocation(@ToolParam(required = true, description = "请输入精度") double latitude,@ToolParam(required = true, description = "请输入纬度")double longitude, @ToolParam(required = true, description = "请输入期望值") String expectValue) throws Exception {if (!"hh".equals(expectValue)) {throw new IllegalArgumentException("无效的期望值,可选值为如下: [\"aa\",\"hh\"]");}return "当前经纬度为 " + latitude + ":" + longitude + ", 会下雨哦 记得带伞,token=9527";}/*** Get alerts for a specific area** @param state Area code. Two-letter US state code (e.g. CA, NY)* @return Human readable alert information* @throws RestClientException if the request fails*/@Tool(description = "获取地区的天气预警信息")public String getAlerts(String state, @ToolParam(required = true, description = "请输入token") String token) {Assert.isTrue("9527".equals(token), "无效的token值");return "请不要随意出门" + state;}}

第三步 启动服务

第四步 配置cursor

这里使用cursor作为mcp client,在设置中添加上这里添加的mcp工具,这里选择的是sse协议
在这里插入图片描述
选择完成后,看到天气左边的小绿点表示连接成功了

第五步 使用

这里就按照正常的咨询场景,问一下杭州的天气,大模型就会根据当前的mcp server工具和需要的入参进行判断,发现天气这个server入参需要经纬度信息,于是就会自动获取城市对应的经纬度信息,并且调用天气这个mcp工具
在这里插入图片描述
在程序上我们写死了expectValue可选值为aa和hh,当第一次获取失败时会自动替换下一个值
在这里插入图片描述
!](https://i-blog.csdnimg.cn/direct/df393162d6934a58a0a8debc666a5892.png)

第二次访问的时候就正常了,不得不说大模型真溜了,返回值信息给出了token信息了,大模型还贴心的调用了天气预警信息,
在这里插入图片描述
不仅智能识别出了token参数,而且还会根据返回的信息给出适合的建议,不得不说真的是人工智能了。

总结

以上demo信息已经放到git:https://github.com/cmlbeliever/my-weather-mcp
如果对你有用,请给个star。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34094.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@Autowired和@Resource的区别是?

前情回顾 正确使用Autowired Autowired 注解在构造器上的使用规则&#xff08;字段注入也挺好的&#xff09; 正确使用Resource 来源不同 Autowired的“爹”是Spring Resource的“爹”是Java&#xff08;JSR-250&#xff09; 这是一个规范&#xff0c;Spring对这个注解进行…

3.9/Q2,Charls最新文章解读!

文章题目&#xff1a;Association between remnant cholesterol and depression in middle-aged and older Chinese adults: a population-based cohort study DOI&#xff1a;10.3389/fendo.2025.1456370 中文标题&#xff1a;中国中老年人残留胆固醇与抑郁症的关系&#xff1…

无再暴露源站!群联AI云防护IP隐匿方案+防绕过实战

一、IP隐藏的核心原理 群联AI云防护通过三层架构实现源站IP深度隐藏&#xff1a; 流量入口层&#xff1a;用户访问域名解析至高防CNAME节点&#xff08;如ai-protect.example.com&#xff09;智能调度层&#xff1a;基于AI模型动态分配清洗节点&#xff0c;实时更新节点IP池回…

项目开发 1-确定选题,制作原型

一、AI问答 问&#xff1a; 作为计算机专家&#xff0c;密码学家&#xff0c;给研究生一年级学生设计20个实践项目&#xff0c;具体要求如下&#xff1a; 一. 总体要求 必须使用 Linux 系统调用&#xff0c;要求使用文件I/O,多进程或多线程&#xff0c;一定要用到 Socket 系统…

使用SetupTools 管理你的项目打包工作

Setuptools 是一个用于 Python 的包管理工具&#xff0c;主要用于构建、打包和分发 Python 软件包。它是 distutils 的增强版&#xff0c;提供了更多的功能和灵活性&#xff0c;是 Python 包管理的核心模块之一。 功能与特点 依赖管理&#xff1a;Setuptools 提供了强大的依赖…

人工智能与人的智能,改变一生的思维模型【8】逆向思维

逆向偏差思维模型&#xff1a;顶尖高手如何「反常识」破局 &#xff08;斯坦福决策科学中心认证的逆向思考框架&#xff09; 一、直击本质&#xff1a;什么是逆向偏差思维&#xff1f; 定义&#xff1a; 逆向偏差思维是一种主动对抗本能认知倾向的决策模式&#xff0c;通过系…

YOLO优化之扫描融合模块(SimVSS Block)

研究背景 在自动驾驶技术快速发展的背景下,目标检测作为其核心组成部分面临着严峻挑战。 驾驶场景中目标尺度和大小的巨大差异 ,以及 视觉特征不显著且易受噪声干扰 的问题,对辅助驾驶系统的安全性构成了潜在威胁。 传统的卷积神经网络(CNN)虽然在目标检测领域取得了显著…

(全)2024下半年真题 系统架构设计师 综合知识 答案解析01

系统架构设计师第二版教程VIP课程https://edu.csdn.net/course/detail/40283 操作系统 下列选项中不能作为预防死锁措施的是 。 A. 破坏“循环等待"条件 B. 破坏“不可抢占”条件 C. 破坏“互斥”条件 D. 破坏“请求和保持”条件 答案&#xff1a;C 解析&…

通义万相 2.1 + 蓝耘算力,AI 视频生成的梦幻组合

在这个科技日新月异的时代&#xff0c;人工智能不断刷新着我们对世界的认知。一次偶然的机会&#xff0c;我借助北京蓝耘科技股份有限公司提供的算力支持&#xff0c;踏上了使用通义万相 2.1 进行 AI 视频生成的奇妙之旅。 目录 1.1初遇蓝耘科技&#xff1a; 1.2通义万相 2.1…

链表·简单归并

cur->next la; //将 p指针所指向的链表节点的 next 指针&#xff08;也就是 p 节点的下一个节点的指针&#xff09;指向 l1 所指向的链表节点。简单来说&#xff0c;就是把 la 节点连接到 p 节点的后面&#xff0c;更新了链表的连接关系。 p la; //将p指针的值更新为 la …

kmp报错→Cannot find skiko-windows-x64.dll.sha256

1、前言 学习kmp&#xff08;Kotlin MultiPlatform简称&#xff09;过程中报了错误&#xff0c;这个报错在直接运行desktop的main方法才会出现&#xff0c;用gradle运行却不会报错&#xff0c;新建的kmp项目也不会出现&#xff0c;我学习的写了一些代码的项目才会出现。   运…

MySQL(事物下)

目录 一 多版本并发控制&#xff08; MVCC &#xff09;是一种用来解决 读-写冲突 的无锁并发控制 1. 前置知识 示例&#xff1a; 二 Read View 1. 当事物进行快照读(读历史数据)会MySQL会创建一个Read Vidw类对象&#xff0c;用来记录和当前一起并发的事物(活跃的事物)&a…

星型组网模块的两种交互方式优缺点解析

星型组网模块简介 星型组网模块工作在433MHz频段&#xff1b;星型组网模块集主机&#xff08;协调器&#xff09;、终端为一体&#xff0c;星型组网模块具有长距离、高速率两种传输模式&#xff0c;一个主机&#xff08;协调器&#xff09;支持多达200个节点与其通讯&#xff0…

IMX6ULL学习整理篇——UBoot的一些基础知识(1.编译流程)

前言 笔者整理了最近刷IMX6ULL的一些学习笔记&#xff0c;这里打算稍微整理一下东西发上来作为作为一个补充 正文 大部分而言&#xff0c;当我们拿到源码的时候&#xff0c;一般都是——先使用make来生成一份针对我们目标开发板的配置。举个例子&#xff0c;正点原子针对他们…

docker桌面版启动redis,解决无法连接

docker run -d --name redis -p 6379:6379 -v E:\2\redis\redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf 在本地创建一个目录&#xff0c;里面有个redis.conf文件&#xff0c;内容如下&#xff0c;启动时绑定这个配置文件目…

2025-03-15 学习记录--C/C++-PTA 习题3-3 出租车计价

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题3-3 出租车计价 本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下&#xff1…

《C++ Primer》学习笔记(二)

第二部分&#xff1a;C标准库 1.为了支持不同种类的IO处理操作&#xff0c;标准库定义了以下类型的IO&#xff0c;分别定义在三个独立的文件中&#xff1a;iostream文件中定义了用于读写流的基本类型&#xff1b;fstream文件中定义了读写命名文件的类型&#xff1b;sstream文件…

数据类设计_图片类设计之6_混合图形类设计(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论混合图形类设计 方法论-现在能做什么 这段属于聊天内容---有句话是这么说的&#xff1a;不要只埋头拉车&#xff0c;还要抬头看路。写代码也是…

招聘信息|基于SprinBoot+vue的招聘信息管理系统(源码+数据库+文档)

招聘信息管理系统 目录 基于SprinBootvue的招聘信息管理系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 5.3企业后台管理模块 5.4用户后台管理模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、…

【软件】免费的PDF全文翻译软件,能保留公式图表的样式

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 很多PDF全文翻译软件都是收费的&#xff0c;而划线翻译看着又很累。这个开源的PDF全文翻译软件非常好用&#xff0c;并且能够保留公式、图表、目录和注…