深入探究 MCP Spring Boot Server:构建强大的天气信息服务系统 ...

打印 上一主题 下一主题

主题 1720|帖子 1720|积分 5160



在当今数字化期间,高效、灵活且功能强大的服务端开辟至关重要。Spring Boot 作为一款流行的 Java 开辟框架,以其快速开辟、自动设置等特性深受开辟者喜爱。而 Model Context Protocol(MCP)则为构建特定领域的服务提供了便利的协议支持。本文将深入探究怎样使用 Spring Boot 构建基于 MCP 的天气信息服务系统,为读者出现一个完整的技术实践案例。
一、项目概述

1.1 项目配景与目的

随着人们对及时天气信息需求的不断增长,开辟一个稳定、高效且易于扩展的天气信息服务系统具有重要意义。本项目旨在利用 Spring Boot 和 MCP,打造一个能够通过 MCP 接口提供正确天气信息服务的服务器。
1.2 项目亮点



  • 基于 MCP 的天气服务:通过 MCP 接口,实现了灵活且标准化的天气信息获取方式。


  • RESTful API 端点:方便其他系统或客户端举行数据交互,进步了系统的可集成性。


  • Server - Sent Events(SSE)支持:为及时推送天气信息提供了技术支持,确保用户能获取最新的天气动态。


  • 自动工具注册:简化了工具设置流程,进步了开辟效率。


  • Spring Boot 3.x 集成:充分利用 Spring Boot 3.x 的新特性,提升系统性能和稳定性。
二、技术栈与情况要求

2.1 技术栈



  • JDK 17:提供了稳定的 Java 运行情况,支持最新的 Java 语言特性。


  • Maven 3.6.x 或更高版本:用于项目构建、依靠管理和项目生命周期管理。


  • Spring Boot 3.2.0 或更高版本:作为焦点框架,负责项目的快速搭建和运行。


  • Spring AI Core:为项目提供人工智能相关的底子支持。


  • Spring AI Starter MCP Server WebMVC:实现 MCP 服务器的 WebMVC 支持。


  • MCP Facade Generator:用于生成 MCP 相关的 Facade 代码,简化开辟流程。
2.2 情况要求

确保开辟情况中安装了 JDK 17 或更高版本、Maven 3.6.x 或更高版本。同时,发起使用最新版本的 Spring Boot 3.2.0 或更高版本,以获取最佳的性能和功能支持。
三、项目搭建与运行

3.1 克隆项目仓库

起首,通过以下下令克隆项目仓库:
  
  1. [/code]  git clone https://github.com/yourusername/mcp-springboot-server.git
  2.   cd mcp-springboot-server
  3.   [size=3]3.2 构建项目[/size]
  4. 使用 Maven 构建项目,执行以下下令:
  5.    [code]
复制代码
mvn clean install
  该下令会清理项目中的旧文件,并将项目依靠下载到本地仓库,然后举行编译和打包。
3.3 运行应用程序

构建完成后,使用以下下令启动应用程序:
   mvn spring-boot:run
  应用程序默认会在端口 8080 启动。如果需要修改端口,可以在application.properties文件中举行设置。
四、项目设置详解

4.1 主设置文件

项目的主要设置属性位于application.properties文件中,常见的设置如下:
  1. [/code]   server.port=8080
  2.   spring.application.name=mcp-demo
  3.   spring.ai.mcp.server.enabled=true
  4.   server.port用于指定应用程序的运行端口;
  5. spring.application.name设置应用程序的名称;
  6. spring.ai.mcp.server.enabled用于启用 MCP 服务器。
  7. [size=3]4.2 MCP 服务器设置[/size]
  8. 在application.properties文件中,还包含了 MCP 服务器的详细设置:
  9.    [code]
复制代码
# MCP服务器设置
  spring.ai.mcp.server.enabled=true
  spring.ai.mcp.server.resource-change-notification=true
  spring.ai.mcp.server.prompt-change-notification=true
  spring.ai.mcp.server.tool-change-notification=true
  spring.ai.mcp.server.name=mcp-demo-service
  spring.ai.mcp.server.version=1.0.0
  spring.ai.mcp.server.type=SYNC
  spring.ai.mcp.server.sse-message-endpoint=/mcp/messages
  这些设置项分别控制了 MCP 服务器的启用状态、资源 / 提示 / 工具变动通知、服务器名称、版本、类型以及 SSE 消息端点等。
4.3 MCP Tools 设置

通过McpServerConfig类来设置 MCP Tools,示例代码如下:
  
  1. [/code]  @Configuration
  2.   public class McpServerConfig {
  3.   @Bean
  4.   public ToolCallbackProvider autoRegisterTools(ApplicationContext applicationContext) {
  5.   // 获取所有带有@Component注解且类名以Facade结尾的bean
  6.   String[] beanNames = applicationContext.getBeanNamesForAnnotation(Component.class);
  7.   List<Object> facadeBeans = new ArrayList<>();
  8.   for (String beanName : beanNames) {
  9.   if (beanName.endsWith("Facade")) {
  10.   facadeBeans.add(applicationContext.getBean(beanName));
  11.   }
  12.   }
  13.   return MethodToolCallbackProvider.builder()
  14.   .toolObjects(facadeBeans.toArray())
  15.   .build();
  16.   }
  17.   }
  18.   该设置类通过获取所有符合条件的 Facade bean,并将其注册为 MCP 工具,实现了工具的自动注册。
  19. [size=4]五、API 文档与业务服务开辟[/size]
  20. [size=3]5.1 天气服务 API[/size]
  21. 天气服务提供了以下 MCP 方法:
  22. [list]
  23. [*]getWeather(String cityName):获取特定城市的天气信息。
  24. [/list]
  25. [list]
  26. [*]getWeather1(String cityName):获取天气信息的另一种方法。
  27. [/list] 在测试客户端中,可以使用以下代码举行调用:
  28.    [code]
复制代码
var transport = new HttpClientSseClientTransport("http://localhost:8080");
  var client = McpClient.sync(transport).build();
  5.2 业务服务开辟


  • 创建服务类并添加@MCPService注解:
  
  1. [/code]  @MCPService
  2.   @Service
  3.   public class WeatherService {
  4.   public String getWeather(String cityName) {
  5.   // 实现业务逻辑
  6.   return "Weather info for " + cityName;
  7.   }
  8.   }
  9.   [list=1]
  10. [*]使用@MCPMethod注解标记需要暴露的方法:
  11. [/list]   [code]
复制代码
@MCPMethod(description = "获取天气信息")
  public String getWeather(String cityName) {
  // 方法实现
  }
  通过这种方式,将业务逻辑封装在服务类中,并通过注解将其暴露为 MCP 方法,方便外部调用。
六、项目结构与代码组织

项目结构如下:
  
  1. [/code]  src/
  2.   ├── main/
  3.   │ ├── java/
  4.   │ │ └── com/unionhole/mcpserver/
  5.   │ │ ├── config/
  6.   │ │ ├── service/
  7.   │ │ └── McpDemoApplication.java
  8.   │ └── resources/
  9.   │ └── application.properties
  10.   └── test/
  11.   └── java/
  12.   └── com/unionhole/mcpserver/
  13.   └── ClientSseTest.java
  14.   src/main/java目录存放项目的 Java 源代码,包罗设置类、服务类和主应用程序类;src/main/resources目录存放资源文件,如application.properties;src/test/java目录存放测试代码,如ClientSseTest类用于测试客户端功能。
  15. [size=4]七、项目贡献与留意事项[/size]
  16. [size=3]7.1 贡献指南[/size]
  17. 如果想为项目贡献代码,可以按照以下步调举行:
  18. [list=1]
  19. [*]Fork 项目仓库。
  20. [/list] [list=1]
  21. [*]创建自己的功能分支(git checkout -b feature/amazing-feature)。
  22. [/list] [list=1]
  23. [*]提交代码变动(git commit -m 'Add some amazing feature')。
  24. [/list] [list=1]
  25. [*]将变动推送到分支(git push origin feature/amazing-feature)。
  26. [/list] [list=1]
  27. [*]打开 Pull Request,等候项目维护者审核和合并。
  28. [/list] [size=3]7.2 留意事项[/size]
  29. [list=1]
  30. [*]确保正确设置 Spring AI 和 MCP 的版本,避免版本不兼容问题。
  31. [/list] [list=1]
  32. [*]所有 Facade 类都应使用@Component注解,以便被自动注册为 MCP 工具。
  33. [/list] [list=1]
  34. [*]发起使用@MCPMethod注解为方法提供描述信息,进步代码的可读性和可维护性。
  35. [/list] [list=1]
  36. [*]非常处置惩罚应在服务层同一举行,确保系统的稳定性和可靠性。
  37. [/list] [size=4]八、常见问题办理[/size]
  38. [size=3]8.1 编译时出现 IllegalArgumentException[/size]
  39. 如果在编译过程中遇到java: java.lang.IllegalArgumentException错误,可以按照以下步调办理:
  40. [list=1]
  41. [*]打开 IntelliJ IDEA 的 Settings(Ctrl + Alt + S)。
  42. [/list] [list=1]
  43. [*]导航到 Build, Execution, Deployment > Compiler。
  44. [/list] [list=1]
  45. [*]在 “Build process VM options” 字段中添加:
  46. [/list]   [code]
复制代码
-Djps.track.ap.dependencies=false
  

  • 点击 Apply 和 OK。

  • 重新构建项目。
九、总结与展望

通过本文的介绍,我们深入了解了怎样使用 Spring Boot 和 MCP 构建一个功能强大的天气信息服务系统。从项目的搭建、设置到业务服务的开辟,再到常见问题的办理,为开辟者提供了一个完整的技术实践指南。盼望读者能够基于此项目,进一步探索和拓展,开辟出更多实用、高效的应用程序。同时,随着技术的不断发展,我们也等候 Spring Boot 和 MCP 能够在更多领域发挥更大的作用,为开辟者带来更多便利和创新。

github地点:https://github.com/James-Zou/mcp-springboot-server

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表