My MCP Weather Server について
MCP クライアントやエージェントのテスト向けに、TypeScript で作られた MCP サーバーの例です。Streamable HTTP 経由で、定義済みの都市について構造化されたダミー天気データを返します。
主な機能
- 01get_city_weather ツール
- 02定義済み都市のダミー天気
- 03メートル法またはヤード・ポンド法
- 04構造化出力スキーマ
- 05インメモリのセッション管理
活用シーン
- 01MCP クライアントのツール呼び出しのテスト
- 02天気ツールを使うエージェントの試作
MCP 対応
MCP と Streamable HTTP トランスポートを実装し、get_city_weather ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
My MCP Weather Server
このプロジェクトは、TypeScript 用の @modelcontextprotocol/sdk で構築された MCP(Model Context Protocol)サーバーのサンプルです。あらかじめ定義された複数の都市について、簡単なダミーの天気情報を提供するツールを公開する方法を紹介します。
このサーバーは、このサーバーが公開するツールを活用できる LLM 搭載エージェントなど、MCP 準拠のクライアントのバックエンドとして使用することを想定しています。
機能
- MCP 準拠: Model Context Protocol を実装しています。
- ストリーム可能な HTTP トランスポート: 通信には推奨されている
StreamableHTTPServerTransportを使用します。 - ツールの公開:
get_city_weatherツールを公開します。- 入力:
city(文字列。例:「paris」、「london」、「tokyo」)と、任意のunit(列挙型:「metric」または「imperial」。デフォルトは「metric」)。 - 出力: 気温、天気の説明、湿度などのダミーの天気情報を返します。
- 構造化出力: クライアントが確実に解析できるよう、定義済みの
outputSchemaに一致するstructuredContentを提供します。
- 入力:
- 基本的なセッション管理:
StreamableHTTPServerTransportのシンプルなインメモリセッション処理を紹介します。
前提条件
- Node.js(MCP SDK の仕様により、v18 以降を推奨)
- npm(または yarn/pnpm)
セットアップ
-
リポジトリをクローンします(またはプロジェクトファイルを作成します):
# Git リポジトリにある場合: # git clone <your-repo-url> # cd my-mcp-weather-server # それ以外の場合は、src/server.ts、package.json、tsconfig.json を含むプロジェクトディレクトリがあることを確認してください -
依存関係をインストールします:
npm install
サーバーの実行
開発環境の場合
このコマンドは、ts-node で TypeScript のソースを直接実行し、nodemon でファイルの変更時にサーバーを自動的に再起動します。
npm run build
npm start
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。