Skip to main content
Glama
NathanEvans1221

Weather MCP Server

ClaudeLocalMCP.js

自己為 Claude 寫本地端 MCP Server (JavaScript版) 很簡單,有手就行😁 完整流程 Demo 的 gif 圖檔
MCP開啟圖示

簡介 MCP Server

MCP Server 就像「AI 的 USB 插槽」,讓 AI 能安全地連接外部資料或工具。
舉例:AI 想查電腦檔案或查詢股票價格,MCP Server 就負責幫 AI 取得這些資料或執行操作。

AI 有了 MCP(模型上下文協定)後,將產生以下重大影響:

  • AI 不再只是「建議者」,而能主動執行任務。例如,AI 不僅能告訴你怎麼查資料,還能直接幫你查詢資料庫、整理報表、發送郵件,甚至控制智慧家電

  • AI 可即時存取外部資料與工具,突破只能依賴訓練知識的限制,能根據最新數據做出回應,如即時天氣、最新財經資訊等

  • AI 回答更精確,能減少「幻覺」問題,因為可直接查證外部資料來源

  • 開發者只需一次整合 MCP,AI 就能連接多種工具和資料,開發效率大幅提升

  • 用戶資料安全性提升,因為存取權限可細緻控管,且多數操作在本地端執行
    總結:MCP 讓 AI 從只能「說」進化到能「做」,大幅擴展應用範圍與價值,推動 AI 進入真正的智能代理(AI Agent)時代

Related MCP server: weather

Weather MCP Server

這是用來給 Claude 查詢指定地區的天氣資訊

安裝與啟動

需要 Node.js 18.19 以上版本,建議使用仍受支援的 LTS 版本。

npm ci
npm start

啟動前請依下節設定 OPENWEATHERMAP_API_KEY。預設讀取本專案根目錄的 .env, 不受啟動時的工作目錄影響;也可直接透過程序環境變數提供金鑰。 環境變數優先於 .env,缺少金鑰時會立即退出並在 stderr 顯示錯誤。

需要指定其他環境檔或開發時自動重啟:

npm start -- "envPath=D:\config\weather.env"
npm run watch

明確指定的環境檔若不存在或無法讀取,啟動會失敗。路徑可包含空白與 =, 請將整個 envPath=... 參數放在引號內。

這是 stdio MCP Server,啟動後等待 MCP 客戶端傳入訊息,沒有網頁或 HTTP 連接埠。 Claude Desktop 設定仍使用下方的 node 指令;npm start 適合在終端機開發時使用。

申請天氣 API 服務

我去申請 https://openweathermap.org/ 的免費服務 請去註冊並取得 API 金鑰 (API Key)

在 .env 填入金鑰

OPENWEATHERMAP_API_KEY=你的實際API金鑰貼在這裡

記得在根目錄內放上 .env 檔案來提供 API金鑰

安裝 Claude 桌面版

https://claude.ai/download

開啟 Claude 開發模式

右上角 File => Settings 開啟 Developer 模式

設定 MCP Server 給 Claude 使用

Windows 用戶請
開啟目錄 C:\Users\使用者名稱\AppData\Roaming\Claude
檔案名稱 claude_desktop_config.json

{
    "mcpServers": {
        "weather": {
            "command": "node",
            "args": [
                "D:\\github\\ClaudeLocalMCP.js\\index.js",
                "envPath=D:\\github\\ClaudeLocalMCP.js\\.env"
            ]
        }
    }
}

envPath 是指定 .env 的路徑;若使用專案根目錄的 .env,可以省略此參數。

查詢行為與錯誤處理

  • get_weather 接受 city 字串,會去除首尾空白並拒絕空白城市。

  • 英文城市直接查詢 OpenWeatherMap;含漢字的城市先使用 MyMemory 翻譯。

  • 翻譯連線失敗、逾時、超過配額或回傳空白時,改用原城市查詢。

  • 每次 HTTP 請求逾時為 10 秒;中文查詢有兩個依序執行的階段,總時間可能接近 20 秒。

  • 客戶端取消請求時會中止進行中的 HTTP 請求,且不再啟動下一個階段。

  • 天氣查詢失敗以 MCP isError: true 回傳,包含金鑰無效、城市不存在及逾時等情況。

  • 成功結果保留 city、temperature(攝氏)、condition、humidity(百分比)、 wind_speed(m/s)與 country 欄位,以 JSON 文字回傳。

Server 在本機執行,但城市查詢仍會傳給外部 API。診斷訊息使用 stderr; 請勿新增 console.log 到 Server,以免破壞 stdout 上的 MCP 訊息。

執行測試

npm test

使用 Node 內建測試工具,涵蓋 MCP 握手、輸入驗證、翻譯降級、錯誤回傳、 HTTP 逾時/取消,以及獨立程序的預設設定、指定路徑與 watch 啟動。 測試使用模擬資料與本機 HTTP 服務,不讀取你的 .env 或呼叫真實天氣/翻譯 API。

確認一下 MCP 是否正常開啟
MCP開啟圖示 檢視一下 MCP 名稱
MCP開啟圖示 詢問時要指定地區,如: 台中天氣如何?
Claude 會要你確認(Allow for this chat)是否可以執行 MCP 服務 MCP開啟圖示

查詢 MCP Server 執行 log

Windows 用戶請
開啟目錄 C:\Users\使用者名稱\AppData\Roaming\Claude\logs

Related MCP Connectors

Related MCP Servers