mcpField
A
AccuWeather MCP

AccuWeather MCP

本地服务
github.com/JonJam地图与出行020 周前更新

关于 AccuWeather MCP

AccuWeather MCP 是使用 AccuWeather 数据提供天气工具的服务,面向 Claude、Cursor 等 MCP 客户端,并需要配置 AccuWeather API 密钥。

主要功能

  1. 01使用 AccuWeather 数据的天气工具
  2. 02配置 AccuWeather API 密钥
  3. 03支持构建 Docker 镜像
  4. 04单元与集成测试

适用场景

  1. 01查询某地当前天气
  2. 02在 Claude 或 Cursor 中调用天气工具

MCP 相关

它向 MCP 客户端提供天气工具,可在 Cursor 和 Claude Desktop 等客户端中注册。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jonjam-accuweather": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ACCUWEATHER_API_KEY",
"docker.io/jonjam/accuweather-mcp:1.4.11"
],
"env": {
"ACCUWEATHER_API_KEY": "<ACCUWEATHER_API_KEY>"
}
}
}
}
启动命令docker run -i --rm -e ACCUWEATHER_API_KEY docker.io/jonjam/accuweather-mcp:1.4.11
需要配置的环境变量
ACCUWEATHER_API_KEY密钥AccuWeather API key

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocidocker.io/jonjam/accuweather-mcp:1.4.11

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

accuweather-mcp

设置

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

运行

  • 使用 SPRING_PROFILES_ACTIVE=local ./gradlew bootRun 运行

测试

注意:如果启用 Java 调试器,它会向标准输出生成内容,从而触发 stdio MCP 协议错误。

单元测试和集成测试

单元测试和集成测试使用 mockito 和 wiremock。运行测试请使用:

./gradlew build
变异测试

本项目通过 gradle-pitest-plugin 使用 PIT 进行变异测试,以验证测试能否检测到注入的故障,并补充 JaCoCo 行覆盖率。

  • ./gradlew pitest — 对 com.jonjam.accuweathermcp.* 运行变异测试(排除 DTO 和引导类)。
  • 打开 build/reports/pitest/index.html 查看结果。存活的变异体表示代码虽被测试执行,但其中的故障无法被检测到。
MCP Inspector

若要使用 MCP Inspector 测试,请在仓库根目录运行以下命令:

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 聊天(Claude、Cursor)
  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.
Docker

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

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

默认镜像名称为 jonjam/accuweather-mcp。

若要通过 MCP Inspector 使用 Docker 镜像,命令如下:

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

模式与实践

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

Git

本项目使用 semantic-release 自动化版本管理、变更日志生成和发布。

**重要提示:**用于触发发布的提交消息必须按照 Conventional Commits 标准添加前缀。例如:

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

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

  • ./gradlew spotlessApply — 格式化源代码并修复风格问题。
  • ./gradlew spotlessCheck — 检查格式,但不修改文件。
Checkstyle

静态分析和更全面的代码质量检查由 Checkstyle 负责,使用基于 Google 风格的配置(格式化工作交由 Spotless 处理):

  • ./gradlew checkstyleMain — 对主代码源运行 Checkstyle。
  • ./gradlew checkstyleTest — 对测试代码源运行 Checkstyle。
MCP
  • 工具 请务必根据规范处理错误(即验证)。

MCP Registry

此服务已发布到 MCP Registry。

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

后续改进

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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。