About John Deere Ops MCP
John Deere Ops MCP is an MCP server published by CoreyFransen08 in the Other category: mCP for connecting to JDO data.
The repository has 9 stars and 1 forks, with the last commit 5 months ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/CoreyFransen08/john-deere-ops-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about John Deere Ops MCP
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 12 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- !License declaredNo license file. Legally you have no right to use it in a product.
- !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
- !Dependencies pinnedNo lockfile. Installs can pull different code over time.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
1 check has not been run yet.
README
John Deere Operations Center MCP Server
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.).
Architecture
The server runs as a Cloudflare Worker with a Durable Object (McpAgent) providing stateful MCP sessions. Authentication uses a double OAuth proxy pattern:
- Downstream: The Worker is an OAuth server to MCP clients
- Upstream: The Worker is an OAuth client to John Deere
This means authentication happens at the transport layer — no manual auth tool call is needed.
Setup
Prerequisites
- A Cloudflare account (free tier works)
- A John Deere developer account with an application registered at developer.deere.com
- Node.js 18+
Quick setup (recommended)
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:
- Install dependencies — runs
npm install - Cloudflare login — runs
wrangler loginin your browser - Create KV namespace — creates the
OAUTH_KVnamespace and patches its ID intowrangler.jsoncautomatically - Enter credentials — prompts for your John Deere Application ID (
JD_CLIENT_ID) and Secret (JD_CLIENT_SECRET), then pushes them as Cloudflare secrets along with an auto-generatedCOOKIE_ENCRYPTION_KEY - Deploy — runs
wrangler deployand prints your Worker URL
At 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. Seedocs/oauth2-flow.mdfor details.
Manual setup
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.
Connect an MCP Client
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"]
}
}
}
Tools
Organizations & Fields
| 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 |
Work Plans
| 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 |
Equipment & Machine Health
| 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 |
Reference Data
| 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 |
Commands
| 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 |
Local Development
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
Environment
This targets the John Deere Sandbox (sandboxapi.deere.com). Sandbox limits:
- Max 5 connected organizations
- Max 150,000 API calls/month
- 18-month maximum sandbox duration
For production access, apply through the John Deere developer portal.
Required OAuth Scopes
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) |
README fetched from the repository 12 hours ago. The original is authoritative.