TravelGenie
by abhioriganti
README.md
# TravelGenie - AI Travel Planning Assistant

**TravelGenie** is an AI-powered travel planner that helps you coordinate flights, hotels, events, weather, and basically everything else you need for a complete trip itinerary. It's built on Model Context Protocol (MCP) and uses Claude AI to orchestrate 7 specialized servers automatically - so you don't have to juggle a million tabs and apps.



---
## What It Does
Ever tried planning a trip and spent hours jumping between Google Flights, Booking.com, checking weather, looking up events, and trying to figure out if you can afford it all? Yeah, me too. That's why I built TravelGenie.
Just ask it something like: *"Plan a trip to Banff, Alberta from Reston, Virginia, June 7-14, 2025. Budget $5000. We like hiking, museums, and dining."*
And TravelGenie will:
- Find flights and hotels that fit your budget
- Check weather forecasts (because who wants to pack wrong?)
- Discover local events that match what you're into
- Convert currencies so you know what things actually cost
- Analyze traffic patterns (because nobody likes being stuck)
- Create a day-by-day itinerary with a budget breakdown
**No manual searching. Just one request, and you get a complete plan.**
---
## Quick Start
### Installation
First things first, clone the repo and install dependencies:
```bash
git clone <repository-url>
cd TravelGenie
pip install -r requirements.txt
```
### API Keys
You'll need a few API keys to get this running:
- **SerpAPI** - Used for flights, hotels, and events. You can get a free key at [serpapi.com](https://serpapi.com/)
- **Anthropic** - For Claude AI. Sign up at [console.anthropic.com](https://console.anthropic.com/)
- **Slack** (optional) - Only if you want to use the Slack bot. Create an app at [api.slack.com/apps](https://api.slack.com/apps)
- **Open-Meteo** & **OpenStreetMap** - These are free, no keys needed!
### Configuration
Copy the example env file and add your keys:
```bash
cp .env.example .env
# Then edit .env and add your keys
```
### Running It
You've got a couple options:
**Web UI (easiest way to start):**
```bash
streamlit run streamlit_app.py
```
**Or use the Slack bot:**
```bash
python slack_bot.py
```
Then just visit `http://localhost:8501` and start planning!
---
## How It Works
So here's the deal - TravelGenie uses **7 specialized servers** that Claude AI coordinates automatically. Each one handles a specific part of travel planning:
| Server | What It Does |
|--------|-------------|
| **Flight** | Finds and compares flights |
| **Hotel** | Discovers accommodations |
| **Event** | Finds local activities & events |
| **Geocoder** | Converts addresses to coordinates |
| **Weather** | Gets forecasts and conditions |
| **Finance** | Converts currencies |
| **Traffic & Crowd** | Analyzes real-time location data |
**Here's how it flows:**
1. You make a request for a trip
2. Claude geocodes your locations
3. Searches flights, hotels, events
4. Checks weather forecasts
5. Analyzes traffic patterns
6. Converts currencies
7. Synthesizes everything into a complete itinerary
All automatically, usually in seconds. Pretty neat, right?
---
## Usage
### Streamlit Web UI
This is probably the easiest way to use TravelGenie:
1. Run `streamlit run streamlit_app.py`
2. Fill in your trip details (origin, destination, dates, budget, interests)
3. Click "Plan My Trip"
4. Get your complete itinerary!
### Slack Bot
If you're already using Slack, you can integrate TravelGenie as a bot:
```bash
python slack_bot.py
```
Then in Slack, just mention it:
```
@travelgenie Plan a weekend trip to Portland for next weekend.
We want breweries and food trucks. Budget $1500 for 2 people.
```
### Direct API
If you want to integrate it into your own code, you can use the orchestrator directly:
```python
from claude_orchestrator import execute_tool
# Search flights
flights = execute_tool("search_flights",
departure_id="IAD",
arrival_id="YYC",
outbound_date="2025-06-07",
return_date="2025-06-14",
adults=2
)
# Get weather
weather = execute_tool("get_weather_forecast",
location="Banff, Alberta",
forecast_days=7
)
```
---
## Deployment
### Docker
If you want to run it in Docker:
```bash
docker build -t travelgenie .
docker run -d -p 8501:8501 --env-file .env travelgenie
```
### AWS
For production deployments, there's CloudFormation setup:
```bash
cd aws/cloudformation
aws cloudformation create-stack \
--stack-name travelgenie \
--template-body file://infrastructure.yaml \
--parameters file://parameters.json \
--capabilities CAPABILITY_NAMED_IAM
```
This sets up ECS Fargate, DynamoDB, Secrets Manager, and CloudWatch. Check out `aws/Run.md` for more details on the AWS setup.
---
## Server Tools
Each server provides specific tools you can use:
**Flight Server**
- `search_flights` - Find flights with filters
- `get_flight_details` - Get detailed flight info
- `filter_flights_by_price` - Filter by your budget
**Hotel Server**
- `search_hotels` - Find accommodations
- `get_hotel_details` - Property details
- `filter_hotels_by_price` - Budget filtering
**Event Server**
- `search_events` - Find local events
- `get_event_details` - Event information
- `filter_events_by_date` - Filter by date
**Geocoder Server**
- `geocode_location` - Convert address → coordinates
- `reverse_geocode` - Convert coordinates → address
- `calculate_distance` - Distance between locations
**Weather Server**
- `get_weather_forecast` - Multi-day forecasts
- `get_current_weather` - Current conditions
**Finance Server**
- `convert_currency` - Currency conversion
- `get_market_overview` - Market data
**Traffic & Crowd Server**
- `analyze_location_traffic` - Real-time analysis
- `analyze_youtube_video` - Video stream analysis
- `get_traffic_patterns` - Historical patterns
---
## Configuration
### Environment Variables
Create a `.env` file in the root directory:
```bash
# Required
SERPAPI_KEY=your_key
ANTHROPIC_API_KEY=your_key
# Optional - Slack bot
SLACK_BOT_TOKEN=xoxb-your-token
SLACK_APP_TOKEN=xapp-your-token
```
### Claude Desktop (MCP Mode)
If you want to use TravelGenie with Claude Desktop, add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"flight-search": {
"command": "uv",
"args": ["--directory", "/path/to/TravelGenie/servers/flight_server",
"run", "python", "flight_server.py"],
"env": {"SERPAPI_KEY": "your_key"}
}
}
}
```
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
---
## Troubleshooting
**Servers not responding?**
- Double-check your API keys in `.env`
- Make sure you're using Python 3.12.1 or higher
- Check the server logs for errors
**Import errors?**
```bash
pip install -r requirements.txt --upgrade
```
**Slack bot not connecting?**
- Verify your tokens are correct
- Make sure Socket Mode is enabled in your Slack app settings
- Check that your bot has the right scopes: `chat:write`, `app_mentions:read`
**No search results?**
- Try using airport codes (like "IAD" instead of city names) - sometimes that works better
- Check if you've hit your SerpAPI quota
- Make sure your dates are in the future
---
## Testing
To test things out:
```bash
# Test Slack bot
python slack_bot.py --test
# Test Streamlit UI
streamlit run streamlit_app.py
```
---
## Contributing
Contributions are welcome! There's always room for improvement. Some ideas:
- New server types (restaurants, car rentals, etc.)
- Better filtering algorithms
- Improved caching and performance
- Mobile support
- More tests
**How to contribute:**
1. Fork the repo
2. Create a feature branch
3. Make your changes
4. Submit a pull request
---
## Support
If you run into issues:
- **GitHub Issues**: [github.com/abhioriganti/TravelGenie/issues](https://github.com/abhioriganti/TravelGenie/issues)
- **API Docs**:
- [SerpAPI](https://serpapi.com/)
- [Anthropic](https://docs.anthropic.com/)
- [Open-Meteo](https://open-meteo.com/en/docs)
---
## License
MIT License - see LICENSE file for details.
---
**Ready to plan your next trip?** Just run `streamlit run streamlit_app.py` or set up the Slack bot and you're good to go!
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues