Agentic Swiggy MCP Server
by Ichibu013
README.md
# Agentic Swiggy MCP Server





A highly modular, non-deterministic agentic Model Context Protocol (MCP) server that mimics a food delivery assistant (like Swiggy). Built with **LangGraph**, **FastMCP**, and **ChromaDB**, this server leverages an intelligent ReAct agent to dynamically route tasks, answer questions, provide recommendations, and safely execute food orders using a **Human-in-the-Loop (HITL)** workflow.
---
## Core Features
* **Non-Deterministic ReAct Agent**: The agent dynamically decides which tools to use based on the conversational context without hardcoded workflows.
* **Human-In-The-Loop (HITL)**: Order placements are securely intercepted. The agent pauses execution to ask for human authorization before finalizing any real transactions.
* **Multi-Format RAG Ingestion**: A decoupled ingestion pipeline that universally parses `.json`, `.csv`, `.md`, `.txt`, and `.pdf` files into a local ChromaDB vector store.
* **Contextual Recommendations**: Recommends the top 3 food items dynamically evaluated against the user's current geographic location and time of day.
* **Model Context Protocol (MCP)**: Exposes the agent's capabilities as standardized MCP tools, making them discoverable and usable by modern LLM clients (like Claude Desktop).
* **100% Local Embeddings**: Built-in support for HuggingFace `sentence-transformers` for cost-free, offline vector embeddings.
---
## Project Structure
```text
swiggy_agent/
├── data/
│ ├── restaurants_menu.json # Restaurant catalog & timings
│ ├── order_history.json # Past & active order records
│ ├── food_reviews.csv # Customer reviews & sentiment
│ └── platform_policies.md # Packaging & late-night guidelines
├── src/
│ ├── ingestion.py # Multi-format universal data ingestor
│ ├── tools/
│ │ ├── __init__.py
│ │ ├── order_tool.py # Tool 1: Order Food (HITL sensitive)
│ │ ├── recommendation_tool.py # Tool 2: Geo/Time Recommendations
│ │ ├── history_tool.py # Tool 3: Order tracking & history
│ │ └── rag_tool.py # Tool 4: Review retrieval RAG
│ ├── agent.py # Non-deterministic LangGraph agent + HITL
│ └── mcp_server.py # FastMCP Server exposing tools
├── requirements.txt
├── .env # Environment variables (API Keys)
└── main.py # Entry point for interactive CLI testing
```
---
## Setup & Installation
### 1. Install Dependencies
Ensure you have Python 3.10+ installed. Install the required packages:
```bash
pip install -r requirements.txt
# Alternatively, install manually:
pip install mcp langchain langchain-openai langchain-huggingface langchain-chroma langgraph chromadb sentence-transformers python-dotenv
```
### 2. Configure Environment Variables
Create a `.env` file in the root directory and add your LLM API keys (e.g., Google Gemini, OpenAI, or Groq):
```env
# Example using Google Gemini (Recommended for free tier)
GEMINI_API_KEY=your_api_key_here
# Example using OpenAI (If applicable)
# OPENAI_API_KEY=your_api_key_here
```
### 3. Initialize the Vector Database
Before running the agent, ingest the synthetic data to build the local ChromaDB vector store:
```bash
python src/ingestion.py
```
---
## Usage
### Option 1: Run the Interactive Agent Demo
Test the LangGraph agent and the Human-in-the-Loop order workflow via the terminal:
```bash
python main.py
```
*Try a prompt like: "Hi, I'm USR_500 in Koramangala at 21:00. What's good to eat around here? Check reviews for what people say, and if it's rated well, order 1 portion to 5th Block."*
### Option 2: Start the MCP Server
To expose the tools to an MCP-compatible client (like Claude Desktop or an external app):
```bash
python src/mcp_server.py
```
---
## Tools Reference
| Tool Name | Description | Output |
| :--- | :--- | :--- |
| `order_food` | Places a food order. Triggers a graph interrupt requiring a `"yes"` authorization from the user. | JSON confirmation |
| `get_top_3_food` | Evaluates local restaurants based on `location` and `current_time` to suggest the best options. | JSON array |
| `get_order_status_and_history`| Retrieves active and historical order data for a specific user ID. | JSON dict |
| `query_food_reviews_and_policies`| Performs RAG semantic search over reviews, menus, and platform policies. | Markdown text |
---
## License
MIT License
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues