Fogcast MCP服务器
用于访问德国康斯坦茨天气数据的Python MCP(模型上下文协议)服务器。该服务器提供使用官方MCP协议从Fogcast数据接口检索当前天气状况和天气预报的工具。
特性
- 当前天气数据:访问DWD、OpenMeteo和当地气象站的实时天气测量数据
- 天气预报:从多个天气模型中检索预报
- 模型比较:比较不同天气模型的预报
- MCP协议:使用官方MCP库实现完整的MCP服务器
- 异步支持:异步操作可提高性能
项目结构
fogcast_mcp/
├── main.py # Main entry point
├── requirements.txt # Python dependencies
├── README.md # This file
├── env.example # Environment configuration template
├── tests/ # Test suite
│ ├── __init__.py
│ └── test_app.py
└── src/ # Source code package
└── fogcast_mcp/ # Main package
├── __init__.py
├── app.py # MCP server application
├── config.py # Configuration management
├── models/ # Data models and DTOs
│ ├── __init__.py
│ ├── weather_data.py
│ └── api_response.py
├── integration/ # External API integration
│ ├── __init__.py
│ ├── http_client.py
│ └── fogcast_client.py
└── tools/ # MCP tool implementations
├── __init__.py
├── weather_tools.py
└── forecast_tools.py安装
- 克隆存储库:
git clone
cd fogcast_mcp- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt配置
服务器使用环境变量进行配置。创建一个 .env 文件或设置以下环境变量:
所需配置
FOGCAST_BASE_URL:Fogcast API服务器的基本URL(默认值:https://fogcast.in.htwg-konstanz.de/api)
可选配置
FOGCAST_TIMEOUT:请求超时(秒)(默认值:30)MCP_SERVER_NAME:MCP服务器名称(默认值:fogcast-weather)MCP_SERVER_VERSION:MCP服务器版本(默认值:1.0.0)LOG_LEVEL:日志记录级别(默认值:INFO)
示例.env文件
FOGCAST_BASE_URL=https://fogcast.in.htwg-konstanz.de/api
LOG_LEVEL=DEBUG注: 这 .env 应用程序启动时,文件会自动加载。如果没有安装python dotenv,可以手动设置环境变量。
用法
启动服务器
python main.py服务器将以MCP stdio模式启动,并通过stdin/stdout进行通信。
可用工具
MCP服务器提供以下工具:
1.获取当前天气
- 工具:
get_current_weather - 描述:获取康斯坦茨的当前天气数据
- 参数:无
2.获取天气摘要
- 工具:
get_weather_summary - 描述:获取当前天气状况的摘要
- 参数:无
3.获取可用型号
- 工具:
get_available_models - 描述:获取可用预测模型列表
- 参数:无
4.获取预测
- 工具:
get_forecast - 描述:获取特定模型和日期时间的天气预报
- 参数:
- model_id (必填):预测模型的ID - datetime (可选):以YYYY-MM-DDTHH:MM:SSZ格式预测日期时间
5.获取当前预测
- 工具:
get_current_forecast - 描述:获取特定模型的当前预测
- 参数:
- model_id (必填):预测模型的ID
6.获取预测摘要
- 工具:
get_future_weather_forecast - 描述:获取预测条件摘要
- 参数:
- model_id (必填):预测模型的ID - datetime (可选):以YYYY-MM-DDTHH:MM:SSZ格式预测日期时间
7.比较模型
- 工具:
compare_models - 描述:比较多个模型的预测
- 参数:
- model_ids (必填):要比较的型号ID列表 - datetime (可选):以YYYY-MM-DDTHH:MM:SSZ格式预测日期时间
可用资源
MCP服务器还提供以下资源:
fogcast://models-可用预测模型列表fogcast://current-weather-康斯坦茨的当前天气数据fogcast://weather-summary-当前天气状况概述
MCP协议
此服务器实现模型上下文协议(MCP),并通过stdin/stdout进行通信。它提供:
- 工具:天气数据访问的可执行功能
- 资源:天气信息的可读数据源
- 异步操作:所有操作都是异步的,以获得更好的性能
数据模型
天气数据
timestamp:ISO格式日期时间temperature:温度(摄氏度)humidity:湿度百分比pressure:大气压力(hPa)wind_speed:风速(m/s)wind_direction:风向(度)visibility:能见度(单位:米)precipitation:降水量(mm)fog_probability:雾概率(0-1)
API响应
所有API响应都遵循以下结构:
{
"success": true,
"data": { ... },
"message": "Operation successful",
"error": null
}发展
运行测试
pytest代码格式化
black .代码检查
flake8 .类型检查
mypy .生产部署
使用Docker编写开放式WebUI
这是推荐的部署方法。设置包括:
# Start all services
docker compose up -d --build
# View logs
docker logs fogcast-mcp -f
docker logs openwebui -f
# Stop services
docker compose down这将开始:
- 打开WebUI 在http://localhost:8080
- Fogcast MCP服务器 (stdio模式,通过docker exec访问)
Dockerfile基于Python 3.11-slim,包含所有必要的依赖项。
配置
MCP服务器需要在Open WebUI中配置:
通过打开WebUI管理UI\*\*(推荐)
- 打开http://localhost:8080
- 转到管理面板→ 设置→ 外部工具
- 选择类型“OpenAPI”
- 作为基本URL使用“http://localhost:8000"
- 对于OpenAPI规范url,请使用“http://localhost:8000/openapi.json"
故障排除
400预测请求错误
如果您在调用预测工具时收到400 Bad Request错误,则此问题已在最新版本中得到修复。问题是Fogcast API要求将日期时间值四舍五入到最接近的小时。
解决方案: 更新到最新代码。日期时间值现在自动四舍五入到最接近的小时。
例子:
- 输入:
2025-10-27T14:30:45Z - 自动四舍五入为:
2025-10-27T14:00:00Z
看 SOLUTION_SUMMARY.md 有关此修复程序的详细信息。
连接错误
如果您遇到连接错误:
- 检查一下
FOGCAST_BASE_URL在您的.env文件 - 验证API是否可访问:
curl https://fogcast.in.htwg-konstanz.de/api/models - 检查您的网络连接和防火墙设置
环境变量未加载
如果未从加载环境变量 .env:
- 确保已安装python dotenv:
pip install python-dotenv - 验证
.env文件存在于项目根目录中 - 检查文件权限:
ls -la .env
测试
运行附带的测试脚本以验证一切正常:
# Test datetime rounding fix
python3 test_fix.py
# Test full OpenWebUI request flow
python3 test_openwebui_request.py
# Run full test suite
pytest许可证
该项目根据MIT许可证获得许可。
支持
有关问题和疑问,请在存储库中创建问题或联系开发团队。
