全球水流数据服务

提供全球河流水流数据的预测、历史记录和统计分析服务,适用于水文研究和灾害预警。

  • by KMarkert
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 KMarkert/geoglows-mcp-test

使用说明

GEOGLOWS MCP服务器和代理

该项目为GEOGLOWS API提供了一个模型上下文协议(MCP)服务器和一个智能代理,该智能代理使用该服务器来获取和处理全局流数据。

关于GEOGLOWS水文模型

GEOGLOWS水文模型每天午夜(UTC+00)运行。该模型基于ECMWF ENS和HRES气象和陆面模型预报集合。每天有51名成员驾驶该模型。ERA5再分析数据集也用于对每条河流进行回顾性模拟。该模型提供了前一时间间隔(1、3或24小时,具体取决于数据集)内以m^3/s为单位的河流。

组件

1.GEOGLOWS MCP服务器

MCP服务器(src/mcp/geoglows_mcp_server.py)通过一组工具提供对GEOGLOWS API的直接访问。

可用工具

  • get_forecasted_streamflow(river_id: int, date: Optional[str] = None):获取给定河段的预测流量。
  • get_historical_streamflow(river_id: int, start_date: Optional[str] = None, end_date: Optional[str] = None):获取给定河段的历史流量。
  • get_forecast_stats(river_id: int, date: Optional[str] = None):获取给定河段的预报统计数据。
  • get_return_periods(river_id: int):获取给定河段的重现期。

2.Geoglows试剂

代理人(src/agents/agent.py)是一个更高级的组件,它使用MCP服务器来满足用户对流数据的请求。它由两个主要部分组成:

  • geoglows_data_agent:LLM代理,它解释用户查询,调用MCP服务器上的相应工具以获取流数据,并返回原始JSON数据。
  • root_agent:协调流程的高级代理。它使用 geoglows_data_agent 获取数据,然后使用 plot_streamflow 该工具用于可视化时间序列数据,将输出保存为PNG工件。

他们如何互动

这 geoglows_data_agent 被配置为启动 geoglows_mcp_server.py 作为一个子流程,使用 stdio 为了沟通。当代理收到任务(例如,“获取12345河的预报”)时,它会确定使用哪个MCP工具(get_forecasted_streamflow),在正在运行的服务器上调用它,并接收数据。这 root_agent 然后获取这些数据,并可以执行进一步的操作,如绘图。

该架构将核心数据访问逻辑(MCP服务器)与智能、面向任务的逻辑(代理)分离,使系统模块化和可扩展。

入门指南

先决条件

  • Python 3.12+
  • uv 用于包管理

安装

  1. 克隆存储库:

    git clone https://github.com/KMarkert/geoglows-mcp-test.git
    cd geoglows-mcp-test
    
  2. 使用创建虚拟环境并安装依赖项 uv:

    uv venv
    uv sync
    

运行代理开发服务器

要直接运行MCP服务器,请执行以下命令:

uv run adk web