Skip to main content
Glama
yuxiaosenstar

weather-mcp-server-js

🌤️ Weather MCP Server (Node.js)

Node.js / Express ベースのリモート MCP (Model Context Protocol) サーバーです。 Streamable HTTP transport を介して get_weather ツールを公開し、Claude Code などの MCP クライアントが任意の都市の現在の天気をリアルタイムに取得できるようにします。

天気データは wttr.in から取得します —— 無料、登録不要、API キー不要です。

✨ 機能特性

  • 🛰️ リモート MCP サービス:公式 @modelcontextprotocol/sdk に基づく Streamable HTTP トランスポートを実装し、JSON と SSE の2つのレスポンスモードをサポート

  • 🌆 世界中の都市に対応:都市名(例:Beijing、Tokyo、Paris)を直接渡すだけで現地の天気を取得できます

  • 🔌 完全なセッション管理:Mcp-Session-Id を自動生成/検証し、セッションの確立、再利用、クローズ(DELETE)をサポート

  • 🧩 単一ファイルですぐ使える:データベース不要、設定ファイル不要、server.js 1つで起動できます

Related MCP server: MCP Weather Server — Demo

📦 環境要件

  • Node.js ≥ 18(fetch 内蔵、追加依存不要)

🚀 クイックスタート

# 1. 安装依赖
npm install

# 2. 启动服务(默认端口 3000)
npm start

# 后台运行(日志写入 logs/server.log)
npm run start:bg

起動に成功すると、サービスアドレスは次のようになります:

http://localhost:3000/mcp

よく使うスクリプト

命令

説明

npm start

フォアグラウンドでサービスを起動

npm start:bg

バックグラウンドで起動し、ログを logs/server.log に書き込む

npm run dev

開発モード。ファイル変更で自動再起動

npm run status

3000 番ポートでサービスが稼働しているか確認

npm run logs

ログをリアルタイムで表示

npm run stop

サービスを停止

npm run restart

サービスを再起動

npm run restart:bg

バックグラウンドで再起動

🔌 MCP クライアントの設定

Claude Code または Streamable HTTP をサポートする他の MCP クライアントで、サービスをリモート MCP サーバーとして登録します。

Claude Code

MCP サーバーリストから追加します(/mcp → 追加 → HTTP):

{
  "type": "http",
  "url": "http://localhost:3000/mcp"
}

JSON 設定ファイル方式

{
  "mcpServers": {
    "weather": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

🧰 提供されるツール

get_weather

指定された都市の現在の天気を取得します。

パラメータ

パラメータ

型

必須

説明

city

string

✅

都市名。例:Beijing、Tokyo

戻り値の例

当前 Beijing 的天气是晴(Sunny),温度 28°C(体感 30°C),湿度 45%,风速 12 km/h。

⚙️ 実装の説明

  • セッション分離:各セッションは独立した Server + transport インスタンスを保持します(SDK の connect() は1つの transport のみサポート)。Mcp-Session-Id リクエストヘッダーで関連付けます。

  • 新規セッションフロー:Mcp-Session-Id を含まない POST は初期化リクエストと見なされ、サーバーはセッション ID を生成して Mcp-Session-Id レスポンスヘッダーで返します(CORS の exposedHeaders によりブラウザクライアントに明示的に公開されます)。

  • 互換性処理:セッション ID のない GET SSE プローブリクエストは、404/400 を返す代わりに開いた SSE ストリームを維持し、Claude Code などのクライアントが POST 初期化フローを続行できるようにします。

  • 信頼性の高いエラー応答:天気 API の呼び出しに失敗した場合、リクエスト全体をクラッシュさせるのではなく、isError: true の結果を返します。

🗂️ プロジェクト構造

.
├── server.js          # 全部服务逻辑(单文件)
├── package.json       # 项目配置与脚本
├── logs/              # 运行时日志(已被 .gitignore 忽略)
└── LICENSE            # MIT 许可证

📄 ライセンス

MIT

Related MCP Connectors

Related MCP Servers