Texas Grocery MCP
# π Texas Grocery MCP
[](https://pypi.org/project/texas-grocery-mcp/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/mgwalkerjr95/texas-grocery-mcp/actions/workflows/ci.yml)
> π€ 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.
---
## β¨ Features
| 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) |
---
## π¦ Installation
### Quick Start
```bash
pip install texas-grocery-mcp
```
### Full Installation (Recommended) π
```bash
pip install texas-grocery-mcp[browser]
playwright install chromium
```
This enables **fast auto-refresh** (~15 seconds) using an embedded browser.
### Prerequisites
For cart operations and session management, you'll also need **Playwright MCP**:
```bash
npm install -g @anthropic-ai/mcp-playwright
```
---
## βοΈ Configuration
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```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 Examples
### πͺ 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
```
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:
- π₯ **Ingredients** - Full ingredient statement
- π **Nutrition Facts** - Complete FDA panel
- β οΈ **Safety Warnings** - Allergen info and precautions
- πΏ **Dietary Attributes** - Gluten-free, organic, vegan, kosher, etc.
- π **Store Location** - Aisle or section
### π Adding to Cart
```
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!
```
### ποΈ Clipping Coupons
```
User: Find coupons for cereal
Agent uses: coupon_search(query="cereal")
Agent uses: coupon_clip(coupon_id="ABC123", confirm=true)
# β
Coupon clipped!
```
---
## π Session Management
HEB uses bot detection that expires every ~11 minutes. This MCP handles it automatically!
### β‘ Fast Auto-Refresh (Recommended)
With `[browser]` support installed:
```
Agent uses: session_refresh()
# β
Completes in ~10-15 seconds
```
### π Auto-Login
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!
```
---
## π§° Available Tools
### πͺ Store Tools
| Tool | Description |
|------|-------------|
| `store_search` | Find stores by address |
| `store_change` | Set preferred store |
| `store_get_default` | Get current default store |
### π Product Tools
| Tool | Description |
|------|-------------|
| `product_search` | Search products with pricing |
| `product_search_batch` | Search multiple products (up to 20) |
| `product_get` | Get detailed product info |
### π Cart Tools
| 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 |
### ποΈ Coupon Tools
| Tool | Description |
|------|-------------|
| `coupon_list` | List available coupons |
| `coupon_search` | Search coupons by keyword |
| `coupon_clip` | Clip a coupon |
| `coupon_clipped` | List your clipped coupons |
### π Session Tools
| Tool | Description |
|------|-------------|
| `session_status` | Check session health |
| `session_refresh` | Refresh/login session |
| `session_save_credentials` | Save credentials for auto-login |
| `session_clear` | Logout |
---
## π Documentation
- π§ [Troubleshooting Guide](docs/TROUBLESHOOTING.md) - Solutions for common issues
- π€ [Contributing](CONTRIBUTING.md) - How to contribute
- π [Changelog](CHANGELOG.md) - Version history
- π [Security](SECURITY.md) - Security policy
---
## π οΈ Development
```bash
# 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
```bash
docker-compose up --build
```
---
## ποΈ Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User's MCP Environment β
β β
β βββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β π Playwright MCP β β π Texas Grocery MCP β β
β β (Browser Auth) βββββΆβ (Grocery Logic) β β
β βββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β β
ββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββ
β
βΌ
π HEB GraphQL API
```
---
## π License
MIT Β© Michael Walker
---
<p align="center">
Made with β€οΈ in Texas π€
</p>
TDQS
Scored across 25 tools
Each tool targets a distinct function: sessions, coupons, cart, products, stores, and health. Even within groups like cart_add variants, descriptions clarify differences. Overlaps are minimal.
Tool names mix verb_noun (store_search, product_get), noun_noun (coupon_categories), and adjective_noun (health_live). While readable, there is no consistent pattern across the set.
25 tools cover multiple domains (sessions, coupons, cart, products, stores, health) without feeling bloated. The count is at the higher end but still reasonable for the scope.
The tool surface covers core grocery operations: product discovery, store selection, coupon management, cart manipulation, and session handling. Missing checkout or order history, but pre-checkout coverage is solid.