# š MCPizza - Enhanced
An educational MCP (Model Context Protocol) server demonstrating AI-powered pizza ordering with Domino's API integration.
> **ā ļø Important**: This project is for **educational purposes only**. While it integrates with Domino's real API, actual order placement is blocked by CAPTCHA requirements. See [Limitations](#limitations) for details.
## Credits
This project is based on [GrahamMcBain/mcpizza](https://github.com/GrahamMcBain/mcpizza), with significant enhancements:
### Original Project
- **Author**: Graham McBain
- **Purpose**: Educational MCP protocol demonstration
- **Design**: Safe-mode ordering without real placement
### Our Enhancements
- ā
**Real API Integration** - Actually calls Domino's pricing and validation APIs
- ā
**Pizza Customization** - `add_pizza_with_toppings` tool for proper coupon + topping configuration
- ā
**Interaction Logging** - Complete 2-way logging system for all MCP interactions
- ā
**Coupon Discovery** - `get_coupons` and `get_ordering_guidance` tools
- ā
**Enhanced Error Handling** - Detailed error reporting and validation
- ā
**Comprehensive Documentation** - WORKFLOW.md with step-by-step instructions
## What This Project Demonstrates
1. **MCP Protocol Integration** - Full implementation of Model Context Protocol
2. **Real-world API Interaction** - Integration with Domino's unofficial API
3. **Complex Tool Orchestration** - 12 tools working together for multi-step workflows
4. **State Management** - Order state management across tool calls
5. **Error Handling** - Graceful handling of API validation and errors
## Features
### Store & Menu Tools
- š `find_stores` - Find nearby Domino's by address or zip
- šŖ `get_store_info` - Detailed store information and hours
- š `get_menu` - Complete menu with categories
- š `search_menu` - Search for specific items
- š `get_coupons` - Discover available deals and coupons
### Ordering Tools
- š `create_order` - Initialize a new order
- š `add_pizza_with_toppings` - Add customized pizzas with toppings (NEW!)
- ā `add_item_to_order` - Add any menu item
- šļø `view_order` - Preview order details and pricing
- šļø `clear_order` - Clear current order
- š³ `place_order` - Attempt to place order (blocked by CAPTCHA)
### Guidance Tools
- šÆ `get_ordering_guidance` - AI-powered deal recommendations (NEW!)
## Installation
### Prerequisites
- Python 3.10+
- [uv](https://github.com/astral-sh/uv) package manager
### Setup
```bash
# Clone the repository
git clone https://github.com/dshanklin-bv/mcp-pizza.git
cd mcp-pizza
# Install dependencies
uv pip install -e .
```
### Claude Desktop Integration
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"pizza": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-pizza",
"run",
"mcpizza"
]
}
}
}
```
## Usage
See [WORKFLOW.md](WORKFLOW.md) for complete ordering workflow documentation.
### Basic Example
```
1. Find stores: "find pizza stores near 76104"
2. Get coupons: "what deals are available at store 8022?"
3. Get guidance: "I want a deep dish sausage and pepperoni pizza"
4. Create order: Create order with your details
5. Add pizza: Use add_pizza_with_toppings with coupon code
6. View order: Review pricing and details
7. (Optional) Place order: Will be blocked by CAPTCHA
```
## Architecture
The codebase follows a clean, modular architecture with separation of concerns:
```
mcp-pizza/
āāā mcpizza/
ā āāā server.py # Main MCP server (303 lines, down from 1308!)
ā āāā logger.py # Interaction logging system
ā āāā __main__.py # Entry point
ā ā
ā āāā models/ # Pydantic parameter models
ā ā āāā params.py # Tool parameter definitions
ā ā
ā āāā services/ # Business logic layer
ā ā āāā store_service.py # Store lookup & menu browsing
ā ā āāā order_service.py # Order creation & management
ā ā āāā payment_service.py # Payment processing
ā ā āāā guidance_service.py # AI ordering guidance
ā ā
ā āāā tools/ # MCP tool handlers
ā ā āāā store_tools.py # Store-related tools
ā ā āāā menu_tools.py # Menu-related tools
ā ā āāā order_tools.py # Order-related tools
ā ā āāā guidance_tools.py # Guidance tools
ā ā
ā āāā api/ # Domino's API client
ā ā āāā endpoints.py # API endpoint constants
ā ā āāā client.py # HTTP client wrapper
ā ā
ā āāā utils/ # Utilities
ā āāā mock_order.py # Mock order object creation
ā
āāā tests/ # Comprehensive test suite (18 tests)
ā āāā test_models.py # Model validation tests
ā āāā test_utils.py # Utility function tests
ā āāā test_api_client.py # API client tests
ā āāā test_services.py # Service layer tests
ā
āāā examples/ # Example scripts
ā āāā test_mcp_with_ollama.py # Autonomous testing
ā
āāā logs/ # Interaction logs (gitignored)
āāā WORKFLOW.md # Complete workflow documentation
āāā README.md # This file
```
### Benefits of This Architecture
1. **Maintainability**: Each module has a single responsibility
2. **Testability**: Services and utilities are easily unit tested
3. **Readability**: Clear separation between MCP layer, business logic, and API calls
4. **Scalability**: Easy to add new tools or services
5. **Reusability**: Services can be reused outside of MCP context
## Logging
All MCP interactions are automatically logged to `logs/interactions_YYYYMMDD.log`:
- Tool calls with full arguments
- Tool responses with previews
- State changes (order creation, items added)
- Errors with context
Log format is JSON for easy parsing and analysis.
## Limitations
### CAPTCHA Requirement
Domino's API requires CAPTCHA verification for order placement. Our system successfully:
- ā
Validates pizza configurations
- ā
Prices orders correctly (e.g., $11.90 for medium 2-topping)
- ā
Accepts payment structure
- ā **Cannot submit final order** (blocked by `recaptchaVerificationRequired`)
This is an intentional fraud prevention measure by Domino's and **cannot be bypassed** without violating their terms of service.
### What Works
- Store lookup and menu browsing
- Coupon discovery and deal analysis
- Order validation and pricing
- Complete order preparation
- All MCP protocol features
### What Doesn't Work
- Final order submission (CAPTCHA required)
- Real payment processing
## Development
### Testing
```bash
# Run autonomous test suite (tests all tools except order placement)
python test_mcp_with_ollama.py
```
### Contributing
This is an educational project demonstrating MCP protocol integration. Contributions that enhance the educational value are welcome!
## Technical Details
- **MCP SDK**: Official Model Context Protocol SDK
- **API Library**: pizzapi (unofficial Domino's API wrapper)
- **Order Structure**: Mock order object with real API calls
- **Validation**: Multi-step validation (structure ā pricing ā placement)
## Disclaimer
ā ļø **Educational Use Only**
This project is for learning about:
- Model Context Protocol implementation
- Real-world API integration
- Multi-tool orchestration
- State management in AI assistants
**Do not use for actual pizza ordering.** Use Domino's official website or mobile app instead.
## License
MIT License
Based on [GrahamMcBain/mcpizza](https://github.com/GrahamMcBain/mcpizza) (MIT License)
## Acknowledgments
- **Graham McBain** - Original mcpizza project and MCP implementation
- **pizzapi contributors** - Unofficial Domino's API wrapper
- **Anthropic** - Model Context Protocol specification
---
Built with Claude Code š¤