天气信息MCP服务器

一个基于Quarkus的模型上下文协议(MCP)服务器,通过国家气象局API提供天气信息和警报服务,适用于AI模型集成和实时天气数据获取。

  • by waqasdilawar
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 waqasdilawar/mcp-server-quarkus

使用说明

气象MCP服务器

基于Quarkus的模型上下文协议(MCP)服务器,使用美国国家气象局API提供天气信息。

什么是模型上下文协议(MCP)?

模型上下文协议(MCP)是一种标准化协议,允许AI模型发现和使用外部工具。该项目实现了一个MCP服务器,该服务器提供可由AI模型或其他MCP客户端调用的天气预报和警报工具。 服务器使用Quarkiverse MCP服务器扩展将工具作为标准MCP API公开,使人工智能系统更容易访问实时天气数据。

提供的天气工具

此服务器提供两个主要工具:

  1. getAlerts -检索指定美国州的活动天气警报
   {
     "name": "getAlerts",
     "arguments": {
       "state": "CA"  // Two-letter US state code
     }
   }
  1. getForecast -检索地理位置的天气预报
   {
     "name": "getForecast",
     "arguments": {
       "latitude": 37.7749,  // Latitude coordinate
       "longitude": -122.4194  // Longitude coordinate
     }
   }

项目结构

  • 包含使用注释的工具定义的主类 Weather.java``@Tool
  • REST客户端与美国国家气象局API通信 WeatherClient.java
  • 将原始API响应格式化为可供人阅读的文本 WeatherFormatter.java
  • API响应的模型类(警报、预测等)

入门指南

先决条件

  • Java 24或更新版本
  • Maven(用于建筑)
  • JBang(用于与MCP检查器一起运行)
  • Node.js与npm(用于MCP检查器)

使用Maven运行

# Build and package as uber-jar
./mvnw package
java -jar target/mcp-server-1.0.0-SNAPSHOT-runner.jar

与JBang一起跑步

此项目配置为与JBang一起使用,以便于执行。application.properties包括构建可以用JBang运行的uber jar的配置:

# Build the uber-jar
./mvnw package

# Run with JBang
jbang org.devgurupk:mcp-server:1.0.0-SNAPSHOT:runner

MCP检验员测试

您可以使用模型上下文协议检查器来测试MCP服务器并与之交互:

  npx @modelcontextprotocol/inspector

将此添加到参数中: --quiet org.devgurupk:mcp-server:1.0.0-SNAPSHOT:runner

默认情况下,服务器在根路径()处公开MCP端点,如application.properties中配置的: /

quarkus.mcp.server.sse.root-path=/
## Configuration Options
The application.properties file contains important configurations:
``` properties
# Follow redirects from the weather API
quarkus.rest-client.follow-redirects=true

# Package as uber-jar for JBang compatibility
quarkus.package.jar.type=uber-jar

# Logging configuration
quarkus.log.file.enable=true
quarkus.log.file.path=weather-quarkus.log

# MCP server configuration
quarkus.mcp.server.sse.root-path=/

如果需要更详细的日志,请取消对application.properties中的调试选项的注释:

# Debug logging options
#quarkus.log.level=DEBUG
#quarkus.mcp.server.traffic-logging.enabled=true
#quarkus.mcp.server.traffic-logging.text-limit=100

技术细节

  • 框架:Quarkus 3.22.3
  • Java版本:Java 23
  • MCP实施:Quarkiverse MCP服务器1.0.0
  • API来源:国家气象局(api.Weather.gov)
  • 关键库:
    • 带Jackson的Quarkus REST客户端
    • Quarkus Qute模板
    • Quarkiverse MCP服务器(标准IO模式)

生产大楼

优步JAR(推荐给JBang)

./mvnw package -Dquarkus.package.jar.type=uber-jar

优步罐是在 target/mcp-server-1.0.0-SNAPSHOT-runner.jar

本机可执行文件(可选)

# Native build with GraalVM installed
./mvnw package -Dnative

# Or using containers if GraalVM is not installed
./mvnw package -Dnative -Dquarkus.native.container-build=true

运作原理

该项目使用模型上下文协议来公开天气数据工具:

  1. 标记中的注释方法作为可通过MCP API获得的工具 @Tool``Weather.java
  2. 注释描述了每个工具所需的参数 @ToolArg
  3. 与美国国家气象局API的接口 WeatherClient
  4. 该类为人类可读性格式化响应 WeatherFormatter
  5. Quarkus MCP Server扩展提供了允许MCP客户端发现和使用工具的服务器实现

当像Inspector这样的MCP客户端连接时,它会收到一份包含可用工具及其描述的列表,然后可以使用适当的参数按名称调用它们。