🏄 冲浪预测MCP服务器
MCP服务器,为全球任何沿海地区提供全面的冲浪预报。获取当前状况和5天预测,包括波高、周期、方向、风况和智能冲浪质量评估。
✨ 特性
- 🌊 当前冲浪条件 -实时波高、周期和方向
- 💨 风力条件 -风速、风向和阵风(以节为单位)
- 🌡️ 温度数据 -用于规划会议的空气温度
- 📅 5天预报 -规划冲浪活动的每日预测
- 📍 城市名称输入 -只需提供一个城市名称(例如“利沃诺”、“圣地亚哥”)
- 🎯 自动地理编码 -将城市名称转换为坐标
- 📊 结构化输出 -简洁的pydantic模型,便于集成
- ✅ 数据验证 -数据质量的全面验证
- 🏄 冲浪质量评估 -冲浪条件的智能解读
🚀 快速开始
地方发展
- 安装依赖项:
pip install -r requirements.txt- 运行服务器:
python server.py- 与mcp客户端连接(例如,claude桌面、cline、mcp客户端SDK等)
云部署
在几分钟内部署到fastmcp云:
- 创建一个 fastmcp云帐户
- 连接您的github帐户
- 部署此存储库
- 您的服务器将立即对任何mcp客户端可用
🔧 MCP图元
此服务器提供三种MCP原语:
工具
get_surf_forecast -获取任何地点的全面冲浪预报
# mcp tool call
get_surf_forecast("Livorno")
# returns validated SurfForecast object with:
# - location and coordinates
# - current wave, wind, and temperature conditions
# - 5-day daily forecasts
# - surf quality assessment资源
surf://info -提供服务器信息,包括功能、数据源和使用指南
提示
analyze_surf_conditions -生成一个结构化的提示,用于分析特定位置的冲浪状况,指导llm提供可操作的建议,包括质量评估、时间安排、趋势和技能水平指导
📁 项目架构
通过模块化设计实现关注点的清晰分离:
surf-forecast-mcp/
├── server.py # mcp server with tool definitions
├── models/
│ └── __init__.py # pydantic data models with validation
├── api/
│ ├── __init__.py # api client exports
│ ├── geocoding.py # geocoding api client (nominatim)
│ ├── marine.py # marine weather api client (open-meteo)
│ └── weather.py # weather forecast api client (open-meteo)
├── services/
│ ├── __init__.py # service exports
│ └── forecast.py # surf forecast business logic
├── example.py # usage examples
└── requirements.txt # dependencies关注点分离:
models/-数据结构和验证规则api/-外部集成、api客户端services/-业务逻辑、数据转换server.py-mcp接口,仅工具定义
📊 返回数据
工具:get_surf_forecast
获取任何地点的全面冲浪预报。
参数:
city_name(str):沿海城市/地点的名称(例如,“利沃诺”、“比亚里茨”、“圣地亚哥”)
返回结构化预测,包括:
当前状况(每小时)
- 波高(米)
- 涌浪高度(米)
- 风浪高度(米)
- 波浪方向(度)
- 涌浪方向(度)
- 波周期(秒)
- 涌浪周期(秒)
- 风速(节)
- 风向(度)
- 阵风(节)
- 气温(摄氏度)
5天预报(每日)
每天:
- 最大波高(米)
- 最大涌浪高度(米)
- 最大风浪高度(米)
- 主波方向(度)
- 主涌浪方向(度)
- 最大波周期(秒)
- 最大涌浪周期(秒)
- 最大风速(节)
- 主导风向(度)
- 最大阵风(节)
- 最高温度(摄氏度)
- 最低温度(摄氏度)
附加信息
- 位置坐标(纬度/经度)
- 冲浪质量评估及注意事项
输出示例
该工具返回针对LLM上下文消费优化的格式化文本:
# Surf Forecast: Livorno, Toscana, Italia
Location: 43.5484, 10.3116
## Current Conditions
Waves: 1.2m (9s period)
- Swell: 0.9m from W
- Wind waves: 0.3m
Wind: 9 knots from W (gusts 12 knots)
Temperature: 19°C
## Next Hours
03:00: 1.3m waves (swell 1.0m from W), 10kn wind from W
06:00: 1.4m waves (swell 1.1m from W), 11kn wind from W
09:00: 1.5m waves (swell 1.2m from WSW), 12kn wind from NW
12:00: 1.6m waves (swell 1.2m from WSW), 11kn wind from NW
## 5-Day Forecast
2025-11-10:
Waves: 1.5m max (swell 1.1m from W)
Wind: 12 knots from W
Temp: 16-22°C
2025-11-11:
Waves: 1.8m max (swell 1.4m from WSW)
Wind: 10 knots from NW
Temp: 15-21°C
2025-11-12:
Waves: 1.6m max (swell 1.2m from W)
Wind: 8 knots from N
Temp: 14-20°C
2025-11-13:
Waves: 1.4m max (swell 1.0m from WNW)
Wind: 11 knots from NE
Temp: 15-19°C
2025-11-14:
Waves: 1.7m max (swell 1.3m from W)
Wind: 13 knots from E
Temp: 16-21°C
## Surf Quality
good wave height for most surfers | light breeze - good conditions | moderate period - decent wave quality | swell dominant - cleaner conditions为什么是这种格式?
- ✓ 简洁易读
- ✓ 上下文高效(约200-300个令牌,而JSON为2000多个令牌)
- ✓ 易于LLM解析和推理
✅ 数据验证
所有数据均使用Pydantic模型进行验证。
🌐 数据源
此服务器结合了来自两个Open Meteo API的数据:
API海洋天气
开放气象海洋API 提供:
- 5公里分辨率的全球覆盖
- 每小时和每天的波浪预报
- 多种波浪参数(显著高度、涌浪、风浪)
- 波向和周期数据
天气预报API
开放气象API 提供:
- 风速、风向和阵风(以节为单位)
- 空气温度
- 每小时和每日预报
这两个API都可以免费用于非商业用途。
______________________________________________________________________
