SkyGrouper is a MCP-based AI-Agent service that suggests optimal travel destinations and flight itineraries for a group of travelers departing from different airports. It combines user interests with budget constraints and leverages an Agent for detailed planning.
- SkyScanner MCP Server
- Shortlisting of candidate cities based on group interests
- Concurrent LLM-powered destination overview and flight plan generation
- Multi-origin support with individual budgets
- MongoDB integration for storing and retrieving trip requests
- Python 3.8+
- MongoDB (local or hosted)
- OpenAI API credentials (configured via
agent_helpers)
-
Clone the repository:
git clone https://github.com/jc2409/SkyGrouper.git cd SkyGrouper -
Create a virtual environment and install dependencies:
uv init source .venv/bin/activate
-
Copy the sample environment file and set your variables:
cp .env.example .env
-
In
.env, configure:SKYSCANNER_API_KEY="" OPENAI_API_KEY="" MONGO_URI=""
Insert a sample trip document for testing:
db.groupTrips.insertOne({
createdAt: new Date(),
users: [
{ from: "LHR", dates: { start: "2025-06-01", end: "2025-06-10" }, budget: { max: 1500 }, interests: ["culture","mountain"] },
{ from: "KOR", dates: { start: "2025-06-01", end: "2025-06-10" }, budget: { max: 1500 }, interests: ["beach","party"] }
]
});cd agent/mcp
uv run server.pycd ~
cd agent && uv run app.pyFetches the latest trip request from MongoDB, generates a shortlist, and returns detailed plans.
curl -X POST http://127.0.0.1:7000/plan-trip \
-H "Content-Type: application/json"{
"plans": [ /* array of { destination, flights, totals } */ ],
"shortlist": [ /* array of candidate cities */ ]
}- For manual testing, use the provided
curlexample after seeding Mongo.
This project is licensed under the MIT License. See LICENSE for details.
Developed during the HackUPC Hackthon in Barcelona

