天气数据服务

一个基于AccuWeather API和MCP协议的天气数据服务,提供天气查询和集成功能。

  • by JonJam
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 JonJam/weather-mcp

使用说明

accuweath mcp

设置

  • 在系统中定义以下环境变量
export ACCUWEATHER_API_KEY=replace-with-your-api-key
  • 定义a application-local.yaml 在 src/main/resources/application.yaml 内容如下:
logging:
  console:
    enabled: true

跑

  • 与一起跑步 SPRING_PROFILES_ACTIVE=local ./gradlew bootRun

测试

备注:如果启用Java调试器,它将产生输出到标准输出,这将触发stdio MCP协议中的错误。

MCP检查员

用以下方式进行测试 MCP检查员,从repo的根目录运行以下命令:

npx @modelcontextprotocol/inspector -e 'JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005' java -jar "build/libs/accuweather-mcp-local-snapshot.jar"

这源于此 博客。

AI聊天(克劳德,光标)

  1. 将此配置添加到MCP设置中:
{
  "mcpServers": {
    "accuweather-mcp": {
      "command": "PATH_TO_JAVA",
      "args": ["-jar", "ABSOLUTE_PATH_TO_REPO/build/libs/accuweather-mcp-local-snapshot.jar"],
      "env": {
        "ACCUWEATHER_API_KEY": "API_KEY"
      }
    }
  }
}

如果您正在使用SDKMAN, command 应 ~/.sdkman/candidates/java/current/bin/java

这来源于 MCP文件.

示例用户提示:

Use the accuweather-mcp to look up the current weather in Manchester, UK.

码头工人

该项目使用 Jib Gradle插件 构建Docker镜像。

  • 构建镜像并将其加载到本地Docker守护进程中:
./gradlew jibDockerBuild

默认图像名称为 jonjam/accuweather-mcp.

要将docker镜像与MCP Inspector一起使用,命令如下:

npx @modelcontextprotocol/inspector docker run --rm -i --env "ACCUWEATHER_API_KEY=$ACCUWEATHER_API_KEY" jonjam/accuweather-mcp:latest

模式和实践

有关此项目的模式和实践的更多信息,请参阅AGENTS.md。

Git

此项目使用 语义释放 自动化版本控制、变更日志生成和发布。

重要提示: 旨在触发发布的提交消息必须根据 常规提交 标准。例如:

  • feat: add new forecast endpoint
  • fix: correct hourly forecast time calculation

无瑕

该项目使用Spotless Gradle插件来强制执行一致的Java风格。

  • ./gradlew spotlessApply --格式化源代码并修复样式问题。
  • ./gradlew spotlessCheck --在不更改文件的情况下验证格式。

代码检查

静态分析和更广泛的代码质量检查由Checkstyle使用基于谷歌风格的配置(格式委托给Spotless)进行处理:

  • ./gradlew checkstyleMain --在主要来源上运行Checkstyle。
  • ./gradlew checkstyleTest --在测试源上运行Checkstyle。

主控程序

MCP注册表

此服务器已发布到 MCP注册表.

当使用支持注册表的MCP客户端(例如Cursor、Claude Desktop)时,您可以添加 io.github.jonjam/accuweather-mcp 从注册表,并将AccuWeather API密钥配置为 ACCUWEATHER_API_KEY 环境变量。

未来的改进

  • 基于以下内容改进网关类中的错误处理 AccuWeather状态代码
  • 为AccuWeather API调用添加内存缓存,该调用根据 过期头
  • 在工具中添加指定所需度量(即摄氏度或华氏度)的功能
  • 基于以下内容的端到端集成测试 Spring AI示例