SkyOdyssey MCP
SkyOdyssey MCP exposes the SkyOdyssey flight engine as a Model Context Protocol server.
It is designed for AI clients (Claude Desktop, MCP Inspector, custom MCP hosts) that need:
- Cheapest destination exploration
- Multi-leg itinerary optimization
- Region/airport reference resources
---
Features
- MCP tools for flight search and itinerary optimization
- Shared core logic with
SkyOdyssey-CLI(logic.py,airports.py) - Country/airport/airline filters
- Budget-aware pruning (
max_budget) - Direct-flight filtering
- Multi-origin and flexible stay support for 3-leg itineraries
- SQLite caching (
flights_cache.db, TTL 6h) - Retry/backoff behavior for unstable provider responses
- Pydantic validation on itinerary outputs
---
Tools Exposed
get_flights_on_date
Fetch one-way flights for a specific route/date.
Inputs:
origin(IATA)destination(IATA)date(YYYY-MM-DD)adults(default1)seat_type(defaulteconomy)
get_cheapest_destinations
Explore a region from one origin/date and return cheapest options.
Inputs:
origindateregion(defaultEurope)limit(default15)adultsseat_typeexcluded_countriesexcluded_airportsdirect_onlyinclude_airlines,exclude_airlinesmax_budget
find_cheapest_two_city_itinerary
Find cheapest 3-leg itinerary loops.
Inputs include:
origin(single airport or list)start_datestay_days_1/stay_days_2(fixed int or[min, max])regionlimit_per_legexcluded_countries,excluded_airportsmax_itinerariesforce_different_countriesdirect_onlyreturn_origin(open-jaw)include_airlines,exclude_airlinesmax_budget
Guardrails:
originlist max:5limit_per_legmax:30max_itinerariesmax:100- stay range window max width:
14days (for each ofstay_days_1andstay_days_2)
---
Resources
airports://regions→ available regionsairports://{region}→ airport codes for a region
---
Requirements
- Python 3.10+
- Internet access (provider scraping via
fast-flights)
---
Installation
From SkyOdyssey-MCP:
python -m pip install -r requirements.txt
---
Run the Server
python server.py
Server transport:
stdio(configured inserver.py)
---
Claude Desktop Example
Add to claude_desktop_config.json:
{
"mcpServers": {
"skyodyssey": {
"command": "python",
"args": ["C:/absolute/path/to/SkyOdyssey/SkyOdyssey-MCP/server.py"]
}
}
}
---
Project Structure
server.py— MCP server entrypoint and tool/resource registrationlogic.py— flight search, filtering, optimization, cacheairports.py— regions, airport datasets, exclusion helpersrequirements.txt— runtime dependencies
---
Troubleshooting
Import error for fast_flights
- Reinstall dependencies:
python -m pip install -r requirements.txt - Ensure your Python environment is the same one used to run
server.py
Empty or partial results
- Provider instability/timeouts can happen; retry run
- Reduce search width (
limit_per_leg) and/or constraints - Relax filters (
direct_only, exclusions, budget)
Cache issues
- Delete cache if needed:
- Windows PowerShell:
Remove-Item flights_cache.db - Windows cmd:
del flights_cache.db
---
License
MIT License.












