农业气象计算服务器

基于Cloudflare Workers构建的农业气象计算服务器,提供天气数据和生长度日(GDU)计算功能,适用于美国各地的农业应用。

  • by CoreyFransen08
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 CoreyFransen08/agronomy-mcp

使用说明

农学MCP

以农学为重点 模型上下文协议 基于Cloudflare Workers构建的(MCP)服务器。为AI代理提供美国任何地点的天气数据和生长度单位(GDU)计算。

取代了从各种来源提取温度数据并一次在一个县的电子表格中运行GDU计算的手动工作流程。

使用Claude快速部署

复制并粘贴此提示,让Claude将此MCP服务器部署到您的Cloudflare帐户:

在以下位置克隆仓库 https://github.com/CoreyFransen08/agronomy-mcp 并将Agronomy MCP服务器部署到我的Cloudflare帐户。按照README中的设置说明进行操作——安装依赖项,创建KV命名空间,更新wrangler.json中的命名空间ID,然后运行 npm run deploy。点击/health端点验证部署。

Cloudflare帐户设置

如果您尚未配置Cloudflare帐户和CLI:

  1. 创建Cloudflare帐户 在 dash.cloudflare.com/signup (免费版作品)

  2. 安装牧马人 (Cloudflare CLI):

    npm install -g wrangler
    
  3. 验证:

    wrangler login
    

    这将打开一个浏览器窗口,使用您的Cloudflare帐户授权CLI。

  4. 验证 您的登录:

    wrangler whoami
    

一旦通过身份验证,请按照 设置 下面的部分用于安装、配置和部署。

工具

天气

工具 描述 缓存TTL
get_historical_weather 日期范围内的每日最低/最高温度 24h
get_current_weather 当前条件(温度、湿度、风、降水) 1h
get_forecast_weather 1-16天每日最低/最高温度预报 4h

增长度单位(GDU)

工具 描述 缓存TTL
calculate_gdu 从种植/开始日期到结束日期的累计GDU 24h
get_daily_gdu GDU一天 24小时
get_gdu_with_deviation GDU+偏离30年正常值(1994-2023) 7天

GDU工具默认为标准玉米参数(基数50F,上限86F),但接受其他作物的自定义值。

Web爬网

工具 说明
start_crawl 通过Cloudflare浏览器渲染启动异步网站抓取。返回作业ID
get_crawl_results 从爬网作业中检索状态和内容。支持分页和状态过滤
delete_crawl 取消正在运行的爬网作业。

爬行工具使用 Cloudflare浏览器渲染爬网端点。需要 CLOUDFLARE_ACCOUNT_ID 和 CLOUDFLARE_API_TOKEN 秘密(见 设置).

GDU公式

cappedMax   = min(Tmax, upperTemp)
adjustedMin = max(Tmin, baseTemp)
dailyGDU    = max(((cappedMax + adjustedMin) / 2) - baseTemp, 0)

位置分辨率

所有工具都通过以下任何一种方法接受位置(按此顺序解决):

方法 参数 示例
坐标 latitude, longitude 41.88, -93.10
FIPS代码 fipsCode "19169" (故事县,IA)
县名 countyName, state "Watonwan", "Minnesota"
现场边界 geojson 具有多边形几何体的GeoJSON特征

县名查找使用美国人口普查几何中的质心坐标。当一个县名存在于多个州(例如“华盛顿”)时 state 需要参数来消除歧义。

FIPS数据集包括约3220个美国县。

数据源

  • 天气: 开放气象API (免费,不需要API密钥)
    • 历史数据的存档端点
    • 当前+未来数据的预测端点
    • 当请求跨越过去和未来时,自动拆分日期范围
  • Web爬网: Cloudflare浏览器渲染API (需要Cloudflare API令牌)
  • 县重心:美国人口普查局通过PostGIS提供的县几何形状 ST_Centroid

建筑

  • 运行时:Cloudflare Workers+持久对象
  • MCP-SDK: @modelcontextprotocol/sdk 通过 agents (Cloudflare代理SDK)
  • 缓存:Cloudflare KV,带有每个工具的TTL。所有工具支持 forceRefresh: true 绕过缓存。
  • GeoJSON质心: @turf/centroid

设置

npm install

创建KV命名空间并更新其中的ID wrangler.jsonc:

npx wrangler kv namespace create CACHE

为爬网工具设置Cloudflare凭据:

npx wrangler secret put CLOUDFLARE_ACCOUNT_ID
npx wrangler secret put CLOUDFLARE_API_TOKEN

API令牌需要 浏览器渲染-编辑 许可。创建一个 dash.cloudflare.com/profile/api-tokes。您的帐户ID位于仪表板概述页面上。

对于本地开发人员,将这些添加到 .dev.vars 文件:

CLOUDFLARE_ACCOUNT_ID=your_account_id
CLOUDFLARE_API_TOKEN=your_api_token

发展

npm run dev

终点:

  • GET /health --健康检查
  • /mcp --MCP协议(流式HTTP)
  • /sse --MCP协议(SSE传输)

与…联系 MCP检查员 或任何MCP兼容客户端。

部署

npm run deploy

类型检查

npm run typecheck

许可证

麻省理工学院