Weather MCP Server

Weather MCP Server

A Model Context Protocol server that provides weather information and forecasts based on user location or address input.

Category
访问服务器

README

天气MCP服务器 🌤️

一个基于Model Context Protocol (MCP)的天气查询服务器,可以根据用户输入的地址或自动获取当前位置来查询天气信息和预报。

功能特性 ✨

  • 🌍 多种位置查询方式:支持地址、坐标、当前位置
  • 🌤️ 实时天气信息:获取当前详细天气数据
  • 📅 天气预报:支持1-10天的未来天气预报
  • 📍 地理编码:地址与坐标之间的转换
  • 💡 智能建议:根据天气条件提供生活建议
  • 🌐 多语言支持:中文界面,支持全球地址查询
  • 🔧 易于集成:标准MCP协议,兼容多种AI客户端

安装 🚀

1. 克隆项目

git clone <repository-url>
cd weather-mcp-server

2. 安装依赖

npm install

3. 编译和运行

🎉 无需API密钥! 本项目使用完全免费的Open-Meteo API,无需注册或配置任何密钥。

# 编译TypeScript
npm run build

# 启动服务器
npm start

# 或者开发模式(自动重编译)
npm run dev

使用方法 📖

在Claude Desktop中使用

  1. 打开Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%/Claude/claude_desktop_config.json
  2. 添加MCP服务器配置:

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/path/to/weather-mcp-server/dist/index.js"]
    }
  }
}
  1. 重启Claude Desktop

在其他MCP客户端中使用

参考各客户端的文档,使用stdio传输协议连接到服务器:

node /path/to/weather-mcp-server/dist/index.js

可用工具 🔧

1. get-weather-by-address

根据地址获取当前天气信息

参数:

  • address (string): 地址,例如:"北京市"、"上海市浦东新区"、"New York"

示例:

获取北京市的天气

2. get-forecast-by-address

根据地址获取天气预报

参数:

  • address (string): 地址
  • days (number, 可选): 预报天数,1-10天,默认5天

示例:

获取上海市未来7天的天气预报

3. get-current-location-weather

获取当前位置的天气信息(基于IP地址)

参数:

示例:

获取我当前位置的天气

4. get-current-location-forecast

获取当前位置的天气预报

参数:

  • days (number, 可选): 预报天数,1-10天,默认5天

示例:

获取我当前位置未来3天的天气预报

5. get-weather-by-coordinates

根据经纬度坐标获取天气信息

参数:

  • latitude (number): 纬度,-90到90之间
  • longitude (number): 经度,-180到180之间

示例:

获取坐标(39.9042, 116.4074)的天气信息

6. geocode-address

将地址转换为经纬度坐标

参数:

  • address (string): 要解析的地址

示例:

解析"天安门广场"的坐标

可用资源 📚

weather://status

显示天气服务的配置状态和可用性

可用提示 🎯

weather-assistant

天气查询智能助手

参数:

  • location (string, 可选): 位置信息
  • query_type (enum, 可选): 查询类型,"current"或"forecast"

示例输出 📋

天气信息示例

📍 位置: Beijing, Beijing, China
🌡️ 温度: 22°C (体感温度: 24°C)
🌤️ 天气: 晴
💧 湿度: 45%
💨 风速: 12 km/h (SW)
🌡️ 气压: 1013 mb
👁️ 能见度: 10 km
☀️ 紫外线指数: 6
🕐 更新时间: 2024-01-15 14:30

💡 建议:
☀️ 天气较热,穿轻便衣物
🧴 紫外线较强,建议涂抹防晒霜

天气预报示例

📍 Beijing, Beijing, China 天气预报

🌟 当前天气:
温度: 22°C (体感: 24°C)
天气: 晴
湿度: 45% | 风速: 12 km/h

📅 未来几天预报:
今天 (2024-01-15):
  🌡️ 18°C ~ 25°C | 晴
  💧 湿度: 45% | 🌧️ 降雨概率: 10%

明天 (2024-01-16):
  🌡️ 16°C ~ 23°C | 多云
  💧 湿度: 55% | 🌧️ 降雨概率: 20%

技术架构 🏗️

核心组件

  • WeatherService: 天气API调用和数据格式化
  • LocationService: 地理位置服务和地址解析
  • MCP Server: 基于标准MCP协议的服务器实现

依赖项

  • @modelcontextprotocol/sdk: MCP协议实现
  • axios: HTTP请求库
  • zod: 数据验证
  • dotenv: 环境变量管理

API服务商

  • Open-Meteo: 免费天气数据提供商
  • Open-Meteo Geocoding: 免费地理编码服务
  • IP-API: 免费IP地址定位服务

开发 🛠️

项目结构

weather-mcp-server/
├── src/
│   ├── index.ts              # 主服务器文件
│   ├── weather-service.ts    # 天气服务
│   ├── location-service.ts   # 位置服务
│   └── types.ts             # 类型定义
├── dist/                    # 编译输出
├── package.json
├── tsconfig.json
├── env.example
└── README.md

开发命令

# 安装依赖
npm install

# 开发模式(自动重编译)
npm run dev

# 编译
npm run build

# 运行
npm start

添加新功能

  1. 在相应的服务类中添加新方法
  2. src/index.ts 中注册新的工具、资源或提示
  3. 更新类型定义(如需要)
  4. 重新编译和测试

故障排除 🔧

常见问题

  1. 网络连接问题

    • 检查网络连接
    • 确认防火墙设置允许外部API访问
  2. 地址解析失败

    • 尝试使用更具体的地址
    • 检查地址拼写是否正确
  3. 编译错误

    • 确保Node.js版本 >= 18.0.0
    • 删除 node_modulesdist 目录后重新安装
  4. 服务暂时不可用

    • Open-Meteo服务偶尔可能维护,请稍后重试

调试模式

启用详细日志:

DEBUG=weather-mcp-server npm start

贡献 🤝

欢迎贡献代码!请遵循以下步骤:

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建Pull Request

许可证 📄

本项目采用 MIT 许可证。详见 LICENSE 文件。

支持 💬

如果您遇到问题或有建议,请:

  1. 查看常见问题
  2. 搜索现有的Issues
  3. 创建新的Issue并详细描述问题

更新日志 📝

v1.0.0

  • 初始版本发布
  • 使用Open-Meteo免费API,无需密钥
  • 支持基本天气查询功能
  • 支持地址和坐标查询
  • 支持当前位置自动检测
  • 支持天气预报(最多16天)
  • 提供智能天气建议
  • 完全免费使用

享受使用天气MCP服务器! 🌤️✨

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选