气象MCP服务器
模型上下文协议(MCP)服务器,使用美国国家气象局(NWS)API提供天气预报和警报。此服务器使用FastMCP构建,可以部署为远程HTTP服务。
特性
- 天气预报:使用纬度/经度坐标获取美国任何地点的详细天气预报
- 天气警报:检索美国任何州的活动天气警报
- 远程HTTP服务器:可以远程部署并由MCP客户端访问的无状态HTTP服务器
- Docker支持:带有健康检查的容器化部署
- 高性能:内置FastMCP,可高效处理请求
可用工具
get_forecast
获取特定地点的详细天气预报。
参数:
latitude(浮动):位置的纬度longitude(浮动):位置的经度
退货: 5期天气预报,包括温度、风和详细情况
get_alerts
获取美国某个州的活跃天气警报。
参数:
state(string):两个字母的美国州代码(例如,“CA”、“NY”、“TX”)
退货: 活动天气警报列表,包括严重程度、描述和说明
安装
先决条件
- Python 3.12+
- 紫外线 包管理器
地方发展
- 克隆存储库:
git clone
cd remoteMCPServer/weather- 安装依赖项:
uv sync- 运行服务器:
uv run weather.py服务器将于启动 http://localhost:8000 默认情况下。
Docker部署
- 构建Docker镜像:
docker build -t weather-mcp-server .- 运行容器:
docker run -p 8000:8000 weather-mcp-server- 服务器将在以下时间可用
http://localhost:8000
配置
可以使用环境变量配置服务器:
MCP_HTTP_PORT:运行服务器的端口(默认值:8000)MCP_HTTP_HOST:将服务器绑定到的主机(默认值:127.0.0.1,Docker使用0.0.0.0)
用法示例
与MCP客户端一起使用
服务器运行后,您可以使用任何MCP客户端连接到它。服务器公开了两个工具:
获取天气预报
# Request forecast for San Francisco (37.7749, -122.4194)
result = await client.call_tool("get_forecast", {
"latitude": 37.7749,
"longitude": -122.4194
})获取天气警报
# Get alerts for California
result = await client.call_tool("get_alerts", {
"state": "CA"
})HTTP API终结点
服务器公开标准MCP HTTP端点:
GET /health-健康检查端点POST /mcp/v1/tools/list-列出可用工具POST /mcp/v1/tools/call-调用特定工具
API数据源
此服务器使用 美国国家气象局(NWS)API,它提供:
- 美国的高质量天气数据
- 不需要API密钥
- 免费公众访问
- 可靠的政府数据来源
发展
项目结构
weather/
├── weather.py # Main MCP server implementation
├── main.py # Alternative entry point
├── pyproject.toml # Project dependencies
├── Dockerfile # Container configuration
├── uv.lock # Locked dependency versions
└── README.md # This file依赖项
fastmcp>=2.10.1-用于构建MCP服务器的FastMCP框架httpx>=0.28.1-API请求的异步HTTP客户端mcp[cli]>=1.10.1-MCP CLI工具
错误处理
服务器包括强大的错误处理功能:
- HTTP请求超时(30秒)
- API不可用时的优雅降级
- 符合NWS API的正确用户代理标头
- JSON解析错误处理
健康监测
Docker容器包含一个健康检查,用于验证服务器是否正在响应:
- 间隔:30秒
- 超时:10秒
- 开始时间:5秒
- 重试:3次尝试
支持
对于问题和疑问:
