天气图表服务

ECMWF OpenCharts MCP Server 是一个用于从ECMWF OpenCharts API获取天气图表的MCP服务器,支持命令行和HTTP模式运行。

  • by AnattaResearch
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AnattaResearch/weather-mcp

使用说明

ECMWF开放式图表MCP服务器

MCP服务器,用于从ECMWF OpenCharts API获取天气图。建于 快速MCP.

安装

pip install -r requirements.txt

运行服务器

stdio模式(适用于克劳德桌面)

python ecmwf_charts_mcp.py

HTTP模式(用于远程访问)

python -c "from ecmwf_charts_mcp import mcp; mcp.run(transport='http', port=8000)"

部署到铁路(MCP HTTP传输)

此回购包括 Procfile 和 railway.toml 使用HTTP启动MCP服务器 Python入口点。铁路提供 PORT 环境变量自动。

步骤:

  1. 创建一个新的铁路项目并链接此存储库。
  2. 确保启动命令为 python ecmwf_charts_mcp.py (在中预先配置 railway.toml). 服务器读取 PORT 从环境中启用HTTP模式并绑定到 0.0.0.0.
  3. 部署,然后配置支持MCP的客户端以连接到Railway URL(使用 /mcp 如果您的客户端要求MCP端点,则选择路径)。

配置

克劳德桌面版

添加到Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS或 ~/.config/Claude/claude_desktop_config.json 在Linux上):

{
  "mcpServers": {
    "ecmwf-charts": {
      "command": "python3",
      "args": ["/path/to/ecmwf_charts_mcp.py"]
    }
  }
}

使用FastMCP命令行界面

您还可以使用FastMCP CLI运行服务器:

fastmcp run ecmwf_charts_mcp.py

可用工具

1. list_ecmwf_products

列出具有可选过滤器的可用图表产品。

参数:

  • filter_range (可选):“中等”、“次季节性”或“全部”
  • filter_parameter (可选):“温度”、“风”、“位势”或“全部”

例子:

{
  "filter_range": "sub-seasonal",
  "filter_parameter": "temperature"
}

2. get_available_times

获取产品的有效时间和基准时间。

参数:

  • product_id:产品标识符(例如“extended-nomaly-z500”)
  • base_time:ISO格式的基准时间(例如,“2026-01-20T00:00:00Z”)

例子:

{
  "product_id": "extended-anomaly-z500",
  "base_time": "2026-01-20T00:00:00Z"
}

3. fetch_ecmwf_chart

获取带有元数据的天气图图像。

参数:

  • product_id:产品标识符
  • base_time:ISO格式的基准时间
  • valid_time:ISO格式的有效时间

例子:

{
  "product_id": "extended-anomaly-z500",
  "base_time": "2026-01-20T00:00:00Z",
  "valid_time": "2026-02-02T00:00:00Z"
}

退货:

  • 图表元数据(文本)
  • PNG图像(base64)

主要产品

次季节性(第2-6周)

  • extended-anomaly-z500:500 hPa高度异常
  • extended-anomaly-2t:2m温度异常
  • extended-anomaly-uv:10米风异常

中等范围(0-15天)

  • medium-2t-mean-spread:2m温度集合
  • medium-t500-mean-spread:500百帕位势系综
  • medium-10ws-mean-spread:10m风速集合
  • medium-ens-wind:100米风概率

时间格式

次季节性产品每周使用一次:

  • 基础:最新运行(例如,“2026-01-20T00:00:00Z”)
  • 有效:每周步数(例如,“2026-02-02T00:00:00Z”、“2026-02-09T00:00:000Z”)

中档产品使用6小时间隔(先检查可用时间)。

用法示例

# List products
result = await call_tool("list_ecmwf_products", {
    "filter_range": "sub-seasonal"
})

# Check available times
result = await call_tool("get_available_times", {
    "product_id": "extended-anomaly-z500",
    "base_time": "2026-01-20T00:00:00Z"
})

# Fetch chart
result = await call_tool("fetch_ecmwf_chart", {
    "product_id": "extended-anomaly-z500",
    "base_time": "2026-01-20T00:00:00Z",
    "valid_time": "2026-02-02T00:00:00Z"
})

图表解释

500hPa位势异常

  • 阳性(橙色/红色):高压脊,比正常温度高
  • 负片(蓝色):低压槽,比正常冷
  • 用于阻塞模式和温度预测

2m温度异常

  • 供暖/制冷需求的直接指标
  • 天然气消费量预测的关键

风异常

  • 对风能生产很重要
  • 影响温度平流模式

API 文档

完整的ECMWF OpenCharts API文档:https://charts.ecmwf.int/

许可证

麻省理工学院