loading…
Search for a command to run...
loading…
Enables interaction with the John Deere Operations Center to browse organizations, field details, and agricultural operation data. It utilizes a Cloudflare Work
Enables interaction with the John Deere Operations Center to browse organizations, field details, and agricultural operation data. It utilizes a Cloudflare Workers architecture with an integrated OAuth proxy for secure access via any MCP-compatible client.
A remote MCP server hosted on Cloudflare Workers that connects to John Deere Operations Center. Browse organizations, fields, field operations, equipment, work plans, and more via any MCP-compatible client (Claude Desktop, Cursor, etc.).
The server runs as a Cloudflare Worker with a Durable Object (McpAgent) providing stateful MCP sessions. Authentication uses a double OAuth proxy pattern:
This means authentication happens at the transport layer — no manual auth tool call is needed.
git clone <repo-url>
cd john-deere-ops-center
npm run setup
The interactive setup script (scripts/setup.mjs) will walk you through every step:
npm installwrangler login in your browserOAUTH_KV namespace and patches its ID into wrangler.jsonc automaticallyJD_CLIENT_ID) and Secret (JD_CLIENT_SECRET), then pushes them as Cloudflare secrets along with an auto-generated COOKIE_ENCRYPTION_KEYwrangler deploy and prints your Worker URLAt the end of setup, the script prints:
MCP endpoint: https://<worker>.<subdomain>.workers.dev/mcp
Redirect URI: https://<worker>.<subdomain>.workers.dev/callback
Register the redirect URI at developer.deere.com under My Applications → your app → Redirect URIs before attempting to authenticate.
First login: After signing in with John Deere, you will be prompted to connect your Operations Center organization to the application. This is a required one-time step — the server detects it automatically and redirects you to
connections.deere.comto complete the selection. See docs/oauth2-flow.md for details.
If you prefer to run each step yourself:
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
Register your application at developer.deere.com and add https://<worker>.<subdomain>.workers.dev/callback as a redirect URI.
For local development, copy .dev.vars.example to .dev.vars and fill in the values.
Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"john-deere": {
"command": "npx",
"args": ["mcp-remote", "https://<worker>.<subdomain>.workers.dev/mcp"]
}
}
}
| Tool | Description |
|---|---|
jd_list_organizations |
List all accessible organizations |
jd_list_fields |
List all fields for an organization |
jd_get_field |
Get field details including boundaries |
jd_list_field_operations |
List planting, harvest, and application operations for a field |
| Tool | Description |
|---|---|
jd_list_work_plans |
List work plans for an organization |
jd_get_work_plan |
Get a single work plan by ERID |
jd_create_work_plan |
Create a planned work plan |
| Tool | Description |
|---|---|
jd_list_equipment |
List equipment for an organization |
jd_get_equipment |
Get equipment details by ID |
jd_get_machine_alerts |
Get machine diagnostic and maintenance alerts |
jd_get_machine_engine_hours |
Get engine hour readings |
jd_get_machine_hours_of_operation |
Get engine state and operation history |
jd_get_machine_location_history |
Get location history or last known position |
jd_get_machine_device_state_reports |
Get terminal and connectivity diagnostics |
| Tool | Description |
|---|---|
jd_list_products |
List products (chemicals, fertilizers, varieties, etc.) for use in work plans |
jd_list_operators |
List operators available for work plan assignment |
jd_list_guidance_lines |
List guidance lines for a field |
jd_get_guidance_line |
Get a specific guidance line |
| Command | Description |
|---|---|
/jd-fields [org] |
Browse fields in an organization |
/jd-ops [field] |
View field operations data |
/jd-equipment [org] |
Browse equipment and machine health |
/jd-work-plans [org] |
View and manage work plans |
/jd-machine-health [machine] |
Check machine alerts and hours |
/jd-guidance-lines [field] |
View guidance lines for a field |
cp .dev.vars.example .dev.vars
# Fill in JD_CLIENT_ID, JD_CLIENT_SECRET, COOKIE_ENCRYPTION_KEY
npm run dev
Test with the MCP Inspector:
npx @modelcontextprotocol/inspector@latest
Connect to http://localhost:8787/mcp.
Transport Type: Streamable HTTP Connection Type: Direct
This targets the John Deere Sandbox (sandboxapi.deere.com). Sandbox limits:
For production access, apply through the John Deere developer portal.
The following scopes are requested automatically during the OAuth flow:
| Scope | Purpose |
|---|---|
ag1 |
View fields, farms, and clients |
ag2 |
Analyze production data |
ag3 |
Manage locations and production data |
eq1 |
View equipment |
eq2 |
View detailed machine measurements |
org1 |
View staff, operators, and partners |
org2 |
Modify staff, operators, and partners |
work1 |
View work and crop plans |
work2 |
Create and manage work and crop plans |
files |
Files API access |
offline_access |
Refresh token (prevents re-authentication every 12 hours) |
Run in your terminal:
claude mcp add john-deere-operations-center-mcp-server -- npx CSA PROJECT - FZCO © 2026 IFZA Business Park, DDP, Premises Number 31174 - 001
Security
Low riskAutomated heuristic from public metadata — not a security guarantee.