A production-grade MCP server that enables Claude to search and compare flights across multiple providers directly from your conversations.
- Multi-Provider Search - Aggregates results from Skyscanner, Google Flights, and Kiwi.com
- Smart Caching - Reduces API calls with configurable TTL caching
- Parallel Queries - Searches multiple providers simultaneously with deduplication
- Flexible Filtering - Filter by price, stops, airlines, cabin class
- Result Analysis - Get recommendations for cheapest, fastest, and best value flights
- Python 3.11+
- Claude Desktop or any MCP-compatible client
- At least one flight API key (Skyscanner, Google Flights, or Kiwi)
- Clone the repository:
git clone https://github.com/yourusername/FlightFinderMCP.git
cd FlightFinderMCP- Install dependencies:
pip install -e .- Configure environment variables:
cp .env.example .env
# Edit .env and add your API key(s)- Add to Claude Desktop config (
claude_desktop_config.json):
{
"mcpServers": {
"flight-finder": {
"command": "flight-finder-mcp",
"env": {
"FLIGHT_FINDER_SKYSCANNER_API_KEY": "your_key_here"
}
}
}
}Once configured, you can ask Claude to search for flights naturally:
Claude will use the MCP tools to:
- Search across multiple flight providers
- Compare prices and flight times
- Filter by your preferences (non-stop, cabin class, etc.)
- Recommend the best options
The server exposes three MCP tools:
search_flights- Search for flights between airportsget_cache_stats- View cache performance metricsclear_cache- Clear cached search results
Key environment variables:
| Variable | Description | Default |
|---|---|---|
FLIGHT_FINDER_SKYSCANNER_API_KEY |
Skyscanner API key | - |
FLIGHT_FINDER_GOOGLE_FLIGHTS_API_KEY |
Google Flights API key | - |
FLIGHT_FINDER_KIWI_API_KEY |
Kiwi.com API key | - |
FLIGHT_FINDER_CACHE_TTL_SECONDS |
Cache duration | 300 |
FLIGHT_FINDER_MAX_SEARCH_RESULTS |
Result limit per search | 50 |
FLIGHT_FINDER_LOG_LEVEL |
Logging level | INFO |
See .env.example for all available options.
Built using clean architecture principles:
- Domain Layer - Flight entities, search criteria, value objects
- Application Layer - Use cases for search, filtering, recommendations
- Infrastructure Layer - API clients, caching, rate limiting
- Presentation Layer - MCP server handlers and schemas
Uses the Result monad pattern for error handling and Pydantic for validation.
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# With coverage
pytest --cov=src/flight_finder# Format code
black src tests
isort src tests
# Type checking
mypy src
# Linting
ruff check src testsMIT
Contributions welcome! Please open an issue or PR.



