mcpField
W
Weather MCP Server

Weather MCP Server

ローカル
github.com/katjes733メディア・デザイン073 週間前に更新

Weather MCP Server について

Weather MCP Serverは、Bunを使った天気情報提供用のMCPサーバー例です。郵便番号から現在の天気と時間別・日別予報を取得でき、ツールを構造化して追加する方法も示します。

主な機能

  1. 01郵便番号による現在の天気取得
  2. 02時間別・日別予報
  3. 03ツールの順次利用
  4. 04構造化されたツール拡張方式

活用シーン

  1. 01郵便番号に対応する現在の天気の確認
  2. 02週末の天気予報の取得
  3. 03MCPサーバーへの天気ツール追加

MCP 対応

現在の天気や予報を取得するツールをMCPクライアントに提供します。READMEでは基本的なMCPサーバーの例として説明し、Claude Desktopの設定方法も記載しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Weather MCP Server

これは、LLM で天気情報を提供するツール群を実現するために、Model Context Protocol(MCP)と Bun を活用したプロジェクトです。

背景

ツールリクエストを処理して実行できる基本的な MCP サーバーのセットアップ方法を紹介します。郵便番号を指定すると、現在の天気と今後の天気予報(時間別および日別)を取得できます。複数のツールが連携して動作し、LLM は設定に基づいてツールの使用を調整します。 この実装では、追加のツールを一元的かつ体系的な方法で追加するためのシンプルなフレームワークも提供しています。詳しくは、開発の新しいツールセクションをご覧ください。

前提条件

  1. Bun がインストールされている必要があります。
  2. Claude Desktop をインストールしてください。

プロジェクトのセットアップ

  1. リポジトリをクローンします。

  2. 次を実行します。

    bun install
    
  3. /env/sample.env をもとに、ルートに .env ファイルを作成します。必要に応じて、説明に従って値を設定してください。

    注記: これは主に、bun run start を使用して開発モードでサーバーを実行する場合に関係します。

  4. (任意) プロジェクトの整合性を確認するには、次を実行します。

    bun run verify
    

ビルド

  1. 次を実行します。

    bun run build
    

これによりエントリーポイント build/main.js がバンドルされ、利用できるようになります。

Claude Desktop のセットアップ

このセクションは、一般的なガイドをもとに、このユースケースに合わせた内容になっています。

  1. Claude Desktop を起動し、設定(アカウント設定ではありません)を開きます。

  2. 設定ペインの左側にある Developer をクリックし、次に Edit Config をクリックします。

  3. ファイル claude_desktop_config.json を編集し、次を追加します。

    {
      "mcpServers": {
        "weather-mcp-server": {
          "command": "bun",
          "args": ["run", "<path_to_project>/build/main.js"],
          "env": {
            "APP_NAME": "weather-mcp-server",
            "APP_EMAIL": "<app-email>"
          }
        }
      }
    }
    
    • <path_to_project> をプロジェクトへのパスに置き換えます。例:/Users/username/Documents/projects/create-mcp-server-app-bun
    • <app-email> を、一部の API リクエストの識別に使用するメールアドレスに置き換えます。例:[email protected]
  4. Claude Desktop を再起動します。再起動しないと、Claude Desktop に claude_desktop_config.json の変更が適用されないため、重要な手順です。

  5. メイン画面で Search and Tools ボタンをクリックし、次に MCP サーバー名をクリックします。有効になっていることを確認してください。

使い方

Claude とこの MCP サーバーを使う際のヒントをいくつか紹介します。

  1. まず、郵便番号を指定して現在の天気を Claude に尋ねてみましょう。例:current weather for 90210。該当する結果が出力されます。Claude が複数のツールを順番に、動的かつ独立して使用し、求める結果を提供する様子を確認できます。
  2. 今後数日間のいずれかの日の天気予報を Claude に尋ねることもできます。例:what's the weather this weekend?。以前の質問のコンテキストに郵便番号が含まれていない場合は、求める郵便番号を確認するための追加リクエストが発生します。郵便番号を指定すると、該当する結果が返されます。
    1. 該当する場合、Claude が以前のツール呼び出しの結果を自動的に再利用して回答する点に注目してください。

開発

新しいツール

新しいツールを追加するには、./src/tools 内の各ツールモジュールが AbstractTool を継承し、ITool を実装したうえで、(テストカバレッジのために)明示的なコンストラクターを定義してください。

...
export class NewTool extends AbstractTool implements ITool {
  // Explicit constructor definition to ensure test coverage in Bun tracks constructor.
  constructor(fetch: typeof globalThis.fetch = globalThis.fetch) {
    super(fetch);
  }
...

さらに、以下のメソッドを実装する必要があります(詳細は対応する JSDoc を参照してください)。

  • getName
  • getDescription
  • getInputSchema
  • validateWithDefaults
  • processToolWorkflow

実装の際は既存のツールを参考にし、対応するテストも忘れずに実装してください。

追加のツールを登録するための設定は不要です。MCP サーバーを再起動すると、自動的に含まれます。

テストカバレッジ

lcov レポートを分析すると、カバレッジの不足箇所を把握しやすくなります。

注意:

  • クラスのコンストラクターは、それぞれのクラス内で定義してください。Bun が追跡するのはクラスの関数(コンストラクターを含む)のみです。抽象クラスを継承すると、その抽象クラス独自のコンストラクターは追跡されないため、問題が発生します。そのため、クラス内で Abstract のコンストラクターを定義し、super を呼び出してください。
  • モジュールの先頭に一部のインポート(例:import dedent from "dedent";)があると、Bun がその行をカバー済みとして正しく追跡できない場合があります。その場合は、他のインポートの後ろに移動すると正しく追跡されます。
前提条件(開発)
  1. lcov をインストールします。

    brew install lcov
    
  2. VSCode 拡張機能 ryanluker.vscode-coverage-gutters をインストールします(settings.json で定義済みです)。

テストカバレッジの実行
  1. ほとんどの場合、次のコマンドを実行すれば十分です。

    bun run test:coverage
    

    注意: カバレッジが 100 未満でありながら Uncovered Line #s が報告されない場合は、次の手順に従ってさらに調査し、上記の注意事項を確認してください。

  2. 詳細な調査を行う場合は、次のコマンドを実行します。

    bun run test:coverage:lcov
    

    これにより、VSCode 拡張機能 ryanluker.vscode-coverage-gutters がエディター内でカバー済みの行を可視化するために使用する lcov カバレッジレポートが生成されます。

  3. HTML レポートが必要な場合は、ターミナルで次のコマンドを実行します。

    genhtml --function-coverage --branch-coverage --output-directory coverage-report coverage/lcov.info
    

    これにより、任意のブラウザーで確認できる HTML カバレッジレポートが生成されます。

コメント

MCP は初めてですか?

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

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