03 チュートリアルで作成するもの - HiroyukiMakita/mcp-server-tutorial GitHub Wiki
03. チュートリアルで作成するもの
このチュートリアルでは、OpenWeatherMap API を利用して、指定された都市の天気情報を取得する機能を持つMCPサーバーを実際に作成します。
作成するMCPサーバーの概要
- 名称:
weather-server
(仮) - 機能:
- 指定された都市名に基づいて、現在の天気情報(気温、湿度、天気概況、風速など)を取得する。
- 指定された都市名と日数に基づいて、数日間の天気予報を取得する。
- 使用技術:
- Node.js
- TypeScript
- MCP SDK (
@modelcontextprotocol/sdk
) axios
(HTTPクライアントライブラリ、OpenWeatherMap APIとの通信に使用)zod
(スキーマ定義およびバリデーションライブラリ)
- 提供するMCPツール (予定):
get_current_weather
: 指定した都市の現在の天気情報を取得するツール。- 入力:
city
(都市名、文字列) - 出力: 現在の天気情報 (JSON形式のテキスト)
- 入力:
get_forecast
: 指定した都市の数日間の天気予報を取得するツール。- 入力:
city
(都市名、文字列),days
(予報日数、数値、1〜5日) - 出力: 天気予報データ (JSON形式のテキスト)
- 入力:
学習のポイント
このMCPサーバーを作成する過程で、以下の点を重点的に学習します。
- MCPサーバーの基本的な構造:
- MCPサーバーの初期化方法。
- ツール定義の基本的な書き方。
- 入力パラメータの受け取り方とバリデーション。
- 処理結果の返し方。
- 外部APIとの連携:
axios
を使用した外部HTTP APIへのリクエスト送信方法。- APIレスポンスのハンドリングと必要な情報の抽出。
- APIキーなどの機密情報の安全な取り扱い方(環境変数経由)。
- 型安全な開発:
- TypeScript と
zod
を用いた型定義とバリデーションにより、堅牢なコードを作成する方法。
- TypeScript と
- エラーハンドリング:
- API通信エラーや予期せぬエラーが発生した場合の適切な処理方法。
- MCPクライアントにエラー情報を伝える方法。
- ローカルでの実行とデバッグ:
- 作成したMCPサーバーをローカル環境で実行し、動作を確認する手順。
- MCP設定ファイル (
mcp_settings.json
) への登録方法。
- ユニットテストの導入:
- 作成したツールや関数に対する簡単なユニットテストの作成方法。
このチュートリアルを通じて、あなたは実際に動作するMCPサーバーを一つ完成させ、MCP開発の基本的なスキルを習得することができます。