天气数据服务

一个通过OpenWeatherMap API提供实时天气数据和预报的MCP协议服务器,适用于需要天气信息的MCP客户端。

  • by LucMacPaquet
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 LucMacPaquet/mcp-weather-server

使用说明

MCP天气服务器

一个通过OpenWeatherMap API提供天气数据的模型上下文协议(MCP)服务器。该服务器使像Kiro和Claude这样的MCP客户端能够访问任何地点的当前天气状况和预报。

特点/功能

  • 当前天气获取实时天气数据,包括温度、天气状况、湿度、风速等
  • 天气预报获取最多8天的天气预报
  • 灵活的位置输入支持城市名称和纬度/经度坐标的输入
  • 综合数据包括紫外线指数、日出/日落时间、大气压和能见度
  • 错误处理带有描述性信息的健壮错误处理
  • MCP协议完全符合模型上下文协议规范

先决条件

安装

用于与Kiro或其他MCP客户端配合使用

无需手动安装!服务器将自动下载并运行 uvx.

用于开发

  1. 克隆仓库:
git clone <repository-url>
cd mcp-weather-server
  1. 安装依赖项:
uv pip install -e ".[dev]"
  1. 复制示例环境文件并添加您的API密钥:
cp .env.example .env
# Edit .env and add your OPENWEATHER_API_KEY

配置

获取一个OpenWeatherMap API密钥

  1. 在(某处)注册 OpenWeatherMap(开放天气图)
  2. 导航至您的API密钥部分
  3. 生成一个新的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)。默认:INFO
  • API_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)。默认值:7
  • units (字符串,可选):“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密钥已激活(创建后可能需要几个小时)

“位置未找到”

  • 检查城市名称的拼写
  • 试试使用坐标吧:“纬度,经度”

“服务暂时不可用”

许可证

MIT 许可证 - 详见 LICENSE 文件

贡献

欢迎贡献!请随时提交拉取请求。

支持

对于问题和疑问: