天气数据服务器

一个提供葡萄牙天气数据的模型上下文协议(MCP)服务器,包含天气预报、天气警报、海况、火灾风险等多种功能。

  • by gabriel20vieira
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gabriel20vieira/ipma-mcp-server

使用说明

IPMA气象MCP服务器(Python)

一个全面的模型上下文协议(MCP)服务器,提供从IPMA(Instituto Português do Mar e da Atmosfera)访问葡萄牙天气数据的权限。

数据源

所有数据均由 国际项目管理协会 (葡萄牙海洋与大气研究所,I.P.)

  • API文件:https://api.ipma.pt/
  • 天气预报每天更新两次(00 UTC和12 UTC)
  • 时间单位为UTC(葡萄牙大陆/马德拉岛冬季加0小时,夏季加1小时;亚速尔群岛冬季加1小时,夏季减0小时)

特性

此MCP服务器通过以下工具提供对IPMA API的完全访问:

🌦️ 天气预报

  1. 获取预测 -葡萄牙城市5天天气预报

    • 详细的每日预报,包括温度、降水、风
    • 支持所有葡萄牙城市和岛屿(马德拉岛和亚速尔群岛)
  2. get_daily_aggregate_预测 -所有地点的每日汇总预测

    • 在一个查询中获取整个葡萄牙的预测
    • 最多支持3天(今天、明天、后天)

⚠️ 天气警告

  1. 获取_天气_收益 -主动气象预警(最多3天)
    • 警告类型:降水、风、雾、海洋搅动、雪、雷暴等。
    • 意识水平:绿色(正常)、黄色、橙色、红色
    • 包括受影响区域和时间段

🌊 海况

  1. 获取_预报 -沿海地区的海况预报(最多3天)
    • 波高、波周期、波向
    • 海面温度
    • 覆盖葡萄牙所有沿海地区

🔥 火灾风险

  1. get_fire_risk -火灾风险预测(最多2天)
    • 所有市政当局的RCM(Risco de Incêndio)分类
    • 风险等级:低、中、高、极高、最高

☀️ 紫外线指数

  1. 获取_预测 -紫外线辐射指数预测(最多3天)
    • 紫外线指数从低到极端
    • 保护建议包括

🌡️ 气象站

  1. get_station_observations -气象站的气象观测
    • 最后24小时的小时数据
    • 温度、湿度、压力、风、降水、辐射

🔍 地震数据

  1. 获取地震数据 -地震活动信息(过去30天)
    • 覆盖范围:葡萄牙大陆、亚速尔群岛、马德拉岛
    • 地区筛选

📚 参考数据

  1. list_可用城市 -列出所有可用位置

    • 完整的城市和岛屿列表
    • 按地区分组(大陆、马德拉、亚速尔群岛)
  2. get_weather_type_descriptions -天气类型代码说明

    • 葡萄牙语和英语描述
    • 帮助解释预报中的天气类型ID

安装

  1. 安装依赖项:
pip install -e .
  1. 配置您的MCP客户端以使用此服务器:

对于Claude Desktop,请在配置文件中添加:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
    "mcpServers": {
        "weather": {
            "command": "python",
            "args": ["-m", "weather"],
            "cwd": "/path/to/weather-server-python"
        }
    }
}

或使用 uv 为了更好的环境管理:

{
    "mcpServers": {
        "weather": {
            "command": "uv",
            "args": ["run", "weather"],
            "cwd": "/path/to/weather-server-python"
        }
    }
}

用法示例

配置后,您可以向Claude提出以下问题:

  • 里斯本的天气预报如何
  • “葡萄牙有任何活跃的天气预警吗?”
  • “明天波尔图海岸的海况预报是什么?”
  • “告诉我今天的火灾风险”
  • “未来3天的紫外线水平是多少?”
  • “从气象站1210881获取观测数据”
  • “列出所有可用的葡萄牙城市”
  • “亚速尔群岛记录了什么地震活动?”

API覆盖范围

此服务器实现了所有主要的IPMA开放数据端点:

✅ 天气预报3天
✅ 天气预报 每天长达 5 天 总计
✅ 天气预报 每天长达3天,每天汇总信息
✅ 地震信息, 过去30天 (亚速尔群岛, 大陆, 马德拉)
✅ 海洋状况预报长达3天,每天汇总信息
✅ 火灾风险预测长达2天,每天汇总信息
✅ 紫外线风险预测长达3天(紫外线指数)
✅ 气象站观测(时间数据,过去24小时)

与Open WebUI集成

IPMA MCP服务器可以通过以下方式与Open WebUI(v0.6+)集成 mcpo (MCP到OpenAPI代理),它将基于stdio的MCP服务器连接到Open WebUI可访问的REST端点。

install.sh快速入门

我们提供了一个安装助手脚本来设置环境:

# Make the script executable
chmod +x install.sh

# Run the installation
./install.sh

脚本将:

  • 安装 uv 如果尚未出现
  • 创建虚拟环境
  • 安装所有依赖项
  • 验证安装

手动设置

1. 先决条件

  • 打开已安装并正在运行的WebUI(例如,通过Docker):
    docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway \
      -v open-webui:/app/backend/data \
      -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
      --name open-webui --restart always \
      ghcr.io/open-webui/open-webui:main
    
  • Python 3.10+ uv (通过安装 curl -LsSf https://astral.sh/uv/install.sh | sh)
  • 克隆此存储库

2. 设置虚拟环境

cd /path/to/ipma-mcp-server
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -e .

3. 测试MCP服务器

直接运行服务器(默认情况下使用stdio传输):

uv run python weather.py

这将在本地启动MCP服务器。按Ctrl+C停止。

4. 启动mcpo代理

安装mcpo(Open WebUI的官方MCP到OpenAPI代理):

uv tool install mcpo

将MCP服务器代理到端口8000上的OpenAPI(使用安全的API密钥):

uvx mcpo --port 8000 --api-key "your-secret-key" -- uv run python weather.py
  • 测试:访问 http://localhost:8000/docs 对于自动生成的OpenAPI模式
  • 所有IPMA工具都应出现在文档中

Docker替代方案:

docker run -p 8000:8000 -v /path/to/ipma-mcp-server:/app \
  ghcr.io/open-webui/mcpo:main \
  --api-key "your-secret-key" -- python /app/weather.py

5. 添加到打开的WebUI

  • 打开您的Open WebUI实例(例如。, http://localhost:3000)
  • 首选 设置 (齿轮图标)> 工具 (如果是管理员,请选择“管理面板”>“外部工具”)
  • 点击 +添加工具服务器
  • 配置:
    • 类型:OpenAPI(或MCP流式HTTP,如果可用)
    • 统一资源定位符: http://localhost:8000 (完整基本URL)
    • 认证:带有API密钥的承载令牌(your-secret-key)
  • 保存并重新启动Open WebUI(如果提示)

集成体系结构

Open WebUI (Port 3000)
    ↓ HTTP REST calls
mcpo Proxy (Port 8000)
    ↓ stdio JSON-RPC
IPMA MCP Server (weather.py)
    ↓ HTTPS
IPMA API (api.ipma.pt)

有关完整的MCP文档,请参阅 打开WebUI MCP指南.

许可证

看 快速入门 有关MCP的更多信息,请参阅教程。