Travel-Seek is an AI-powered travel planning assistant that helps you create personalized travel itineraries and answer travel-related questions. The application leverages a coordinated multi-agent team (powered by Agno + Groq) and optionally enriches results with real Google Places & Directions data via a custom MCP server plus verified OpenWeather forecasts.
- Multi-Agent Travel Planning: Four specialized AI agents (Research, Itinerary, Budget, Local Expert) coordinate to produce comprehensive travel plans.
- Google Places Integration: Real ratings, reviews, hours, and directions via a custom MCP server backed by the Google Maps API.
- OpenWeather Integration: Verified current conditions and 5-day forecasts, with explicit long-range limitations instead of fabricated weather detail.
- Conversational Planning: Chat naturally to build and refine your plan with session memory.
- Graceful Fallback: Works without a Google Maps key — falls back to DuckDuckGo search with a visible warning.
- Standalone MCP Server: The Places MCP server works independently with Claude Desktop or any MCP-compatible client.
git clone https://github.com/Mukku27/Travel-Seek.git
cd Travel-Seekpython3 -m venv .venv
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`pip install -r requirements.txtCreate a .env file in the root directory:
GROQ_API_KEY='your_groq_api_key'
GOOGLE_MAPS_API_KEY='your_google_maps_api_key' # Optional — enables Places & Directions
OPENWEATHERMAP_API_KEY='your_openweather_api_key' # Optional — enables verified weather tools
SERPI_API_KEY='your_serpi_api_key'
# Optional: enable Tavily search alongside SerpAPI/DuckDuckGo
USE_TAVILY='true'
TAVILY_API_KEY='your_tavily_api_key'The GOOGLE_MAPS_API_KEY requires the following APIs enabled in your Google Cloud project:
- Places API
- Directions API
- Geocoding API
If the key is not set, the app works normally using DuckDuckGo for all research.
If USE_TAVILY is enabled and TAVILY_API_KEY is present, the research agent can use Tavily alongside DuckDuckGo.
If OPENWEATHERMAP_API_KEY is set, the planner can use real OpenWeather current conditions and 5-day forecasts. For trips beyond that forecast window, the app tells the traveler to recheck later instead of inventing day-level weather.
streamlit run app.pyOpen your browser at http://localhost:8501, enter your trip details in the sidebar, and either generate a one-shot plan or chat interactively.
pytest tests/ -vTravel-Seek/
├── agents/
│ ├── __init__.py
│ ├── travel_team.py # Team orchestrator with MCP lifecycle
│ ├── research_agent.py # DuckDuckGo + optional MCP tools
│ ├── itinerary_agent.py # Day-by-day planner + optional Directions
│ ├── budget_agent.py # Cost estimates via DuckDuckGo
│ └── local_expert_agent.py # Cultural tips via DuckDuckGo
├── tools/
│ ├── __init__.py
│ └── weather_tool.py # OpenWeather toolkit for live weather guidance
├── mcp_servers/
│ ├── __init__.py
│ ├── config.py # API key management & client factory
│ ├── places_tools.py # Core Google Maps tool logic
│ └── places_server.py # FastMCP server (3 tools)
├── tests/
│ ├── test_places_tools.py
│ ├── test_places_server.py
│ ├── test_mcp_config.py
│ ├── test_travel_team_fallback.py
│ ├── test_weather_tool.py
│ ├── test_weather_tool_live.py
│ ├── test_models.py
│ └── test_utils.py
├── app.py # Streamlit entry point
├── config.py # App configuration
├── models.py # Pydantic models
├── prompt.py # Prompt templates
├── utils.py # Response cleaning utilities
├── requirements.txt
└── README.md
The mcp_servers/ package exposes three Google Maps tools as a standalone MCP server:
| Tool | Description |
|---|---|
search_places |
Geocodes a location, then runs a Places Nearby Search. Returns top 5 results with name, rating, address, price level, etc. |
get_place_details |
Fetches rich details for a place: reviews, hours, phone, website, geometry. |
get_directions |
Computes directions between two locations with distance, duration, and step-by-step instructions. |
python -m mcp_servers.places_serverpython -m mcp_servers.places_server --transport sse --port 8000Add this to your Claude Desktop MCP config:
{
"mcpServers": {
"travel-seek-places": {
"command": "python",
"args": ["-m", "mcp_servers.places_server"],
"env": {
"GOOGLE_MAPS_API_KEY": "your_key"
}
}
}
}This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.