Exemplo de Servidor MCP について
Node.js と TypeScript で構築された、MCP サーバー開発を学ぶ開発者向けの天気情報サンプルです。NWS API による警報と予報のツールを備え、レイヤー構成と Zod による入力検証を示します。
主な機能
- 01米国の州ごとの有効な気象警報を取得
- 02地理座標から予報を取得
- 03Zod による入力検証
- 04stdio による通信
- 05レイヤー構成でコードを整理
活用シーン
- 01Node.js MCP サーバーの構築を学ぶ
- 02指定した州の警報を確認
- 03地点の天気予報を取得
MCP 対応
MCP を通じて気象警報と予報のツールを公開し、stdio トランスポートでクライアントからの要求を待ち受けます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバーの例
Código Fonte TV チャンネルの教育目的で作成されたこのプロジェクトでは、外部 API との連携とデータ検証を備えた MCP サーバーの構築方法を紹介します。
このリポジトリには、米国の National Weather Service(NWS)API を使用して気象情報を取得する 2 つのツールを提供する、Node.js/TypeScript での MCP(Model Context Protocol)サーバー実装例が含まれています。
機能
- get-alerts:州のコード(2 文字、例:
CA、NY)を指定して、現在有効な気象警報を取得します。 - get-forecast:地理座標(緯度、経度)を指定して、天気予報を取得します。
- Zod を使用して入力を検証します。
fetchを使用して NWS API と連携します(インフラストラクチャ層)。- MCP プロトコル(
@modelcontextprotocol/sdk)を使用して stdio 経由で通信します。
アーキテクチャ
このプロジェクトでは、ドメイン駆動設計(DDD)のパターンを参考にしたレイヤードアーキテクチャを採用しています。
-
ドメイン(
src/domain): データ構造(例:AlertFeature、ForecastPeriod、AlertsResponse)を表すインターフェースと型を定義します。 -
インフラストラクチャ(
src/infrastructure): 外部サービスを実装します。たとえば、NWS API への HTTP リクエストを担当するNWSApiServiceがあります。 -
アプリケーション(
src/application): インフラストラクチャから渡されるデータを処理、整形するWeatherServiceにビジネスロジックを実装します。 -
インターフェース(
src/interface):WeatherToolsControllerなどのコントローラーが含まれます。これらは MCP サーバーにツールを登録し、検証スキーマを定義して結果を返します。 -
エントリーポイント(
src/main.ts):McpServerを初期化し、トランスポート(StdioServerTransport)を設定して、サービスとコントローラーをインスタンス化し、stdio での待ち受けを開始します。
フォルダー構成は次のとおりです。
src/
├── domain/
│ └── models/ # Interfaces de domínio
├── infrastructure/
│ └── services/ # Implementações da API externa (NWS)
├── application/
│ └── services/ # Lógica de negócio e formatação de dados
├── interface/
│ └── controllers/ # Registro das ferramentas MCP e validação
└── main.ts # Ponto de entrada do servidor
build/ # Código JavaScript compilado
インストール
git clone <REPOSITÓRIO_URL>
cd mcp-server-sample
npm install
npm run build
使用方法
ビルド後、サーバーを直接実行できます。
node build/main.js
または、バイナリ(weather)として登録されている場合は、次のように実行できます。
npm link
weather
サーバーは標準出力(stdio)で起動し、MCP リクエストを待ち受けます。
コントリビューション
プルリクエストを歓迎します。お気軽に issue を作成し、改善についてご相談ください。
Código Fonte TV
実装の詳細については、Código Fonte TV チャンネルの動画をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。