weather-mcp

weather-mcp

轻量天气MCP服务器,让Claude通过get_weather工具查询城市实时天气,无需API密钥。

Category
Visit Server

README

weather-mcp

给 Claude 加一个实时天气查询工具的小服务器。装好之后,在 Claude 对话里问一句"现在天气怎么样",它会去查真实天气然后告诉你,比如:

xx(城市)当前天气:多云,气温 28°C(体感 32°C),湿度 79%。

基于 Node.js 和官方 @modelcontextprotocol/sdk,数据来自免费的 wttr.in。不需要任何 API key。


开始前你需要

  1. 一个 Claude 账号。免费档可以添加 1 个自定义连接器,Pro 及以上不限数量——本项目只占 1 个名额,免费档也能用。
  2. 选一条部署路线(二选一):
路线 A:本地部署 路线 B:云端部署
跑在哪 你自己的电脑上 Render 免费服务器上
需要什么 一台开着的电脑 一个 GitHub 账号,电脑不用常开
地址 每次重启隧道会变,要手动更新 永久固定,配一次就不用管
适合谁 想在本地折腾、顺便学点东西的人 只想用、不想维护的人

只想省事的话,直接跳到路线 B,全程不需要在自己电脑上装任何东西。


路线 A:本地部署

A1. 安装 Node.js

  1. 打开 nodejs.org,下载 LTS 版本(长期支持版),一路"下一步"装完。
  2. 验证安装成功:打开终端——
    • Windows:按 Win + R,输入 cmd,回车
    • Mac:按 Command + 空格,输入"终端",回车
  3. 在终端里输入 node -v 回车。看到 v18 或更高的版本号就是装好了(本项目需要 18+,因为用了内置的 fetch)。

A2. 下载本项目

不会用 git 的话:点本页面右上角绿色的 Code 按钮 → Download ZIP → 下载后解压到一个好找的位置(比如桌面)。

会用 git 的话:

git clone https://github.com/ovo-hue/weather-mcp.git

A3. 安装依赖并启动

  1. 在终端里进入项目文件夹。最省事的办法:输入 cd (注意 cd 后面有个空格),然后把项目文件夹直接拖进终端窗口,回车。
  2. 安装依赖:
npm install

国内网络如果卡住不动,先换国内镜像源再重新 install:

npm config set registry https://registry.npmmirror.com
  1. 启动服务器:
node server.js

看到 weather-mcp (streamable-http) listening on port 3000 就是活了。这个终端窗口不要关,关了服务器就停了。

  1. 验活:浏览器打开 http://localhost:3000/health,看到 {"ok":true,...} 即正常。

A4. 把服务器暴露到公网(cloudflared 隧道)

为什么需要这步:Claude 的连接器是从 Anthropic 的云端来连你的服务器的,而你的电脑藏在家里的路由器后面,云端够不着。cloudflared 会给你一个临时公网地址,把流量转进来。

  1. 安装 cloudflared:
    • Windows:终端里运行 winget install --id Cloudflare.cloudflared
    • Macbrew install cloudflared
  2. 再开一个新的终端窗口(别动正在跑服务器的那个),运行:
cloudflared tunnel --url http://localhost:3000
  1. 输出里找到一行 https://一串随机单词.trycloudflare.com把这个地址抄下来。这个窗口同样不要关。

A5. 接进 Claude

  1. 打开 Claude(网页版或 App)→ 设置连接器(Connectors)添加自定义连接器
  2. URL 填:https://你抄下来的地址.trycloudflare.com/mcp ——注意结尾要加 /mcp,最常见的翻车点就是漏了它
  3. 传输方式选 Streamable HTTP
  4. 保存,开个新对话,问一句"现在天气怎么样"试试

⚠️ 本地路线的代价:trycloudflare 的临时地址每次重启隧道都会变,变了就要回连接器设置里更新 URL。嫌烦就用路线 B。


路线 B:云端部署(免费,地址永久固定)

B1. Fork 本仓库

  1. 没有 GitHub 账号先去 github.com 注册一个(免费)
  2. 回到本页面,点右上角的 Fork 按钮 → 直接点绿色的 Create fork。这会把项目复制一份到你自己的账号下

B2. 注册 Render 并创建服务

  1. 打开 render.com,点 Get Started,选 用 GitHub 账号登录(这样后面选仓库最方便)
  2. 登录后点 NewWeb Service
  3. 在仓库列表里找到你刚 fork 的 weather-mcp,点 Connect(找不到的话按提示授权 Render 访问你的 GitHub 仓库)

B3. 填配置

配置项 填什么
Name 随便起,比如 my-weather-mcp
Language / Runtime Node
Build Command npm install
Start Command node server.js
Instance Type Free(免费档)

其余保持默认,点 Deploy / Create Web Service

B4. 等部署完成

页面会滚动显示构建日志,等一两分钟,状态变成绿色 Live 就成了。页面顶部有你的专属地址,长这样:

https://my-weather-mcp.onrender.com

验活:浏览器打开 https://你的地址.onrender.com/health,看到 {"ok":true,...} 即正常。

B5. 接进 Claude

  1. Claude → 设置连接器添加自定义连接器
  2. URL 填:https://你的地址.onrender.com/mcp ——结尾 /mcp 别漏
  3. 传输方式选 Streamable HTTP,保存
  4. 新对话里问"现在天气怎么样"

这个地址永久不变,配完这一次就再也不用碰了。

⚠️ 免费档唯一的坑:闲置约 15 分钟后服务会休眠,下一次查询要先把它叫醒(冷启动几十秒),所以隔了很久之后的第一问可能超时失败,再问一次就好


改成你自己的城市

对话里没指定城市时,默认查的城市写在 server.js 顶部这一行:

const DEFAULT_CITY = "Fuzhou";  // 改成 "Beijing"、"Shanghai" 等,英文或拼音
  • 本地部署的:随便用什么编辑器打开 server.js 改掉这行,保存,然后在跑服务器的终端里按 Ctrl + C 停掉、重新 node server.js
  • 云端部署的:打开你 fork 的仓库页面 → 点开 server.js → 点右上角铅笔图标在线编辑 → 改完点 Commit changes。Render 检测到代码变化会自动重新部署,等一两分钟生效。

改完之后,对话里点名其他城市时不受影响,照常查询。


验证服务是否正常

curl http://localhost:3000/health

(云端就把 localhost:3000 换成你的 onrender.com 地址)

返回 {"ok":true,...} 说明服务器活着。

注意:用裸 curl 直接打 /mcp 会被拒绝——这是正常的,MCP 端点要走协议握手。要验证 MCP 本身,用官方的 MCP Inspector


已知坑(都踩过了,你可以绕开)

症状 原因 解法
隧道重启后 Claude 连不上 quick tunnel 的 URL 每次重启都会变 重新抄新 URL,去连接器里更新。一劳永逸的方案是改用路线 B
隧道 500 错误(ERR 1101) Cloudflare 临时故障,或本地代理(如 v2ray)污染了隧道流量 先重试;不行就让 cloudflared 绕过代理
curl 打 /mcp 被拒 MCP 端点需要协议握手 正常现象,用 MCP Inspector 验证
Render 上隔很久第一问超时 免费档休眠,冷启动要几十秒 再问一次就好;介意的话浏览器先开一下 /health 把它叫醒
Claude 说查不到天气 链路上某一环断了 按顺序排查:① 服务进程在不在 ② 隧道进程在不在(本地)③ 连接器里的 URL 是不是最新 ④ wttr.in 是否超时

排障第一步永远是:看日志和 /health


License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured