UNPKG

@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
# Weather MCP Server 一个基于 Model Context Protocol (MCP) 的智能天气查询服务器,支持自动识别当前位置或查询指定地点的天气信息。使用免费的 Open-Meteo APIOpenStreetMap 地理编码服务,无需注册或 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 配置CursorMCP 配置中添加: ```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 SquareEiffel 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) 文件 ## 贡献 欢迎提交 IssuesPull Requests1. 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地理编码服务 - 🗺️ 支持中英文地点名称查询(北京、TokyoNew 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)