SpringBoot MCP 入门使用步骤详解

 更新时间:2025年04月01日 16:45:48   作者:cmlbeliever  
这篇文章主要介绍了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,当第一次获取失败时会自动替换下一个值

第二次访问的时候就正常了,不得不说大模型真溜了,返回值信息给出了token信息了,大模型还贴心的调用了天气预警信息,

不仅智能识别出了token参数,而且还会根据返回的信息给出适合的建议,不得不说真的是人工智能了。

总结

以上demo信息已经放到git:https://github.com/cmlbeliever/my-weather-mcp

到此这篇关于SpringBoot MCP 入门使用的文章就介绍到这了,更多相关SpringBoot MCP 使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Thymeleaf对象的使用之基本对象实例解析

    Thymeleaf对象的使用之基本对象实例解析

    这篇文章主要介绍了Thymeleaf对象的使用之基本对象实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • java使用zookeeper实现的分布式锁示例

    java使用zookeeper实现的分布式锁示例

    这篇文章主要介绍了java使用zookeeper实现的分布式锁示例,需要的朋友可以参考下
    2014-05-05
  • JavaSwing BorderLayout 边界布局的实现代码

    JavaSwing BorderLayout 边界布局的实现代码

    这篇文章主要介绍了JavaSwing BorderLayout 边界布局的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 浅谈使用Maven插件构建Docker镜像的方法

    浅谈使用Maven插件构建Docker镜像的方法

    本篇文章主要介绍了浅谈使用Maven插件构建Docker镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • MybatisPlus使用Mybatis的XML的动态SQL的功能实现多表查询

    MybatisPlus使用Mybatis的XML的动态SQL的功能实现多表查询

    本文主要介绍了MybatisPlus使用Mybatis的XML的动态SQL的功能实现多表查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • java 文件上传到读取文件内容的实例

    java 文件上传到读取文件内容的实例

    今天小编就为大家分享一篇java 文件上传到读取文件内容的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Spring5.2.x 源码本地环境搭建的方法步骤

    Spring5.2.x 源码本地环境搭建的方法步骤

    这篇文章主要介绍了Spring5.2.x 源码本地环境搭建的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringBoot添加Email发送功能及常见异常详解

    SpringBoot添加Email发送功能及常见异常详解

    本篇文章主要介绍了SpringBoot添加Email发送功能及常见异常详解,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • Spring aop 如何通过获取代理对象实现事务切换

    Spring aop 如何通过获取代理对象实现事务切换

    这篇文章主要介绍了Spring aop 如何通过获取代理对象实现事务切换的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 详谈Java静态动态的问题

    详谈Java静态动态的问题

    下面小编就为大家带来一篇详谈Java静态动态的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论