英国气象MCP服务器

模型上下文协议(MCP)服务器,提供对英国气象局天气数据中心API的访问,使LLM能够获取任何全球位置的实时天气预报。
特性
- 每小时预测:未来48小时的详细天气数据
- 3小时预测:最多7天的中期预测,间隔3小时
- 每日预测:未来7天的每日总结
- 双输出格式:Markdown用于人类可读性,JSON用于程序化处理
- 全球覆盖:全球任何地点的天气数据
- 综合数据:温度、风、降水、湿度、压力、紫外线指数等
安装
先决条件
- Python 3.10或更高版本
- 紫外线 包管理器
- 英国气象局数据中心API密钥(在https://datahub.metoffice.gov.uk/)
设置
- 如果您还没有安装uv:
curl -LsSf https://astral.sh/uv/install.sh | sh- 克隆或下载此存储库并导航到它:
cd uk-weather-mcp- 安装依赖项:
uv sync- 将您的Met Office API密钥设置为环境变量:
export MET_OFFICE_API_KEY="your_api_key_here"或者创建一个 .env 文件:
cp .env.example .env
# Edit .env and add your API key用法
运行服务器
发展模式
uv run uk_weather_mcp.py使用环境变量
MET_OFFICE_API_KEY="your_key" uv run uk_weather_mcp.pyClaude桌面集成
要与Claude Desktop集成,请将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"uk-weather": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/uk-weather-mcp",
"run",
"uk_weather_mcp.py"
],
"env": {
"MET_OFFICE_API_KEY": "your_api_key_here"
}
}
}
}替换 /absolute/path/to/uk-weather-mcp 此目录的实际绝对路径。
可用工具
1. uk_weather_get_hourly_forecast
获取未来48小时的详细小时天气预报。
参数:
latitude(浮点数,必填):纬度以十进制度数表示(-90到90)longitude(浮点数,必填):经度以十进制表示(-180到180)response_format(字符串,可选):“markdown”(默认)或“json”
例子:
{
"latitude": 51.5074,
"longitude": -0.1278,
"response_format": "markdown"
}2. uk_weather_get_three_hourly_forecast
以3小时为间隔获取未来7天的天气预报。
参数:
latitude(浮点数,必填):纬度以十进制度数表示(-90到90)longitude(浮点数,必填):经度以十进制表示(-180到180)response_format(字符串,可选):“markdown”(默认)或“json”
例子:
{
"latitude": 40.7128,
"longitude": -74.0060,
"response_format": "json"
}3. uk_weather_get_daily_forecast
获取最多7天的每日天气摘要。
参数:
latitude(浮点数,必填):纬度以十进制度数表示(-90到90)longitude(浮点数,必填):经度以十进制表示(-180到180)response_format(字符串,可选):“markdown”(默认)或“json”
例子:
{
"latitude": 48.8566,
"longitude": 2.3522,
"response_format": "markdown"
}包括天气数据
每个预报都提供了全面的天气信息:
- 温度:实际温度和“感觉”温度(°C)
- 风:速度(m/s)和方向(度)
- 降水:总量(mm)
- 湿度:相对湿度(%)
- 能见度:距离(米)
- 压力:平均海平面气压(Pa)
- 紫外线指数:紫外线辐射强度
- 天气条件:重要天气代码
错误处理
服务器提供清晰、可操作的错误消息:
- API关键问题:“错误:API密钥无效或丢失。请检查MET_OFFICE_API_key环境变量”
- 无效的位置:“错误:此位置的天气数据不可用”
- 速率限制:“错误:超出速率限制。请稍候,然后再发出更多请求”
- 网络问题:“错误:请求超时”或“错误:无法连接到Met Office API”
响应格式
Markdown格式(默认)
人类可读格式,包括:
- 清除节标题
- 格式化时间戳(UTC)
- 有组织的天气参数
- 为了可读性,限制在20个预测期内
JSON格式
机器可读的GeoJSON格式,包括:
- 完整的预测数据
- 所有可用的天气参数
- 全职系列
- 元数据和几何信息
字符限制
如果响应超过25000个字符,则会自动截断,并明确通知和指导如何获取更具体的数据。
发展
项目结构
uk-weather-mcp/
├── .github/
│ ├── workflows/
│ │ └── test-mcp.yml # GitHub Actions CI/CD workflow
│ └── SETUP.md # GitHub Actions setup guide
├── uk_weather_mcp.py # Main MCP server implementation
├── pyproject.toml # Project configuration and dependencies
├── README.md # This file
├── .env.example # Example environment variables
├── test_examples.md # Test scenarios and examples
└── CLAUDE.md # Project instructions测试
局部测试
在开发模式下运行服务器:
uv run uk_weather_mcp.py服务器将启动并等待通过stdio发送的MCP协议消息。
使用GitHub操作进行自动化测试
该存储库包括一个全面的GitHub Actions工作流,可以自动测试:
- ✅ Python语法验证
- ✅ 服务器初始化
- ✅ 所有三种预测工具(每小时、每3小时、每天)
- ✅ 两种输出格式(Markdown和JSON)
- ✅ 无效输入的错误处理
- ✅ 全球多个地点
安装说明:
- 将您的Met Office API密钥添加为名为的GitHub密钥
MET_OFFICE_API_KEY - 看 有关详细的设置说明
- 工作流在推送和拉取请求时自动运行
- 手动运行可以从“操作”选项卡触发
工作流使用 uv 用于依赖管理,并在Ubuntu和Python 3.12上运行。
代码质量
服务器遵循MCP最佳实践:
- FastMCP框架:使用官方Python MCP SDK
- Pydantic验证:具有清晰错误消息的强大输入验证
- 异步/等待:高效的异步HTTP请求
- 代码重用:用于API请求、错误处理和格式设置的共享实用程序
- 工具注释:适当的提示(readOnlyHint、幂等提示、openWorldHint)
- 综合文档:带有使用示例的详细文档字符串
许可证
MIT许可证-可根据需要自由使用和修改。
鸣谢
英国气象局数据中心API提供的天气数据。
