农业气象数据服务

Agri-Weather MCP是一个专为农业应用设计的天气模型上下文协议服务器,提供实时天气数据、预报和农业智能,支持农业操作、种植计划和作物管理决策。

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

使用说明

农业气象MCP

该项目提供了一个专门为农业应用设计的全面的天气模型上下文协议(MCP)服务器。它利用了免费 开放气象API 提供实时天气数据、预报和农业情报,以支持农业运营、种植计划和作物管理决策。

主要特点

  • 当前天气:获取实时、本地化的天气状况,包括温度、湿度、降水和土壤数据。
  • 天气预报:获取每小时详细的5天天气预报,以支持农业规划。
  • 农业警报:接收针对不同生长阶段(如种植、营养、开花)的作物特定警报和建议。
  • 土壤条件:检索多个深度的详细土壤温度和湿度信息。
  • 蒸散量数据:获取蒸散量(ET)并参考ET₀ 用于精确灌溉管理的数据。
  • 历史天气:访问历史天气数据进行趋势分析和季节规划。

技术栈

  • Python 3.11+
  • MCP服务器SDK:构建模型上下文协议服务器的核心框架。
  • HTTPX:用于向Open-Meteo API发出异步HTTP请求。
  • Pytest:用于运行综合测试套件。

设置和安装

  1. 克隆存储库:

    git clone <your-repository-url>
    cd agri-weather-mcp
    
  2. 运行安装脚本(从存储库根目录):

    ./scripts/setup.sh
    

替代设置

  1. 创建并激活Python虚拟环境:

    python3 -m venv .venv
    source .venv/bin/activate
    

    在Windows上,使用 .venv\Scripts\activate

  2. 安装所需的依赖项:

    pip install -r requirements.txt
    

用法

运行测试套件

该项目包括一个全面的测试套件,用于验证MCP服务器的所有功能。

要运行测试,请从项目的根目录执行以下命令:

python -m pytest

这将使用asyncio和trio后端运行所有测试,以确保与不同异步框架的兼容性。

测试特性

  • 全面覆盖:所有MCP工具和服务器组件的测试
  • 多区域支持:对所有支持的地区(印度尼西亚、东南亚、澳大利亚、印度)进行测试
  • 模拟API响应:使用与实际API响应结构匹配的真实模拟数据
  • 异步测试:兼容asyncio和trio后端
  • 稳健的错误处理:正确处理API错误和无效输入的测试

测试结构

测试套件组织如下:

  • test_mcp.py:包含主要的测试类和方法
  • conftest.py:包含pytest夹具和模拟数据
  • pytest.ini:包含pytest配置

这些测试是如何与服务器功能交互的实际示例。

MCP工具概述

服务器通过模型上下文协议公开以下工具:

  1. get_current_weather:提供特定位置的实时天气状况。

    • 参数: latitude, longitude
  2. get_weather_forecast:提供5天的天气预报,包括每日和每小时的数据。

    • 参数: latitude, longitude
  3. get_agricultural_alerts:生成特定作物的警告和建议。

    • 参数: latitude, longitude, crop_type, growth_stage
  4. get_soil_conditions:返回详细的土壤温度和湿度预测。

    • 参数: latitude, longitude
  5. get_evapotranspiration_data:为灌溉规划提供蒸散量数据。

    • 参数: latitude, longitude
  6. get_historical_weather:获取指定日期范围的历史天气数据。

    • 参数: latitude, longitude, start_date, end_date

许可证

该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。

归因

本项目使用Open Meteo的天气数据,该数据根据知识共享署名4.0国际许可证(CC BY 4.0)获得许可。

天气数据来自Open-Meteo.com

使用此项目时,您必须在显示Open Meteo数据的任何地方保持此归因。