您的位置:首页 > 房产 > 家装 > 广州番禺区详细地图_织梦模板首页修改_做网上推广_企业网站怎么建立

广州番禺区详细地图_织梦模板首页修改_做网上推广_企业网站怎么建立

2025/7/1 15:50:07 来源:https://blog.csdn.net/believer123/article/details/146284656  浏览:    关键词:广州番禺区详细地图_织梦模板首页修改_做网上推广_企业网站怎么建立
广州番禺区详细地图_织梦模板首页修改_做网上推广_企业网站怎么建立

随着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。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com