使用说明
MCP天气服务器
一个通过OpenWeatherMap API提供天气数据的模型上下文协议(MCP)服务器。该服务器使像Kiro和Claude这样的MCP客户端能够访问任何地点的当前天气状况和预报。
特点/功能
- 当前天气获取实时天气数据,包括温度、天气状况、湿度、风速等
- 天气预报获取最多8天的天气预报
- 灵活的位置输入支持城市名称和纬度/经度坐标的输入
- 综合数据包括紫外线指数、日出/日落时间、大气压和能见度
- 错误处理带有描述性信息的健壮错误处理
- MCP协议完全符合模型上下文协议规范
先决条件
- Python 3.10或更高版本
- OpenWeatherMap API密钥(免费版可在 openweathermap.org(开放天气图网站))
uv并且uvx已安装(见 安装指南)
安装
用于与Kiro或其他MCP客户端配合使用
无需手动安装!服务器将自动下载并运行 uvx.
用于开发
- 克隆仓库:
git clone <repository-url>
cd mcp-weather-server
- 安装依赖项:
uv pip install -e ".[dev]"
- 复制示例环境文件并添加您的API密钥:
cp .env.example .env
# Edit .env and add your OPENWEATHER_API_KEY
配置
获取一个OpenWeatherMap API密钥
- 在(某处)注册 OpenWeatherMap(开放天气图)
- 导航至您的API密钥部分
- 生成一个新的API密钥(免费套餐包含1,000次/天的调用)
在Kiro中进行配置
在你的(内容/列表/计划等)中添加以下内容 .kiro/settings/mcp.json 文件:
{
"mcpServers": {
"weather": {
"command": "uvx",
"args": ["mcp-weather-server"],
"env": {
"OPENWEATHER_API_KEY": "your_api_key_here"
},
"disabled": false,
"autoApprove": ["get_current_weather", "get_weather_forecast"]
}
}
}
替换 your_api_key_here 使用您实际的OpenWeatherMap API密钥。
环境变量
OPENWEATHER_API_KEY(必填):您的OpenWeatherMap API密钥LOG_LEVEL(可选):日志级别(DEBUG、INFO、WARNING、ERROR)。默认:INFOAPI_TIMEOUT(可选):API请求的超时时间(以秒为单位)。默认值:10
使用方法
可用工具
get_current_weather
获取某地的当前天气状况。
参数:
location(字符串,必填):城市名称(例如,“巴黎”)或坐标(例如,“48.8566,2.3522”)units(字符串,可选):"metric"(默认)或 "imperial"
示例:
Get the current weather in Tokyo
get_weather_forecast
获取接下来几天的天气预报。
参数:
location(字符串,必填):城市名称或坐标days(整数,可选):天数(1-8)。默认值:7units(字符串,可选):“metric”(默认)或“imperial”
示例:
Show me the 5-day forecast for London
与Kiro一起使用
配置完成后,只需向Kiro提出自然语言问题:
- “巴黎的天气怎么样?”
- “给我一份纽约的3天天气预报”
- “现在东京的温度是多少?”
- “给我看看坐标51.5074,-0.1278的天气预报”
测试
如需详细的测试说明,请参阅 TESTING.md 翻译为中文是:“测试说明文件.md” 或者更简洁地 “测试文档.md”(其中,.md 表示这是 Markdown 格式的文件)。
快速结构验证
python3 test_structure.py
集成测试(需要有效的API密钥)
OPENWEATHER_API_KEY=your_key python3 test_integration.py
发展
在本地运行服务器
python -m mcp_weather_server
项目结构
mcp-weather-server/
├── src/
│ └── mcp_weather_server/
│ ├── __init__.py
│ ├── __main__.py # Entry point
│ ├── server.py # MCP server implementation
│ ├── weather_service.py # OpenWeatherMap API client
│ ├── config.py # Configuration management
│ ├── models.py # Data models
│ ├── tools/ # MCP tool handlers
│ │ ├── current_weather.py
│ │ └── forecast.py
│ └── utils/ # Utilities
│ ├── errors.py
│ └── formatters.py
├── tests/ # Test suite
├── pyproject.toml # Project configuration
├── README.md # This file
└── .env.example # Example environment configuration
API速率限制
OpenWeatherMap的免费套餐包括:
- 每天1,000次API调用
- 每分钟60个呼叫
服务器能够优雅地处理速率限制错误,并且在超出限制时会通知您。
故障排除
API密钥无效
- 验证配置中的API密钥是否正确
- 确保API密钥已激活(创建后可能需要几个小时)
“位置未找到”
- 检查城市名称的拼写
- 试试使用坐标吧:“纬度,经度”
“服务暂时不可用”
- OpenWeatherMap API 可能正在遇到问题
- 检查 OpenWeatherMap 状态
许可证
MIT 许可证 - 详见 LICENSE 文件
贡献
欢迎贡献!请随时提交拉取请求。
支持
对于问题和疑问:
- 检查一下 OpenWeatherMap API文档
- 审查/回顾 MCP规范
- 在这个仓库中打开一个问题(或提交一个问题报告)