Connects Claude to H-E-B grocery stores through unofficial web APIs and browser automation. Exposes tools for store lookup by zip or address, product search with pricing and availability, cart operations with confirmation flows, and digital coupon management. Handles H-E-B's bot detection automatically using Playwright for session refresh, taking about 15 seconds to renew authentication. Includes product detail lookups for ingredients, nutrition facts, and allergen info. Stores credentials in system keyring for automatic login on refresh. Requires the Playwright MCP server for cart operations and session management. Useful if you're building shopping assistants or automating grocery workflows for Texas customers.
🤖 Let AI do your grocery shopping! An MCP server that connects Claude to H-E-B grocery stores.
Search products, manage your cart, clip coupons, and more — all through natural conversation.
⚠️ 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.
| Feature | Description |
|---|---|
| 🏪 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 |
| 🎟️ Digital Coupons | List, search, and clip coupons to save money |
| 🔄 Auto Session Refresh | Handles bot detection automatically (~15 seconds) |
pip install texas-grocery-mcp
pip install texas-grocery-mcp[browser]
playwright install chromium
This enables fast auto-refresh (~15 seconds) using an embedded browser.
For cart operations and session management, you'll also need Playwright MCP:
npm install -g @anthropic-ai/mcp-playwright
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"
}
}
}
}
| Variable | Description | Default |
|---|---|---|
HEB_DEFAULT_STORE | Default store ID | None |
REDIS_URL | Redis cache URL | None (in-memory) |
LOG_LEVEL | Logging level | INFO |
User: Find HEB stores near Austin, TX
Agent uses: store_search(address="Austin, TX", radius_miles=10)
User: Search for organic milk
Agent uses: store_change(store_id="590")
Agent uses: product_search(query="organic milk")
User: What are the ingredients in H-E-B olive oil?
Agent uses: product_search(query="heb olive oil")
Agent uses: product_get(product_id="127074")
# Returns: ingredients, nutrition facts, warnings, dietary attributes
The product_get tool returns:
User: Add 2 gallons of milk to my cart
Agent uses: cart_add(product_id="123456", quantity=2)
# Returns preview for confirmation
Agent uses: cart_add(product_id="123456", quantity=2, confirm=true)
# ✅ Added to cart!
User: Find coupons for cereal
Agent uses: coupon_search(query="cereal")
Agent uses: coupon_clip(coupon_id="ABC123", confirm=true)
# ✅ Coupon clipped!
HEB uses bot detection that expires every ~11 minutes. This MCP handles it automatically!
With [browser] support installed:
Agent uses: session_refresh()
# ✅ Completes in ~10-15 seconds
Save your credentials once for automatic login:
Agent uses: session_save_credentials(email="you@email.com", password="...")
# Credentials stored securely in system keyring
# Future session refreshes will auto-login!
| Tool | Description |
|---|---|
store_search | Find stores by address |
store_change | Set preferred store |
store_get_default | Get current default store |
| Tool | Description |
|---|---|
product_search | Search products with pricing |
product_search_batch | Search multiple products (up to 20) |
product_get | Get detailed product info |
| Tool | Description |
|---|---|
cart_check_auth | Check authentication status |
cart_get | View cart contents |
cart_add | Add item (requires confirmation) |
cart_add_many | Bulk add multiple items |
cart_remove | Remove item |
| Tool | Description |
|---|---|
coupon_list | List available coupons |
coupon_search | Search coupons by keyword |
coupon_clip | Clip a coupon |
coupon_clipped | List your clipped coupons |
| Tool | Description |
|---|---|
session_status | Check session health |
session_refresh | Refresh/login session |
session_save_credentials | Save credentials for auto-login |
session_clear | Logout |
# Clone repository
git clone https://github.com/mgwalkerjr95/texas-grocery-mcp
cd texas-grocery-mcp
# Install with dev dependencies
pip install -e ".[dev]"
playwright install chromium
# Run tests
pytest tests/ -v
# Linting & type checking
ruff check src/
mypy src/
docker-compose up --build
┌─────────────────────────────────────────────────────────────┐
│ User's MCP Environment │
│ │
│ ┌─────────────────────┐ ┌─────────────────────────────┐ │
│ │ 🎭 Playwright MCP │ │ 🛒 Texas Grocery MCP │ │
│ │ (Browser Auth) │───▶│ (Grocery Logic) │ │
│ └─────────────────────┘ └─────────────────────────────┘ │
│ │ │
└────────────────────────────────────────┼─────────────────────┘
│
▼
🌐 HEB GraphQL API
MIT © Michael Walker
Made with ❤️ in Texas 🤠
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp