Getting Started with John Deere Field Data Using FieldMCP


John Deere has been collecting precision agriculture data since the late 1990s. Your operation probably has years of planting records, yield maps, and application data sitting in Operations Center right now. Getting that data out and into something useful has always been the hard part.
FieldMCP makes the plumbing straightforward. You authenticate once, and then you can query fields, boundaries, operations, and equipment through a clean set of MCP tools. This tutorial walks you through the whole thing: auth setup, discovering your org, pulling field data, and running your first field analysis.
If you want to skip ahead and read the full reference, the FieldMCP docs have you covered. Otherwise, let's go step by step.
John Deere uses OAuth 2.0 to protect Operations Center data. This is the right call from a security standpoint (there have been well-documented concerns about agricultural data security, and researchers have found real vulnerabilities at agtech companies). It does mean you need to complete an OAuth flow before anything else works.
Follow the FieldMCP OAuth setup guide to get your credentials configured. The short version: you register a FieldMCP connection in John Deere's developer portal, complete the authorization flow, and FieldMCP stores your tokens. You do this once.
One thing I'd flag early: make sure the Operations Center account you're authorizing actually has access to the fields you want. If a co-op or agronomist manages some of those fields under a separate org, you may need to authorize that org separately. This trips people up.
Once auth is done, the first thing to do is find your organization ID. Everything in the Deere API hangs off an org. Fields, equipment, operations, all of it. You need the org ID before you can query anything else.
Use deere_list_resources with resourceType: "organizations":
{
"resourceType": "organizations"
}This returns your available orgs. If you manage multiple operations (say, your own ground plus some custom work), you'll see them all listed here. Grab the org ID you want to work with. You'll use it in every subsequent call.
See the full reference at /docs/tools/deere/list-resources.
With your org ID in hand, list your fields:
{
"resourceType": "fields",
"orgId": "YOUR_ORG_ID"
}You'll get back your field names and IDs. If you have a lot of fields, use limit and offset to page through them. You can also filter by field name if you already know what you're looking for:
{
"resourceType": "fields",
"orgId": "YOUR_ORG_ID",
"filters": {
"fieldName": "Home Place"
}
}Once you have a field ID, deere_get_field_overview is the tool you'll use most. It pulls field details, boundary geometry, and recent operations in a single call. No need to chain five separate requests.
{
"orgId": "YOUR_ORG_ID",
"fieldId": "YOUR_FIELD_ID",
"include": ["details", "boundary", "operations"],
"operationsDateRange": {
"startDate": "2023-01-01",
"endDate": "2025-12-31"
},
"operationsLimit": 20
}// Returns field name, acres, active crop, GeoJSON polygon boundary, and recent operations
The canonicalFieldId in the response is worth paying attention to. It's a stable UUID that stays consistent even if the same field shows up under a different provider. Leaf's API does something similar with their merged field approach, and that cross-provider matching problem is real. FieldMCP handles it the same way: one stable ID across sources.
Full docs at /docs/tools/deere/get-field-overview.
Field-level operations are useful. But sometimes you want to ask a broader question: what did I plant across the whole operation this spring, or how did harvest yields look last fall across all my ground?
deere_search_operations handles that:
{
"orgId": "YOUR_ORG_ID",
"operationType": "harvest",
"dateRange": {
"startDate": "2024-09-01",
"endDate": "2024-12-01"
},
"limit": 50
}You can also scope it to a single field:
{
"orgId": "YOUR_ORG_ID",
"fieldId": "YOUR_FIELD_ID",
"operationType": "planting",
"dateRange": {
"startDate": "2024-04-01",
"endDate": "2024-06-15"
}
}For harvest records, you'll get yield per acre, moisture, and total yield. For planting, you get variety, seeding rate, and population. This is the data that's been sitting in your GreenStar displays and monitors for years. It's finally queryable without clicking through Operations Center screens.
One practical note: if your planting window data looks sparse, check whether your older displays were uploading automatically or whether someone had to manually sync them. A lot of operations have gaps in 2019 and earlier for exactly that reason.
Full reference at /docs/tools/deere/search-operations.
This is where it gets interesting. Once you have field data, you can feed it directly into intel_diagnose_field for agronomic analysis.
The minimum you need is a field ID, crop, and target year. The analysis gets substantially better with yield history and soil test data, so pull those from your operations records first.
{
"fieldId": "YOUR_CANONICAL_FIELD_ID",
"fieldName": "Home Place North",
"acres": 87.4,
"crop": "corn",
"targetCropYear": 2026,
"location": {
"state": "IL",
"region": "central"
},
"yieldHistory": [
{ "year": 2022, "bushelsPerAcre": 198, "crop": "corn" },
{ "year": 2023, "bushelsPerAcre": 204, "crop": "corn" },
{ "year": 2024, "bushelsPerAcre"
The tool returns a primary action recommendation, a prioritized action plan, and all triggered diagnostic rules with supporting evidence. If 2024 yield dropped like it did in the example above, the diagnosis will flag that and give you something to investigate. It won't just say "yields were lower." It'll tell you what data supports which hypothesis.
You can extend the analysis with soil test data, compaction readings, rotation history, and more. See the full schema at /docs/tools/intelligence/diagnose-field.
At this point you have the core workflow: authenticate, discover your org, pull field data, search operations, run analysis. That's enough to build something genuinely useful.
A few directions worth exploring from here. If you have equipment running in the field, check out deere_get_equipment_status for location, alerts, and engine hours. If you want to compare performance across multiple fields, intel_compare_fields is the right tool. And if you want to go deeper on what the diagnostic rules actually mean, intel_get_rule_details will explain the agronomic reasoning behind any flagged rule.
Start with the quickstart guide if you haven't already. It gets you to your first successful tool call in under ten minutes.