MCP server for HEB grocery store integration
Project description
Texas Grocery MCP
An MCP (Model Context Protocol) server that enables AI agents to interact with HEB grocery stores for product search, product details, cart management, and digital coupons.
This project is not affiliated with H-E-B. It uses unofficial web APIs and browser automation against HEB.com; use responsibly and ensure your usage complies with applicable terms and laws.
Features
- Store Search: Find HEB stores by address or zip code
- Product Search: Search products with pricing and availability
- Cart Management: Add/remove items with human-in-the-loop confirmation
- Product Details: Ingredients, nutrition facts, allergens, warnings, and dietary attributes
- Coupons: List/search/clip digital coupons (requires authentication)
- Session Management: Refresh sessions automatically (fast with embedded Playwright)
Installation
Basic Installation
pip install texas-grocery-mcp
This provides all core functionality. Session refresh requires orchestrating Playwright MCP (~4 minutes).
Full Installation (Recommended)
pip install texas-grocery-mcp[browser]
playwright install chromium
This enables fast auto-refresh (~15 seconds) using an embedded browser. Adds ~150MB for Chromium.
Prerequisites
For cart operations and session management, you'll also need Microsoft Playwright MCP:
npm install -g @anthropic-ai/mcp-playwright
Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@anthropic-ai/mcp-playwright"]
},
"heb": {
"command": "uvx",
"args": ["texas-grocery-mcp"],
"env": {
"HEB_DEFAULT_STORE": "590"
}
}
}
}
Environment Variables
| Variable | Description | Default |
|---|---|---|
HEB_DEFAULT_STORE |
Default store ID | None |
REDIS_URL |
Redis cache URL | None (in-memory) |
LOG_LEVEL |
Logging level | INFO |
Usage
Finding a Store
User: Find HEB stores near Austin, TX
Agent uses: store_search(address="Austin, TX", radius_miles=10)
Searching Products
User: Search for organic milk
Agent uses: store_change(store_id="590")
Agent uses: product_search(query="organic milk")
Getting Product Details
For detailed information about a specific product (ingredients, nutrition, allergens, warnings):
User: What are the ingredients in H-E-B olive oil?
Agent uses: product_search(query="heb olive oil")
# Returns products with product_id
Agent uses: product_get(product_id="127074")
# Returns detailed info: ingredients, nutrition facts, warnings, dietary attributes
The product_get tool returns comprehensive information including:
- Ingredients: Full ingredient statement
- Nutrition Facts: Complete FDA panel with serving size, calories, and all nutrients
- Safety Warnings: Allergen info and safety precautions
- Dietary Attributes: Gluten-free, organic, vegan, kosher, etc.
- Preparation/Storage: Instructions for use and storage
- Store Location: Aisle or section where product is located
Adding to Cart
Cart operations require authentication via Playwright MCP:
User: Add 2 gallons of milk to my cart
Agent uses: cart_add(product_id="123456", quantity=2)
# Returns preview with confirm=true instruction
Agent uses: cart_add(product_id="123456", quantity=2, confirm=true)
# Executes the action
Session Management
HEB uses bot detection (reese84 token) that expires every ~11 minutes. This MCP handles session refresh automatically.
Fast Auto-Refresh (Recommended)
If you installed with [browser] support:
Agent uses: session_refresh()
# Completes in ~10-15 seconds
This runs an embedded browser to refresh your session automatically.
Manual Refresh (Fallback)
Without browser support, use the Playwright MCP orchestration:
Agent uses: session_refresh()
# Returns Playwright commands to execute (~4 minutes)
Initial Login
For first-time authentication or when session fully expires:
browser_navigate('https://www.heb.com/my-account/login')- Complete login in the browser
- Save storage state:
await page.context().storageState({ path: '~/.texas-grocery-mcp/auth.json' })
- Retry cart operations
Or use session_refresh(headless=False) to login in a visible browser window.
Available Tools
Store Tools
store_search- Find stores by addressstore_change- Set preferred store (syncs with HEB.com when authenticated)store_get_default- Get current default store
Product Tools
product_search- Search products by name with pricing and availabilityproduct_search_batch- Search multiple products at once (up to 20 queries)product_get- Get comprehensive product details (ingredients, nutrition, warnings, dietary attributes)
Cart Tools
cart_check_auth- Check authentication statuscart_get- View cart contentscart_add- Add item (requires confirmation)cart_add_with_retry- Add item with automatic retry on failurecart_remove- Remove item (requires confirmation)
Coupon Tools
coupon_list- List available digital couponscoupon_search- Search coupons by keywordcoupon_categories- Get coupon category listcoupon_clip- Clip a coupon to your account (requires confirmation)coupon_clipped- List your clipped coupons
Session Tools
session_status- Check session health and token expirationsession_refresh- Refresh/login (fast with[browser], otherwise returns Playwright MCP commands)session_save_instructions- Get manual login + session-save instructionssession_save_credentials- Save credentials for auto-login (secure)session_clear_credentials- Remove saved credentialssession_clear- Clear saved session (logout)
Health Tools
health_live- Liveness probehealth_ready- Readiness probe with component status
Documentation
- Troubleshooting Guide - Solutions for common issues
Development
# Clone repository
git clone https://github.com/yourusername/texas-grocery-mcp
cd texas-grocery-mcp
# Install with dev dependencies (includes Playwright)
pip install -e ".[dev]"
playwright install chromium
# Run tests
pytest tests/ -v
# Run linting
ruff check src/
# Run type checking
mypy src/
Docker Development
# Build and run with Redis
docker-compose up --build
# Run tests in container
docker-compose run texas-grocery-mcp pytest
Architecture
┌─────────────────────────────────────────────────────────────┐
│ User's MCP Environment │
│ │
│ ┌─────────────────────┐ ┌─────────────────────────────┐ │
│ │ Playwright MCP │ │ Texas Grocery MCP │ │
│ │ (Browser Auth) │───▶│ (Grocery Logic) │ │
│ └─────────────────────┘ └─────────────────────────────┘ │
│ │ │
└────────────────────────────────────────┼─────────────────────┘
│
▼
HEB GraphQL API
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file texas_grocery_mcp-0.1.0.tar.gz.
File metadata
- Download URL: texas_grocery_mcp-0.1.0.tar.gz
- Upload date:
- Size: 79.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d856afb8f0d27f8690951f2b1cb4a901b4a6c2e2b17d7198da00cafbb2c9329f
|
|
| MD5 |
47567cb6a211e5bd6c4956a274777fd8
|
|
| BLAKE2b-256 |
5f957a1f5a067f89c8f413b549f38a1724b4aad74a1f814aac452600d6bebe38
|
File details
Details for the file texas_grocery_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: texas_grocery_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 95.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f49db35e536fd32c54220a1101dd5ffc7eb6a454f6b4b701834aa7ecf1760f9e
|
|
| MD5 |
36414e1326176be040d4bc5097da0681
|
|
| BLAKE2b-256 |
9b8420e85016cfb30886df1a802654d4237dc0119bc6dcce2826e6fd8e2b9202
|