Zomato MCP Server
Provides tools for interacting with Zomato food ordering, including restaurant search, menu browsing, item availability checks, cart management, coupon and discount calculation, order placement, and order tracking.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zomato MCP Serverorder 2 chicken biryani from Paradise Biryani"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
š Zomato Voice Bot (MCP-Powered)
An interactive, voice-activated food ordering bot powered by the Model Context Protocol (MCP 2.x). Users can speak naturally to search restaurants, build food carts, handle out-of-stock item replacements interactively, calculate the best discounts/coupons, and confirm the exact final best amount before placing the order.
š Key Features
Model Context Protocol (MCP 2.x) Integration:
Implements standard MCP tools:
search_restaurants: Discover restaurants by cuisine, rating, budget, and location.get_menu: Browse categories, dishes, prices, and food details.check_item_availability: Real-time stock verification with automatic alternative recommendations.add_to_cart: Add items with quantity and customization options.calculate_best_amount: Evaluates all coupons (ZOMATO50,FEAST150,GOLDDELIVERY,JUMBO200), maximizes discounts, calculates delivery fees, taxes, and generates the voice confirmation phrase.confirm_and_place_order: Places order only after final user agreement, generating Order ID and payment QR.track_order: Live order tracking and delivery partner status.
Dual-mode support: Runs with the built-in local MCP server or connects to the remote Zomato MCP endpoint (
https://mcp-server.zomato.com/mcp).
Interactive Voice Assistance (STT & TTS):
Speech Recognition: Voice input via Web Speech API in the browser or terminal input.
Natural Voice Feedback: Spoken audio replies (English with Indian accent
en-IN/gTTS/ SpeechSynthesis).Visual Voice Orb: Pulsing glowing voice orb with animated sound rings and waveform bars reacting to speech.
Smart Missing & Out-of-Stock Handling:
If an item is unavailable (e.g. Garlic Naan at Paradise Biryani or Cheesy Dip at Domino's), the bot does not fail or drop it silently.
It actively speaks:
"However, Garlic Naan is currently out of stock at Paradise Biryani. They have Butter Naan (ā¹45) and Tandoori Roti (ā¹30) available. Would you like me to add one of these instead, or skip it?"
Listens to the user's answer ("Yes, add butter naan instead" or "Skip it") and updates the order state seamlessly.
Mandatory Final Best Amount Confirmation:
The bot automatically evaluates all coupons, applies the biggest discount, and speaks the exact final amount:
"You have 2x Chicken Dum Biryani and 1x Butter Naan from Paradise Biryani. The subtotal is ā¹605. With coupon FEAST150 applied saving ā¹150, including delivery and taxes, your final best amount is ā¹497. Should I confirm and place your order?"
Waits for the user's voice confirmation ("Yes, place order").
Production-Grade Persistence & Agent Memory:
Database Architecture: Async SQLAlchemy 2.0 with high-throughput SQLite (
journal_mode=WAL) or PostgreSQL.Persistent Active Cart: Food items and pricing breakdown remain intact across browser tabs, reloads, and server restarts.
Long-term Agent Memory: Autonomously learns dietary preferences (Veg/Non-Veg), preferred payment methods (UPI/Zomato Money/COD), favorite restaurants, and favorite dishes across voice sessions.
Order History & Audit Trail: Real-time order records with tracking URLs and payment states (including live order
#8585879147).MCP Tool Call Auditing: Every tool invocation is logged with execution duration (
duration_ms), arguments, and status inmcp_audit_logs.
Modern Web Voice Console & Terminal CLI:
Web UI (
http://localhost:8000): Full-screen foodie dark theme with live Cart sidebar, Best Offer badge, real-time MCP tool call inspector, Orders History modal, and Memory Profile manager.Terminal CLI (
./run.sh cli): Lightweight command-line interface with spoken audio.
Related MCP server: Uber Eats MCP Server
š Quick Start
1. Run the Web Voice Assistant
./run.sh
# or
./run.sh webOpen your browser at http://localhost:8000. Tap the microphone icon or say:
"Order 2 chickpea salads from Lulu Hypermarket"
2. Run the Terminal Voice Assistant
./run.sh cli3. Run the Automated Test Suite
./run.sh test
# or
.venv/bin/pytest -v tests/4. Run the Zomato MCP Server directly via stdio
./run.sh mcpš Production REST API Endpoints
GET /health: Production health check reporting uptime, database connectivity, and MCP server status.GET /api/orders: Retrieves historical and current orders with items, pricing, and live tracking links.GET /api/memory: Fetches long-term user preferences, favorite dishes, and dietary habits.POST /api/memory/preference: Explicitly updates dietary, payment, or restaurant preferences.GET /api/audit/logs: Audits all MCP tool executions with millisecond latency timings.GET /api/conversation/{session_id}: Retrieves chat history for multi-turn session persistence.
š£ļø Example Voice Walkthrough
User Voice Input | Bot Voice Response | MCP Tool Call |
š¤ "Order 2 chicken biryanis and garlic naan from Paradise Biryani" | š "I've added 2x Chicken Dum Biryani to your cart. However, Garlic Naan is currently not available at Paradise Biryani. They have Butter Naan (ā¹45) and Tandoori Roti (ā¹30) available. Would you like me to add one of these instead, or skip it?" |
|
š¤ "Yes, add butter naan instead" | š "Added Butter Naan as replacement! You have 2x Chicken Dum Biryani, 1x Butter Naan from Paradise Biryani. The food subtotal is ā¹605. With coupon FEAST150 applied saving ā¹150, including delivery and taxes, your final best amount is ā¹497. Should I confirm and place your order?" |
|
š¤ "Yes, place order" | š "Order placed successfully! Your Zomato Order ID is ZOM-0F7F4C. Arriving in approximately 30 to 35 minutes. Total amount of ā¹497 will be processed via UPI." |
|
š¤ "What did I order earlier?" | š "You have 1 previous order on record: Order #8585879147 from Lulu Hypermarket for ā¹144.0. Track it here: https://zoma.to/t/GEAjkmaO" | DB query |
āļø Configuration (.env)
# Database URL (SQLite WAL default or PostgreSQL)
DATABASE_URL=sqlite+aiosqlite:///./zomato_bot.db
# Optional: Gemini API Key
GEMINI_API_KEY=
GEMINI_MODEL=gemini-2.5-flash
# MCP Mode: "local" or "remote"
ZOMATO_MCP_MODE=remote
ZOMATO_MCP_REMOTE_URL=https://mcp-server.zomato.com/mcp
ZOMATO_MCP_AUTH_TOKEN=your_token_hereš Project Structure
zomato_bot/
āāā zomato_bot/
ā āāā config.py # App, DB & MCP configuration
ā āāā audio.py # CLI text-to-speech audio engine
ā āāā cli.py # Terminal voice ordering console
ā āāā db/
ā ā āāā session.py # Async engine, connection pool & WAL pragmas
ā ā āāā models.py # SQLAlchemy 2.0 models (Session, Cart, Order, Memory, Audit)
ā āāā memory/
ā ā āāā service.py # Long-term preference learning & persistent cart/order CRUD
ā āāā mcp/
ā ā āāā server.py # Official MCP 2.x Server implementation
ā ā āāā client.py # MCP Client with async tool auditing
ā ā āāā tools.py # Restaurant, menu, cart & checkout logic
ā ā āāā data.py # Restaurant, menu, coupon data
ā āāā agent/
ā ā āāā bot.py # Unified agent interface
ā ā āāā nlp_fallback.py # Multi-turn voice conversation & intent manager
ā ā āāā prompts.py # System prompt & voice dialogue rules
ā āāā web/
ā āāā app.py # FastAPI REST & WebSocket endpoints with lifespan
ā āāā templates/
ā ā āāā index.html # Interactive Voice UI with Orders & Memory modals
ā āāā static/
ā āāā css/style.css # Zomato dark theme styling
ā āāā js/
ā āāā voice.js # Web Speech API STT/TTS engine
ā āāā app.js # UI, persistence syncing, Orders & Memory handlers
āāā tests/ # 16-test suite covering MCP, Agent, API & DB Persistence
āāā run.sh # Launcher script
āāā README.mdThis server cannot be deployed
Maintenance
Related MCP Connectors
Order food from Cordering white-label restaurants: browse menus, confirm, then place an order.
AI food ordering across Canada ā 17,000+ restaurants, 89 cities, real UberEats + DoorDash.
AI-native restaurant discovery: verified/menu-indexed/discovered tiers + signed allergy-safety data.
Run your restaurant from an AI client: orders, menu, reports, refunds, payouts and staff.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables menu browsing, recommendation requests, and shopping cart management through a Model Context Protocol interface. Users can interact with food order services to query items and handle order additions or removals via natural language.-
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Uber Eats for food ordering and delivery management through natural language, acting as a proof-of-concept MCP integration.-
- FlicenseNot gradedqualityDmaintenanceEnables any AI agent to discover, query, and order from a restaurant's storefront via MCP tools. It handles menu lookup, modifier validation, and enforces a mandatory confirmation gate before payment, replacing the human-operated phone line.-
- AlicenseNot gradedqualityCmaintenanceEnables ordering DoorDash via Poke over text, with tools for restaurant discovery, cart management, promo application, and order submission requiring explicit user confirmation.MIT