Kroger MCP Server
Integrates Kroger's public API with Claude so meal plan grocery listscan be added directly to your Kroger cart.
Tools
| Tool | What it does |
|---|---|
kroger_find_store |
Find nearby Kroger stores by ZIP code, returns location_id |
kroger_search_products |
Search the product catalog, returns UPC + price + aisle |
kroger_add_to_cart |
Add a single product by UPC to your cart |
kroger_add_grocery_list |
Search + add an entire grocery list in one shot |
kroger_clear_auth |
Clear stored tokens (if you need to re-authenticate) |
Setup
Step 1 — Register your app at Kroger Developer Portal
- Go to https://developer.kroger.com
- Click Register App
- Fill in:
- App Name:
Meal Plan Assistant(or anything) - Redirect URI:
http://localhost:8080/callback - Scopes:
product.compact,cart.basic:write,profile.compact
- App Name:
- Copy your Client ID and Client Secret
Step 2 — Install dependencies
cd kroger_mcp
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
Step 3 — Set environment variables
export KROGER_CLIENT_ID=your_client_id_here
export KROGER_CLIENT_SECRET=your_client_secret_here
export KROGER_REDIRECT_URI=http://localhost:8080/callback
Add these to your shell profile (~/.zshrc or ~/.bashrc) so they persist.
Step 4 — Connect to Claude
Add to your Claude MCP config (usually ~/Library/Application Support/Claude/claude_desktop_config.json on Mac):
{
"mcpServers": {
"kroger": {
"command": "/path/to/kroger_mcp/venv/bin/python",
"args": ["/path/to/kroger_mcp/server.py"],
"env": {
"KROGER_CLIENT_ID": "your_client_id",
"KROGER_CLIENT_SECRET": "your_client_secret",
"KROGER_REDIRECT_URI": "http://localhost:8080/callback"
}
}
}
}
Restart Claude Desktop after saving.
First Use — OAuth Login
The first time you ask Claude to add items to your cart:
- Your browser will open to Kroger's login page
- Log in with your Kroger account
- Paste the redirect URL back into the terminal
- Done — tokens are saved at
~/.kroger_mcp_tokens.json
After that, Claude can add to your cart silently using the stored refresh token.
Example Flow
Once connected, you can say to Claude:
"Find my nearest Kroger store and add this week's grocery list to my cart"
Claude will:
- Call
kroger_find_storewith your ZIP code - Call
kroger_add_grocery_listwith all the items - Report back what was added, what was skipped, and any issues
Security Notes
- Your Client ID and Secret are yours — registered under your account
- Tokens are stored locally at
~/.kroger_mcp_tokens.json(permissions: 600) - No third-party code involved — direct calls to Kroger's official API
kroger_clear_authremoves all stored tokens if needed
Troubleshooting
"Missing environment variables" — Set KROGER_CLIENT_ID and KROGER_CLIENT_SECRET
"Authorization expired" — Retry the operation; the server will refresh automatically
"No matching product found" — Try a shorter search term (e.g., "spinach" instead of "Private Selection Baby Spinach")
Rate limits (HTTP 429) — Kroger limits requests; wait 30 seconds and retry