Skip to main content
Glama
CoreyFransen08

John Deere Operations Center MCP Server

John Deere Operations Center MCP Server

A remote MCP server hosted on Cloudflare Workers that connects to John Deere Operations Center. Browse organizations, fields, and field operations data 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

1. Cloudflare Account & Wrangler CLI

  1. Create a Cloudflare account (if you don’t have one):

  2. Install the Wrangler CLI (Cloudflare’s Workers CLI):

    npm install -g wrangler

    Or use it via npx (no global install):

    npx wrangler --version
  3. Log in to Cloudflare from the terminal:

    npx wrangler login

    This opens a browser to authenticate Wrangler with your Cloudflare account.

2. Register a John Deere Developer Application

  1. Go to developer.deere.com and sign in.

  2. Create a new application under My Applications.

  3. Add your Worker's callback URL as a Redirect URI:

    https://john-deere-mcp.<your-subdomain>.workers.dev/callback
  4. Copy your Application ID (Client ID) and Secret (Client Secret).

3. Create the KV Namespace

npx wrangler kv namespace create OAUTH_KV

Copy the output id into wrangler.jsonc under kv_namespaces.

4. Set Secrets

npx wrangler secret put JD_CLIENT_ID
npx wrangler secret put JD_CLIENT_SECRET
npx wrangler secret put COOKIE_ENCRYPTION_KEY

For local development, copy .dev.vars.example to .dev.vars and fill in the values.

5. Install & Deploy

npm install
npm run deploy

6. Connect an MCP Client

Add to your client's MCP config (e.g. Claude Desktop claude_desktop_config.json):

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

Tools

Tool

Description

jd_list_organizations

Lists all accessible organizations

jd_list_fields

Lists fields for an organization

jd_get_field

Gets field details including boundaries

jd_list_field_operations

Lists planting/harvest/application operations

Commands

Command

Description

/jd-fields [org]

Browse fields in an organization

/jd-ops [field]

View field operations data

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

ag1 ag2 ag3 eq1 eq2 org1 org2 files offline_access

These are requested automatically during the OAuth flow.

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CoreyFransen08/john-deere-ops-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server