欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 深入探究 MCP Spring Boot Server:构建强大的天气信息服务系统

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

2025/4/2 11:17:04 来源:https://blog.csdn.net/I_Am_Zou/article/details/146687907  浏览:    关键词:深入探究 MCP Spring Boot Server:构建强大的天气信息服务系统

在当今数字化时代,高效、灵活且功能强大的服务端开发至关重要。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 克隆项目仓库

首先,通过以下命令克隆项目仓库:

 

git clone https://github.com/yourusername/mcp-springboot-server.git

cd mcp-springboot-server

3.2 构建项目

使用 Maven 构建项目,执行以下命令:

 

mvn clean install

该命令会清理项目中的旧文件,并将项目依赖下载到本地仓库,然后进行编译和打包。

3.3 运行应用程序

构建完成后,使用以下命令启动应用程序:

mvn spring-boot:run

应用程序默认会在端口 8080 启动。如果需要修改端口,可以在application.properties文件中进行配置。

四、项目配置详解

4.1 主配置文件

项目的主要配置属性位于application.properties文件中,常见的配置如下:

 

server.port=8080

spring.application.name=mcp-demo

spring.ai.mcp.server.enabled=true

server.port用于指定应用程序的运行端口;

spring.application.name设置应用程序的名称;

spring.ai.mcp.server.enabled用于启用 MCP 服务器。

4.2 MCP 服务器配置

在application.properties文件中,还包含了 MCP 服务器的详细配置:

 

# 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,示例代码如下:

 

@Configuration

public class McpServerConfig {

@Bean

public ToolCallbackProvider autoRegisterTools(ApplicationContext applicationContext) {

// 获取所有带有@Component注解且类名以Facade结尾的bean

String[] beanNames = applicationContext.getBeanNamesForAnnotation(Component.class);

List<Object> facadeBeans = new ArrayList<>();

for (String beanName : beanNames) {

if (beanName.endsWith("Facade")) {

facadeBeans.add(applicationContext.getBean(beanName));

}

}

return MethodToolCallbackProvider.builder()

.toolObjects(facadeBeans.toArray())

.build();

}

}

该配置类通过获取所有符合条件的 Facade bean,并将其注册为 MCP 工具,实现了工具的自动注册。

五、API 文档与业务服务开发

5.1 天气服务 API

天气服务提供了以下 MCP 方法:

  • getWeather(String cityName):获取特定城市的天气信息。
  • getWeather1(String cityName):获取天气信息的另一种方法。

在测试客户端中,可以使用以下代码进行调用:

 

var transport = new HttpClientSseClientTransport("http://localhost:8080");

var client = McpClient.sync(transport).build();

5.2 业务服务开发

  1. 创建服务类并添加@MCPService注解:
 

@MCPService

@Service

public class WeatherService {

public String getWeather(String cityName) {

// 实现业务逻辑

return "Weather info for " + cityName;

}

}

  1. 使用@MCPMethod注解标记需要暴露的方法:
 

@MCPMethod(description = "获取天气信息")

public String getWeather(String cityName) {

// 方法实现

}

通过这种方式,将业务逻辑封装在服务类中,并通过注解将其暴露为 MCP 方法,方便外部调用。

六、项目结构与代码组织

项目结构如下:

 

src/

├── main/

│ ├── java/

│ │ └── com/unionhole/mcpserver/

│ │ ├── config/

│ │ ├── service/

│ │ └── McpDemoApplication.java

│ └── resources/

│ └── application.properties

└── test/

└── java/

└── com/unionhole/mcpserver/

└── ClientSseTest.java

src/main/java目录存放项目的 Java 源代码,包括配置类、服务类和主应用程序类;src/main/resources目录存放资源文件,如application.properties;src/test/java目录存放测试代码,如ClientSseTest类用于测试客户端功能。

七、项目贡献与注意事项

7.1 贡献指南

如果想为项目贡献代码,可以按照以下步骤进行:

  1. Fork 项目仓库。
  1. 创建自己的功能分支(git checkout -b feature/amazing-feature)。
  1. 提交代码变更(git commit -m 'Add some amazing feature')。
  1. 将变更推送到分支(git push origin feature/amazing-feature)。
  1. 打开 Pull Request,等待项目维护者审核和合并。

7.2 注意事项

  1. 确保正确配置 Spring AI 和 MCP 的版本,避免版本不兼容问题。
  1. 所有 Facade 类都应使用@Component注解,以便被自动注册为 MCP 工具。
  1. 建议使用@MCPMethod注解为方法提供描述信息,提高代码的可读性和可维护性。
  1. 异常处理应在服务层统一进行,确保系统的稳定性和可靠性。

八、常见问题解决

8.1 编译时出现 IllegalArgumentException

如果在编译过程中遇到java: java.lang.IllegalArgumentException错误,可以按照以下步骤解决:

  1. 打开 IntelliJ IDEA 的 Settings(Ctrl + Alt + S)。
  1. 导航到 Build, Execution, Deployment > Compiler。
  1. 在 “Build process VM options” 字段中添加:
 

-Djps.track.ap.dependencies=false

  1. 点击 Apply 和 OK。
  1. 重新构建项目。

九、总结与展望

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

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

版权声明:

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

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

热搜词