@mariox/weather-mcp-server
Version:
MCP server for querying weather by current IP location using Open-Meteo free API
295 lines (221 loc) • 7.88 kB
Markdown
# Weather MCP Server
一个基于 Model Context Protocol (MCP) 的智能天气查询服务器,支持自动识别当前位置或查询指定地点的天气信息。使用免费的 Open-Meteo API 和 OpenStreetMap 地理编码服务,无需注册或 API 密钥。
## 功能特性
- 🌍 **智能位置识别**:不指定地点时自动查询当前IP位置天气
- 🗺️ **地点名称查询**:支持中英文地点名称,如"北京"、"上海"、"Tokyo"、"New York"
- 🌤️ **实时天气查询**:获取任意地点的实时天气信息
- 📅 **天气预报**:支持未来7天天气预报,可指定地点或使用当前位置
- 📍 **精确坐标查询**:支持经纬度精确查询(高级用法)
- 🆓 **完全免费**:使用免费API服务,无需注册或API密钥
- 🚀 **即装即用**:一行命令安装,无需额外配置
- 🌐 **地理编码**:自动将地点名称转换为精确坐标
## 可用工具
1. **get_weather** - 智能天气查询,不指定地点时查询当前位置,指定地点时查询该地点天气
2. **get_weather_forecast** - 智能天气预报,支持指定地点或当前位置的未来7天预报
3. **get_current_ip_info** - 获取当前IP地址的详细位置信息
4. **get_weather_by_coordinates** - 根据精确坐标获取天气信息(高级用法)
## 快速开始
### 方法一:通过 npm 安装(推荐)
```bash
# 全局安装
npm install -g @mariox/weather-mcp-server
# 或者使用 npx(无需全局安装)
npx @mariox/weather-mcp-server
```
### 方法二:本地开发
```bash
# 克隆仓库
git clone https://github.com/mariox/weather-mcp-server.git
cd weather-mcp-server
# 安装依赖
npm install
# 启动服务器
npm start
```
## MCP 客户端配置
### Claude Desktop 配置
在 Claude Desktop 的配置文件中添加以下内容:
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Linux:** `~/.config/claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"weather": {
"command": "npx",
"args": ["@mariox/weather-mcp-server"]
}
}
}
```
### Cursor 配置
在 Cursor 的 MCP 配置中添加:
```json
{
"mcpServers": {
"weather": {
"command": "npx",
"args": ["-y", "@mariox/weather-mcp-server"]
}
}
}
```
### 其他 MCP 客户端配置
对于支持 MCP 的其他客户端,使用以下通用配置:
```json
{
"mcpServers": {
"weather": {
"command": "npx",
"args": ["@mariox/weather-mcp-server"],
"env": {}
}
}
}
```
### 本地开发配置
如果您是从源码本地运行,请使用:
```json
{
"mcpServers": {
"weather": {
"command": "node",
"args": ["/path/to/your/weather-mcp-server/index.js"],
"cwd": "/path/to/your/weather-mcp-server"
}
}
}
```
## 配置验证
配置完成后,重启您的 MCP 客户端,您应该能看到以下工具可用:
- ✅ `get_weather` - 智能天气查询,不指定地点时查询当前位置,指定地点时查询该地点天气
- ✅ `get_weather_forecast` - 智能天气预报,支持指定地点或当前位置的未来7天预报
- ✅ `get_current_ip_info` - 获取当前IP地址的详细位置信息
- ✅ `get_weather_by_coordinates` - 根据精确坐标获取天气信息(高级用法)
## 测试安装
您可以通过以下命令快速测试包是否正常工作:
```bash
# 测试版本信息
npx @mariox/weather-mcp-server --version
# 查看帮助信息
npx @mariox/weather-mcp-server --help
# 测试MCP服务器(会启动服务器,按Ctrl+C退出)
npx @mariox/weather-mcp-server
```
如果看到类似以下输出,说明安装成功:
```
Weather MCP Server 已启动
```
## 使用示例
### 智能天气查询
#### 查询当前位置天气(自动识别IP位置)
```
今天天气怎么样?
查询当前位置的天气
现在的天气情况
```
#### 查询指定地点天气
```
北京的天气怎么样?
查询上海的天气
Tokyo weather
New York的天气情况
```
### 智能天气预报
#### 当前位置天气预报
```
未来三天的天气预报
获取本周天气预报
明天天气怎么样?
```
#### 指定地点天气预报
```
北京未来5天的天气预报
查询东京下周的天气
Paris 7天天气预报
```
### 高级用法
#### 精确坐标查询
```
查询坐标 39.9042, 116.4074 的天气(北京)
获取纬度 35.6762 经度 139.6503 的天气(东京)
```
#### IP位置信息查询
```
显示我当前的IP地址和位置信息
获取当前IP的详细信息
```
### 支持的地点格式
- **中文城市名**:北京、上海、广州、深圳、成都、杭州等
- **英文城市名**:Tokyo, New York, London, Paris, Sydney等
- **国家名**:China, Japan, USA, UK, France等
- **详细地址**:天安门广场、Times Square、Eiffel Tower等
- **拼音**:Beijing, Shanghai, Guangzhou等
## 故障排除
### 1. 工具无法识别
如果客户端显示 "No tools available":
1. 确认已正确配置 `claude_desktop_config.json` 文件
2. 重启 Claude Desktop 或相关客户端
3. 检查 npm 包是否正确安装:`npm list -g @mariox/weather-mcp-server`
### 2. 网络连接问题
确保您的网络可以访问以下服务:
- `ip-api.com` (IP地理位置服务)
- `api.open-meteo.com` (天气数据服务)
- `nominatim.openstreetmap.org` (地理编码服务)
如果地理编码服务响应较慢,可以:
1. 使用精确的坐标查询代替地点名称
2. 检查网络连接稳定性
3. 尝试使用更具体的地点名称
### 3. Node.js 版本要求
确保 Node.js 版本 >= 18.0.0:
```bash
node --version
```
## 技术栈
- **运行环境**: Node.js 18+
- **MCP 协议**: @modelcontextprotocol/sdk ^0.5.0
- **HTTP 客户端**: axios ^1.6.0
- **天气数据**: Open-Meteo API(免费服务)
- **地理编码**: OpenStreetMap Nominatim(免费服务)
- **IP位置**: ip-api.com(免费服务)
## API 数据源
- **IP 地理位置信息**:[ip-api.com](https://ip-api.com/)(免费服务,无需API密钥)
- **天气数据**:[Open-Meteo API](https://open-meteo.com/)(完全免费,无需注册)
- **地理编码服务**:[OpenStreetMap Nominatim](https://nominatim.openstreetmap.org/)(免费地理编码服务)
## 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 贡献
欢迎提交 Issues 和 Pull Requests!
1. Fork 本仓库
2. 创建特性分支:`git checkout -b feature/new-feature`
3. 提交更改:`git commit -am 'Add new feature'`
4. 推送分支:`git push origin feature/new-feature`
5. 提交 Pull Request
## 更新日志
### v1.1.0 (2024-12-19)
- 🎉 **重大功能更新**:智能地点查询系统
- ✨ 新增智能天气查询工具 `get_weather`
- ✨ 新增智能天气预报工具 `get_weather_forecast`
- 🌐 集成OpenStreetMap地理编码服务
- 🗺️ 支持中英文地点名称查询(北京、Tokyo、New York等)
- 🤖 智能识别:不指定地点时自动查询当前IP位置
- 📝 更新了工具描述和使用文档
- 🔧 优化了工具组织结构,保留高级坐标查询功能
### v1.0.3 (2024-12-19)
- 🐛 修复了npm包bin路径问题
- ✨ 添加了命令行参数支持(--version, --help)
- 📝 完善了配置文档和故障排除指南
### v1.0.2 (2024-12-19)
- ✨ 添加了命令行参数支持
### v1.0.1 (2024-12-19)
- 📝 更新了文档和配置说明
### v1.0.0 (2024-12-19)
- 🎉 初始版本发布
- ✨ 支持当前 IP 天气查询
- ✨ 支持经纬度天气查询
- ✨ 支持 IP 信息查询
- ✨ 支持天气预报功能
- 📦 发布到 npm: `@mariox/weather-mcp-server`
## 联系方式
- GitHub: [@mariox](https://github.com/mariox)
- NPM: [@mariox/weather-mcp-server](https://www.npmjs.com/package/@mariox/weather-mcp-server)