使用说明
气象MCP服务器
一种模型上下文协议(MCP)服务器,使用美国国家气象局(NWS)API提供天气数据工具。
概述
此MCP服务器提供了两种访问天气信息的主要工具:
- 获取警报:获取美国某个州的活动天气警报
- 获取预测:检索特定纬度/经度的详细天气预报
该服务器使用FastMCP构建,并通过stdio传输进行通信,使其与Claude Desktop等MCP客户端兼容。
特性
- 🌤️ 国家气象局的实时天气预报
- ⚠️ 按州分列的活跃天气警报
- 🔄 异步API调用高效的数据检索
- 🛡️ 强大的错误处理和用户友好的响应
- 📦 与MCP兼容客户端轻松集成
需求
- Python 3.11或更高版本
- 紫外线 包管理器(推荐)
安装
使用紫外线(推荐)
# Clone the repository
git clone <repository-url>
cd weather
# Install dependencies
uv sync
# Activate virtual environment
source .venv/bin/activate
使用pip
# Clone the repository
git clone <repository-url>
cd weather
# Create virtual environment
python -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -e .
用法
运行服务器
uv run weather.py
与MCP客户端集成
要将此服务器与Claude Desktop等MCP客户端一起使用,请将其添加到您的MCP配置中:
{
"mcpServers": {
"weather": {
"command": "uv",
"args": ["--directory", "/path/to/weather", "run", "weather.py"]
}
}
}
可用工具
获取警报
获取美国某个州的活跃天气警报。
参数:
state(string):两个字母的美国州代码(例如,“CA”、“NY”)
例子:
get_alerts(state="CA")
获取预测
检索特定位置的天气预报。
参数:
latitude(浮动):纬度坐标longitude(float):经度坐标
例子:
get_forecast(latitude=37.7749, longitude=-122.4194)
API集成
此服务器使用美国国家气象局API(API.weither.gov):
/alerts/active/area/{state}-各州天气警报/points/{lat},{lon}-预测网格端点- 来自点响应的预测URL-详细预测
所有API请求都包含NWS API要求的正确User-Agent和Accept头。
发展
项目结构
weather/
├── weather.py # Main MCP server implementation
├── main.py # Entry point (placeholder)
├── config.json # Configuration file
├── pyproject.toml # Project metadata and dependencies
├── uv.lock # Locked dependencies
└── README.md # This file
添加新工具
- 在中定义异步函数
weather.py - 用
@mcp.tool() - 使用
make_nws_request()用于NWS API调用 - 返回格式化字符串,而不是原始JSON
- 优雅地处理错误
测试
通过以下方式测试服务器:
- 运行它并通过stdin提供输入
- 与MCP客户端集成
- 使用MCP CLI工具
错误处理
- 网络错误返回用户友好的错误消息
- 没有原始异常暴露给客户端
- 所有响应都是带有清晰标签的格式化字符串
贡献
欢迎投稿!请随时提交拉取请求。
许可证
BSD-3条款许可证-详见许可证文件
作者
布莱恩·肯普(bryan@kempville.com)
致谢
- 内置于 FastMCP
- 天气数据来自 美国国家气象局API
