USDA MCP Server
MCP server that connects USDA's NASS QuickStats and AMS Market News APIsto any MCP-compatible AI model, allowing farmers, researchers, and USDAstaff to ask plain English questions about US agricultural data and getaccurate, data-backed answers.
Built for the Challenge X Hackathon — Feb 28 to Apr 18, 2026.Team: Root Access
What This Does
Farmers, researchers, and USDA staff can ask plain English questionsabout US agricultural data and get accurate, data-backed answers —without needing to know what an API is or how to find the data themselves.
Historical data (NASS QuickStats)
- "What was the corn yield in Iowa in 2022?"
- "How has soybean production in Illinois trended from 2018 to 2022?"
- "How many acres of wheat were planted in Kansas in 2021?"
- "What price did Iowa farmers receive for corn in 2022?"
- "What was national corn production in 2022?"
Current market prices (AMS Market News)
- "What is the current corn price in Iowa?"
- "What is today's soybean price in Illinois?"
- "Where should I sell my soybeans — iowa, illinois, or nebraska?"
- "What is the current wheat price in Kansas?"
Tools
The server exposes 4 MCP tools:
| Tool | Data Source | What it does |
|---|---|---|
get_nass_data |
NASS QuickStats | Fast lookup for corn and soybean yield, acreage, production, price received in any state and year |
query_nass_flexible |
NASS QuickStats | Any crop, any statistic, multi-year trends, national or county level data |
get_ams_price |
AMS Market News | Current cash grain prices by location |
get_ams_price_comparison |
AMS Market News | Compare current prices across multiple states to find the best market |
Project Structure
usda-mcp/
├── clients/
│ ├── nass_client.py # NASS QuickStats API wrapper
│ └── ams_client.py # AMS Market News API wrapper
├── server/
│ ├── main.py # MCP server — 4 tools
│ ├── security.py # OWASP MCP Top 10 mitigations
│ └── tools/
│ └── __init__.py
├── tests/
│ └── qa_log.csv # Q&A evaluation log
├── demo/
│ └── app.py # Demo interface (planned)
├── logs/
│ └── usda_nass_server.log # Auto-generated server log
├── .env # API keys (never committed)
├── .env.example # Template for API keys
├── requirements.txt # Pinned dependencies
├── SECURITY.md # OWASP MCP Top 10 documentation
└── README.md
Setup
1. Clone the repo
git clone https://github.com/RolakeOkans/usda-mcp.git
cd usda-mcp
2. Create a virtual environment
python -m venv .venv
source .venv/bin/activate
3. Install dependencies
pip install -r requirements.txt
4. Create a .env file in the root folder
NASS_API_KEY=your_nass_key_here
AMS_API_KEY=your_ams_key_here
5. Get your API keys
NASS: Register at https://www.nass.usda.gov/developer/index.php
AMS: Register at https://mymarketnews.ams.usda.gov
Both are free and issued within minutes.
Connect to Claude Desktop
Add this to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"usda-nass": {
"command": "/path/to/your/python",
"args": ["/path/to/usda-mcp/server/main.py"],
"env": {
"NASS_API_KEY": "your_key_here",
"AMS_API_KEY": "your_key_here"
}
}
}
}
Replace paths with your actual Python and project paths.
Verified Data — NASS QuickStats
All queries tested and confirmed working for Iowa, 2022.
| Commodity | Statistic | Iowa 2022 Result |
|---|---|---|
| Corn | Area planted | 12,900,000 ACRES |
| Corn | Yield | 200 BU / ACRE |
| Corn | Production | 2,470,000,000 BU |
| Corn | Price received | $6.62 / BU |
| Soybeans | Area planted | 10,100,000 ACRES |
| Soybeans | Yield | 58.5 BU / ACRE |
| Soybeans | Production | 586,755,000 BU |
| Soybeans | Price received | $14.20 / BU |
Verified Data — AMS Market News
Current prices confirmed working as of April 2, 2026.
| Commodity | Location | Price |
|---|---|---|
| Corn | Minneapolis | $4.08 / bu |
| Soybeans | Minneapolis | $11.10 / bu |
| Corn | Iowa | $4.12 / bu |
| Corn | Texas | $4.90 / bu |
| Soybeans | Illinois | $11.76 / bu |
| Wheat | Kansas | $5.34 / bu |
Data Sources
| Source | What it covers | Status |
|---|---|---|
| NASS QuickStats | Acreage, yield, production, price received — any crop, any state, any year | Working |
| AMS Market News | Current cash grain prices at elevators — 19 states + dynamic search | Working |
| AMS Socrata | Transportation costs and volumes | Stretch goal |
| ERS | Forecasted prices | Stretch goal |
How It Works
User asks a plain English question
↓
AI model reads the question and decides which tool to call
↓
MCP server validates and sanitizes the input
↓
NASS or AMS API returns the raw data
↓
Server scans response for security issues
↓
AI model interprets the data and returns a plain English answer
↓
All tool calls logged to logs/usda_nass_server.log
Security
This server addresses all 10 OWASP MCP Top 10 risks.See SECURITY.md for full details.
Summary:
- API keys stored in
.env, never committed, redacted from all logs - Read-only server — GET requests only, no write access to any USDA system
- Input sanitization on all tool arguments
- Rate limiting at 30 requests per minute per tool
- Prompt injection detection on all API responses
- Full audit logging of every tool call
Never commit your .env file. It is listed in .gitignore.
Team — Root Access
| Role | Owner | Responsibilities |
|---|---|---|
| Data / APIs | Morolake | API research, NASS client, AMS client, MCP server, security |
| MCP / AI Layer | [Gabriela] | AI layer, demo UI |
| Evaluation / Security | [Neyssa] | Q&A testing, accuracy metrics |
Hackathon
Challenge X+ USDATimeline: Feb 28 to Apr 18, 2026Showcase: April 18, 2026