Skip to main content
Glama
vanantwerp

Deere Ops Center MCP

by vanantwerp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DEERE_UOMNoMeasurement system: ENGLISH (acres, bushels) or METRIC (hectares, tonnes). Default: not set; each organization's own preference in Operations Center is used.
PYTHONUTF8NoSet to '1' on Windows to make the tool send text to Claude Desktop as UTF-8.
DEERE_YIELDNoHow yield is expressed: VOLUME (bushels) or MASS (pounds, tonnes). Default: not set; organization preference.
DEERE_BASE_URLNoWhich John Deere environment to talk to. Default: the sandbox, https://sandboxapi.deere.com/platform. If John Deere approves your application for production, change this to the address they give you.https://sandboxapi.deere.com/platform
DEERE_PAGE_CAPNoThe most pages of results fetched for one question before the tool stops and says the list was cut short.20
DEERE_CLIENT_IDNoYour John Deere Application ID. setup stores this for you; set it here only if you prefer not to use the stored file.
DEERE_OUTPUT_DIRNoThe only folder the tool may write files into (downloads and exports). Default: a deere-mcp folder in your Documents.
DEERE_CALLBACK_PORTNoThe port used during sign-in. Change it only if 9090 is in use, and change the Redirect URI in your John Deere application to match.9090
DEERE_CLIENT_SECRETNoYour John Deere Application Secret. setup stores this for you; set it here only if you prefer not to use the stored file.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
jd_list_organizationsA

List the John Deere Operations Center organizations this sign-in can access.

    Returns `organizations`, each with `id`, `name`, `type`, `member` and `connected`.
    Start here: the `id` of an organization is the `org_id` that every other tool needs.
    `connected` is false when the application has not yet been connected to that
    organization; its data will be empty or return 403 until the user opens
    `manage_connections_url` (included only in that case) and approves access.
    
jd_list_fieldsA

List the fields in one organization.

    Returns `fields`, each with `id`, `name` and `archived`. Get `org_id` from
    jd_list_organizations. The field `id` is the `field_id` used by jd_get_field,
    jd_list_field_operations, jd_list_guidance_lines and jd_list_work_plans (as `field_ids`).
    
jd_get_fieldA

Get one field's details together with its active boundary.

    Returns the field record plus `boundary` (the active boundary with its geometry, or
    null when the field has none, or `{"error": ...}` if the boundary could not be fetched)
    and `boundaries_url`. Get `org_id` from jd_list_organizations and `field_id` from
    jd_list_fields.
    
jd_list_field_operationsA

List the field operations recorded on one field: tillage, seeding, application, harvest.

    Returns `operations`, each with `fieldOperationType`, `cropSeason`, `cropName`,
    `startDate`, `endDate`, `products`, `varieties`, `fieldOperationMachines` and the
    measurement totals Deere recorded (area, total and average material, seeding rate,
    yield), plus `measurements_url` and `shapefile_available`. Get `org_id` from
    jd_list_organizations and `field_id` from jd_list_fields; each operation's `id` is the
    `operation_id` for jd_get_field_operation_measurements and the shapefile download.
    One crop season per call is the normal use (`crop_season`). `start_date` and `end_date`
    form a date filter that Deere limits to a 7-day window per request.
    
jd_get_field_operation_measurementsA

Get the measurement totals of one field operation.

    Returns the measurements Deere recorded for the operation (area, material and rate
    totals and averages, yield) as `measurements`, or the single measurement object when
    `measurement_type` is given. The `operation_id` comes from the `id` of an item returned
    by jd_list_field_operations.
    
jd_list_guidance_linesA

List the guidance lines stored on one field.

    Returns `guidance_lines`, each with `id`, `erid`, `name`, `type`, `archived` and `uri`
    (the line's own address). With `embed_shapes` true each item also carries the full
    record, including its geometry, under `raw`. Get `org_id` from jd_list_organizations and
    `field_id` from jd_list_fields; the `id` of a line is the `guidance_line_id` for
    jd_get_guidance_line.
    
jd_get_guidance_lineA

Get one guidance line on a field.

    Returns the full guidance line record, with its geometry when `embed_shapes` is true.
    Get `org_id` from jd_list_organizations, `field_id` from jd_list_fields and
    `guidance_line_id` from jd_list_guidance_lines.
    
jd_list_productsA

List one kind of product defined in an organization.

    Returns `products`, each with `id`, `name`, `category`, `type`, `cropName`,
    `companyName`, `archived` and `uri`. One call lists one `product_type`: chemicals,
    fertilizers, seed varieties, tank mixes or dry blends. Get `org_id` from
    jd_list_organizations. Use it to see what the organization has defined, for example
    which seed varieties or chemicals exist.
    
jd_list_operatorsA

List the machine operators defined in an organization.

    Returns `operators`, each with `id`, `name`, `archived`, `dateModified` and `uri`.
    Get `org_id` from jd_list_organizations.
    
jd_list_work_plansA

List the work plans of an organization, optionally for a year, kind of work or fields.

    Returns `work_plans`, each with `erid`, `fieldUri`, `workType`, `year`, `workStatus`,
    `workOrder`, `instructions`, `sequenceNumber`, `operations` and `assignmentCount`.
    Get `org_id` from jd_list_organizations; the `erid` of a plan is the `erid` for
    jd_get_work_plan.
    
jd_get_work_planA

Get the full record of one work plan.

    Returns everything Deere holds for the plan (field, work type, status, instructions,
    operations and assignments). Get `org_id` from jd_list_organizations and `erid` from
    jd_list_work_plans.
    
jd_list_equipmentA

List the machines and implements in an organization.

    Returns id, principalId, name, category, type, archived and uri for each item. `org_id`
    comes from jd_list_organizations. The principalId of a machine is what the
    jd_get_machine_* tools (alerts, engine hours, hours of operation, location history,
    device state reports) take as `principal_id`; `id` is what jd_get_equipment takes. When
    `embed` is set, the full record with the embedded data is added to each item under 'raw'.
    
jd_get_equipmentA

Get the full record for one machine or implement.

    Returns everything Deere has on the piece of equipment, including any data requested
    with `embed`. `equipment_id` is the 'id' of an item from jd_list_equipment; the
    principalId shown there is a different identifier and is only for the jd_get_machine_*
    tools.
    
jd_get_machine_alertsA

Get machine alerts (diagnostic trouble codes) for one machine.

    Returns the alerts under 'alerts'. `principal_id` comes from jd_list_equipment. Deere
    allows at most 7 days between start_date and end_date in a single request; ask for a
    shorter window or make several calls.
    
jd_get_machine_engine_hoursA

Get engine hour readings for one machine.

    Returns the readings under 'engine_hours'. `principal_id` comes from jd_list_equipment.
    Use last_known=True for the current total, or a start_date/end_date window for history.
    
jd_get_machine_hours_of_operationA

Get how long a machine was working, idle or transporting over a period.

    Returns the records under 'hours_of_operation'. `principal_id` comes from
    jd_list_equipment and `org_id` from jd_list_organizations. Use start_date and end_date
    to bound the period; the detailed_state and summarize_duration filters are passed to
    Deere unchanged.
    
jd_get_machine_location_historyA

Get GPS location points for one machine.

    Returns the points under 'locations'. `principal_id` comes from jd_list_equipment. Deere
    allows at most 1 month between start_date and end_date in a single request. For where the
    machine is now, prefer last_known=True instead of pulling history.
    
jd_get_machine_device_state_reportsA

Get device state (terminal status) reports for one machine.

    Returns the reports under 'device_state_reports'. `principal_id` comes from
    jd_list_equipment. Use last_known=True for the latest report, or a start_date/end_date
    window for history.
    
jd_getA

Make a read-only GET request to any John Deere API endpoint.

    Use this for Deere endpoints that no dedicated tool covers; follow the `links[].uri`
    values from other results to get there, and take IDs from the list tools. Only Deere
    hosts are allowed and only GET is ever sent. JSON comes back as the parsed object (lists
    are wrapped as {"data": [...]}), images come back as an image, and any other text comes
    back as {"content_type", "text", "truncated"} cut to 20,000 characters. Pass
    accept="application/vnd.deere.axiom.v3.image+json" to fetch a measurement map image.
    
jd_download_operation_shapefileA

Download the point-by-point shapefile for one field operation and save it to disk.

    The file is a zip of ESRI shapefiles (GPS points or polygons with yield, rate, moisture
    and similar values at each location), meant for GIS software or Python. This tool saves
    the zip in the output folder and returns its path and size; it does not return the
    contents, because the files are large. Operation IDs come from
    jd_list_field_operations (only operations with shapefile_available true have one).

    Deere prepares the file in the background, so this tool may wait a little. If Deere is
    still preparing it when max_wait_seconds runs out, the result has status "preparing";
    call the tool again after retry_after_seconds. On success the status is "saved".
    
jd_save_fileA

Save text, such as a CSV or a summary the assistant has assembled, to a file.

    Use this when the user wants a result kept on their computer. Files can only be created
    inside the configured output folder (DEERE_OUTPUT_DIR); any filename that points outside
    it is refused. An existing file with the same name is replaced. Returns the full path
    and the size in bytes.
    
jd_export_field_operationsA

Save every field operation for one field across several seasons to a JSON file.

    Use this for multi-season history (for example five years of planting, applications
    and harvests) instead of reading each season into the conversation. Each operation
    includes its dates, crop, products, varieties and measurement totals such as area,
    rate and yield. The JSON file holds org_id, field_id and a "seasons" object mapping
    each year to its list of operations. This tool returns the file path and the number of
    operations per season, not the operations themselves; use jd_list_field_operations to
    read a single season directly. Organization and field IDs come from
    jd_list_organizations and jd_list_fields. If a season is listed in truncated_seasons,
    it had more results than the page cap allows and the file holds only the first part.
    

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target distinct resources and actions (list vs get for fields, guidance lines, work plans, equipment, machine telemetry). The generic jd_get overlaps with every dedicated read tool, and jd_list_field_operations vs jd_export_field_operations/jd_download_operation_shapefile could be confused, but descriptions clarify intended use.

Naming Consistency5/5

All tools use a consistent jd_ prefix and snake_case, with predictable verb_noun or verb_resource_action patterns (list_fields, get_field, get_machine_alerts, download_operation_shapefile). The only minor deviation is the generic jd_get, but it is still readable and consistent with the prefix.

Tool Count3/5

22 tools is on the heavy side for the rubric's 16-25 borderline range. The broad John Deere domain covers many resources, so most tools earn their place, but the set could likely be trimmed or consolidated without losing much.

Completeness4/5

The surface covers a wide read-only lifecycle: organizations, fields, field operations, measurements, guidance lines, products, operators, work plans, equipment, machine telemetry, plus file export/save and a generic GET fallback. Minor gaps like no dedicated organization detail tool or explicit boundary history exist, but the generic jd_get can fill them.

Maintenance

ActivityMaintained
ResponsivenessNo issues