mcpField
A
AccuWeather MCP

AccuWeather MCP

ローカル
github.com/JonJam地図・旅行020 週間前に更新

AccuWeather MCP について

AccuWeather MCPは、AccuWeatherのデータを使って天気ツールを提供するサーバーです。ClaudeやCursorなどのMCPクライアント向けで、AccuWeather APIキーが必要です。

主な機能

  1. 01AccuWeatherデータを使う天気ツール
  2. 02AccuWeather APIキーの設定
  3. 03Dockerイメージのビルド
  4. 04ユニット・統合テスト

活用シーン

  1. 01地域の現在の天気を調べる
  2. 02Claudeや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 — DTO とブートストラップクラスを除く com.jonjam.accuweathermcp.* に対してミューテーションテストを実行します。
  • 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 docs を参照しています。

ユーザープロンプトの例:

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

このプロジェクトでは、Docker イメージのビルドに Jib Gradle plugin を使用します。

  • イメージをビルドし、ローカルの 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

このプロジェクトでは、一貫した Java スタイルを適用するために Spotless Gradle プラグインを使用します。

  • ./gradlew spotlessApply — ソースをフォーマットし、スタイルの問題を修正します。
  • ./gradlew spotlessCheck — ファイルを変更せずにフォーマットを検証します。
Checkstyle

静的解析と、より広範なコード品質チェックには、Google スタイルベースの設定を使用した Checkstyle を使用します(フォーマットは Spotless に委任しています)。

  • ./gradlew checkstyleMain — メインソースに対して Checkstyle を実行します。
  • ./gradlew checkstyleTest — テストソースに対して Checkstyle を実行します。
MCP
  • ツール 仕様に従って、エラー(バリデーションなど)を必ず適切に処理してください。

MCP Registry

このサーバーは MCP Registry に公開されています。

レジストリに対応した MCP クライアント(Cursor、Claude Desktop など)を使用する場合は、レジストリから io.github.jonjam/accuweather-mcp を追加し、ACCUWEATHER_API_KEY 環境変数として AccuWeather API キーを設定できます。

今後の改善

  • AccuWeather のステータスコードに基づいて、ゲートウェイクラスのエラー処理を改善する
  • expires ヘッダーに従ってデータをキャッシュする、AccuWeather API 呼び出し向けのインメモリキャッシュを追加する
  • ツールで希望する単位(摂氏または華氏など)を指定できる機能を追加する
  • Spring AI Examplesに基づくエンドツーエンドの統合テストを追加する

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。