远程MCP服务器

一个运行在Cloudflare Workers上的远程MCP服务器,用于连接John Deere Operations Center,支持通过MCP兼容客户端浏览组织、田地、设备等工作数据。

  • by CoreyFransen08
  • TypeScript
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 CoreyFransen08/john-deere-ops-mcp

使用说明

约翰迪尔运营中心MCP服务器

托管在Cloudflare Workers上的远程MCP服务器,连接到John Deere运营中心。通过任何兼容MCP的客户端(Claude Desktop、Cursor等)浏览组织、现场、现场操作、设备、工作计划等。

建筑

服务器作为具有持久对象的Cloudflare Worker运行(McpAgent)提供有状态的MCP会话。身份验证使用 双OAuth代理 图案:

  • 下游: Worker是MCP客户端的OAuth服务器
  • 上游: Worker是John Deere的OAuth客户端

这意味着身份验证发生在传输层,不需要手动调用身份验证工具。

设置

先决条件

快速设置(推荐)

git clone <repo-url>
cd john-deere-ops-center
npm run setup

交互式设置脚本(scripts/setup.mjs)将带你走过每一步:

  1. 安装依赖项 --跑步 npm install
  2. Cloudflare登录 --跑步 wrangler login 在浏览器中
  3. 创建KV命名空间 --创建 OAUTH_KV 命名空间并将其ID修补到 wrangler.jsonc 自动地
  4. 输入凭据 --John Deere的提示 应用标识符 (JD_CLIENT_ID)以及 秘密 (JD_CLIENT_SECRET),然后将它们作为Cloudflare机密推送,并自动生成 COOKIE_ENCRYPTION_KEY
  5. 部署 --跑步 wrangler deploy 并打印您的Worker URL

在设置结束时,脚本会打印:

MCP endpoint:   https://<worker>.<subdomain>.workers.dev/mcp
Redirect URI:   https://<worker>.<subdomain>.workers.dev/callback

注册重定向URI 在 developer.deere.com 在...之下 我的应用→ 你的应用→ 重定向URI 在尝试进行身份验证之前。

首次登录: 登录John Deere后,系统将提示您将运营中心组织连接到应用程序。这是一个必需的一次性步骤——服务器会自动检测到它并将您重定向到 connections.deere.com 以完成选择。看 docs/oauth2-flow.md 了解详情。

手动设置

如果你喜欢自己跑每一步:

npm install
npx wrangler login
npx wrangler kv namespace create OAUTH_KV   # paste the id into wrangler.jsonc
npx wrangler secret put JD_CLIENT_ID
npx wrangler secret put JD_CLIENT_SECRET
npx wrangler secret put COOKIE_ENCRYPTION_KEY
npm run deploy

在以下网址注册您的申请 developer.deere.com 并添加 https://<worker>.<subdomain>.workers.dev/callback 作为重定向URI。

对于本地开发,请复制 .dev.vars.example 到 .dev.vars 并填写数值。

连接MCP客户端

添加到MCP客户端配置(例如Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "john-deere": {
      "command": "npx",
      "args": ["mcp-remote", "https://<worker>.<subdomain>.workers.dev/mcp"]
    }
  }
}

工具

组织与领域

工具 说明
jd_list_organizations 列出所有可访问的组织
jd_list_fields 列出组织的所有字段
jd_get_field 获取字段详细信息,包括边界
jd_list_field_operations 列出田地的种植、收获和施用操作

工作计划

工具 说明
jd_list_work_plans 列出组织的工作计划
jd_get_work_plan 通过ERID获取单一工作计划
jd_create_work_plan 制定有计划的工作计划

设备和机器健康

工具 说明
jd_list_equipment 列出组织的设备
jd_get_equipment 按ID获取设备详细信息
jd_get_machine_alerts 获取机器诊断和维护警报
jd_get_machine_engine_hours 获取发动机小时读数
jd_get_machine_hours_of_operation 获取发动机状态和运行历史记录
jd_get_machine_location_history 获取位置历史记录或最后已知位置
jd_get_machine_device_state_reports 获取终端和连接诊断

参考数据

工具 说明
jd_list_products 列出工作计划中使用的产品(化学品、肥料、品种等)
jd_list_operators 列出可用于工作计划分配的操作员
jd_list_guidance_lines 列出字段的指导线
jd_get_guidance_line 获取特定的指导方针

命令

命令 描述
/jd-fields [org] 浏览组织中的字段
/jd-ops [field] 查看现场操作数据
/jd-equipment [org] 浏览设备和机器运行状况
/jd-work-plans [org] 查看和管理工作计划
/jd-machine-health [machine] 检查机器警报和工作时间
/jd-guidance-lines [field] 查看字段的指导线

本地开发

cp .dev.vars.example .dev.vars
# Fill in JD_CLIENT_ID, JD_CLIENT_SECRET, COOKIE_ENCRYPTION_KEY
npm run dev

使用MCP检查员进行测试:

npx @modelcontextprotocol/inspector@latest

连接到 http://localhost:8787/mcp.

传输类型:流式HTTP 连接类型:直接

环境

这是针对 约翰迪尔沙盒 (sandboxapi.deere.com).沙盒限制:

  • 最多5个互联组织
  • 每月最多150000次API调用
  • 沙盒最长持续时间为18个月

要获得生产访问权限,请通过John Deere开发人员门户进行申请。

所需OAuth范围

在OAuth流程中会自动请求以下作用域:

范围 目的
ag1 查看字段、农场和客户端
ag2 分析生产数据
ag3 管理位置和生产数据
eq1 查看设备
eq2 查看详细的机器测量值
org1 查看员工、操作员和合作伙伴
org2 修改员工、操作员和合作伙伴
work1 查看工作和裁剪计划
work2 创建和管理工作和作物计划
files 文件API访问
offline_access 刷新令牌(防止每12小时重新验证一次)