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用于包管理
安装
- 克隆存储库:
git clone https://github.com/KMarkert/geoglows-mcp-test.git
cd geoglows-mcp-test- 使用创建虚拟环境并安装依赖项
uv:
uv venv
uv sync运行代理开发服务器
要直接运行MCP服务器,请执行以下命令:
uv run adk web