MCP Server / travel hacking toolkit
travel hacking toolkit
AI-powered travel hacking with points, miles, and award flights. Drop-in skills and MCP servers for OpenCode and Claude Code.
Transport
Tools (11)
Key
Why
SEATS_AERO_API_KEY
Award flight search. The main event.
DUFFEL_API_KEY_LIVE
Primary cash flight prices. Real GDS data.
IGNAV_API_KEY
Secondary cash flight prices. Fast REST API.
Server
What It Does
Skill
What It Does
Skill
What It Does
Skill
What It Does
Skill
What It Does
Skill
What It Does
Skill
What It Does
Dokumentation
Travel Hacking Toolkit
AI-powered travel hacking with points, miles, and award flights. Drop-in skills and MCP servers for OpenCode and Claude Code.
Ask your AI to find you a 60,000-mile business class flight to Tokyo. It'll search award availability across 25+ programs, compare against cash prices, check your loyalty balances, and tell you the best play.
Quick Start
git clone https://github.com/borski/travel-hacking-toolkit.git
cd travel-hacking-toolkit
./scripts/setup.sh
The setup script walks you through everything: picks your tool (OpenCode, Claude Code, or both), creates your API key config files, installs dependencies, and optionally installs skills system-wide.
The 5 free MCP servers (Skiplagged, Kiwi, Trivago, Ferryhopper, Airbnb) work immediately with zero API keys. For the full experience, add at minimum:
| Key | Why | Free Tier |
|-----|-----|-----------|
| SEATS_AERO_API_KEY | Award flight search. The main event. | No (Pro ~$8/mo) |
| DUFFEL_API_KEY_LIVE | Primary cash flight prices. Real GDS data. | Yes (search free, pay per booking) |
| IGNAV_API_KEY | Secondary cash flight prices. Fast REST API. | Yes (1,000 free requests) |
For the Southwest and American Airlines skills (optional), pull the pre-built Docker images:
# Southwest: fare search + price drop monitoring
docker pull ghcr.io/borski/sw-fares:latest
docker run --rm ghcr.io/borski/sw-fares --origin SJC --dest DEN --depart 2026-05-15 --points --json
docker run --rm -e SW_USERNAME -e SW_PASSWORD ghcr.io/borski/sw-fares change --conf ABC123 --first Jane --last Doe --json
# American Airlines: AAdvantage balance + elite status (not in AwardWallet)
docker pull ghcr.io/borski/aa-miles-check:latest
docker run --rm -e AA_USERNAME=your_number -e AA_PASSWORD=your_pass ghcr.io/borski/aa-miles-check --json
For the Chase and Amex Travel portal skills (optional), pull pre-built Docker images:
# Chase Travel: UR portal pricing, Points Boost, Edit hotels
docker pull ghcr.io/borski/chase-travel:latest
docker run --rm -v ~/.chase-travel-profiles:/profiles -v /tmp:/tmp/host \
-e CHASE_USERNAME -e CHASE_PASSWORD \
ghcr.io/borski/chase-travel script /scripts/search_flights.py \
--origin SFO --dest CDG --depart 2026-08-11 --cabin business --json
# Amex Travel: MR portal pricing, IAP discounts, FHR/THC hotels
docker pull ghcr.io/borski/amex-travel:latest
docker run --rm -v ~/.amex-travel-profiles:/profiles \
-e AMEX_USERNAME -e AMEX_PASSWORD \
ghcr.io/borski/amex-travel script /app/search_flights.py \
--origin SFO --dest NRT --depart 2026-08-15 --cabin business --json
Then launch your tool:
# OpenCode
opencode
# Claude Code
claude --strict-mcp-config --mcp-config .mcp.json
The --strict-mcp-config flag tells Claude Code to load MCP servers from the config file directly. This is more reliable than auto-discovery (known issue).
What's Included
MCP Servers (real-time tools)
| Server | What It Does | API Key | |--------|-------------|---------| | Skiplagged | Flight search with hidden city fares | None (free) | | Kiwi.com | Flights with virtual interlining (creative cross-airline routing) | None (free) | | Trivago | Hotel metasearch across booking sites | None (free) | | Ferryhopper | Ferry routes across 33 countries, 190+ operators | None (free) | | Airbnb | Search Airbnb listings, property details, pricing. Includes geocoding fix, property type filter, and DISABLE_GEOCODING opt-out. | None (free) | | LiteAPI | Hotel search with live rates and booking | LiteAPI |
Skills (API knowledge for your AI)
Start here: the orchestration skills call everything else automatically.
Orchestration
| Skill | What It Does | API Key | |-------|-------------|---------| | award-calendar | Cheapest award dates for a route across a date range. Calendar grid view. | Seats.aero Pro | | compare-flights | Unified flight comparison across ALL sources in parallel. Auto-applies transfer optimization. | Uses individual skill keys | | compare-hotels | Unified hotel comparison across portals, metasearch, and Airbnb. FHR/Edit stacking detection. | Uses individual skill keys | | trip-calculator | "Cash or points?" answered with math. Transfer ratios, taxes, opportunity cost. | None (free, local data) | | trip-planner | Full trip planning: flights + hotels + points in one shot. | Uses individual skill keys |
Flights
| Skill | What It Does | API Key |
|-------|-------------|---------|
| duffel | Primary cash prices. Real GDS per-fare-class data. | Duffel |
| google-flights | Browser-automated Google Flights. All airlines including Southwest. | None (requires agent-browser) |
| ignav | Fast REST API cash prices. Market selection for arbitrage. | Ignav (1,000 free) |
| seats-aero | Award availability across 25+ mileage programs. | Seats.aero Pro/Partner |
| seatmaps | Aircraft seat maps, cabin dimensions, seat recommendations. | None (requires agent-browser) |
| southwest | SW fare classes, points pricing, Companion Pass. Change flight price drop monitor. Docker: ghcr.io/borski/sw-fares. | None (requires Patchright) |
Credit Card Travel Portals
| Skill | What It Does | API Key |
|-------|-------------|---------|
| amex-travel | Amex MR portal: flights, hotels, IAP discounts, FHR/THC benefits. Requires Platinum. Docker: ghcr.io/borski/amex-travel. | None (requires Patchright) |
| chase-travel | Chase UR portal: flights, hotels, Points Boost, Edit benefits. Requires Sapphire. Docker: ghcr.io/borski/chase-travel. | None (requires Patchright) |
Hotels and Accommodation
| Skill | What It Does | API Key | |-------|-------------|---------| | premium-hotels | Search 4,659 Amex FHR/THC + Chase Edit hotels by city. Stacking opportunities. | None (local data) | | rapidapi | Booking.com hotel prices. | RapidAPI | | serpapi | Google Hotels search and destination discovery. | SerpAPI |
Also use tripadvisor (under Destinations) for hotel ratings, rankings, subratings, and reviews.
Loyalty and Points
| Skill | What It Does | API Key |
|-------|-------------|---------|
| american-airlines | AAdvantage balance and elite status. AwardWallet doesn't support AA. Docker: ghcr.io/borski/aa-miles-check. | None (requires Patchright) |
| awardwallet | All loyalty balances, elite status, history. | AwardWallet Business |
| transfer-partners | Cheapest transfer path from credit card points to mileage programs. | None (local data) |
| wheretocredit | Mileage earning rates by airline and booking class across 50+ programs. | None (free) |
Destinations and Transit
| Skill | What It Does | API Key | |-------|-------------|---------| | atlas-obscura | Hidden gems and unusual attractions near any destination. | None (free) | | scandinavia-transit | Trains, buses, ferries in Norway, Sweden, and Denmark. Includes Danish fare/zone pricing. | Entur + Trafiklab + Rejseplanen | | tripadvisor | Hotel ratings, restaurant search, attraction reviews, nearby search. 5K calls/month. | TripAdvisor |
How It Works
Skills
Skills are markdown files that teach your AI how to call travel APIs. They contain endpoint documentation, curl examples, useful jq filters, and workflow guidance. Both OpenCode and Claude Code support skills natively.
The skills/ directory is the canonical source. The setup script either:
- Copies them to your tool's global skills directory (
~/.config/opencode/skills/or~/.claude/skills/) - Or creates project-level symlinks so they load when you work from this directory
MCP Servers
MCP (Model Context Protocol) servers give your AI real-time tools it can call directly. The configs are in:
opencode.jsonfor OpenCode.mcp.jsonfor Claude Code
Skiplagged, Kiwi.com, Trivago, Ferryhopper, and Airbnb need no setup at all. LiteAPI is also a remote server but needs an API key configured in your settings.
Which Skill Do I Use?
"Plan a trip to Paris"
└─→ trip-planner (runs everything below automatically)
"Find flights SFO to CDG"
├─ Know exact dates? → compare-flights (all sources in parallel)
└─ Flexible dates? → award-calendar (cheapest dates for a route)
"Find hotels in Paris"
└─→ compare-hotels (portals + metasearch + Airbnb)
"Should I use points or cash?"
└─→ trip-calculator (CPP analysis + opportunity cost)
"Which of my points should I use?"
└─→ transfer-partners (cheapest transfer path)
"Which FHR/Edit hotels are in Stockholm?"
└─→ premium-hotels (local data, instant)
"Check my SW reservations for price drops"
└─→ southwest (change flight monitor)
The orchestration skills (trip-planner, compare-flights, compare-hotels) call the individual source skills automatically. Start with those unless you need a specific source.
The Travel Hacking Workflow
The core question: "Should I burn points or pay cash?"
- Search ALL flight sources — Duffel + Ignav + Google Flights + Skiplagged + Kiwi for cash. Seats.aero for awards. Southwest for SW points. Chase + Amex portals for pay-with-points.
- Optimize transfers —
transfer-partnersfinds the cheapest path from your credit card points to the loyalty program offering the best deal. - Compare —
trip-calculatorshows CPP for each option. Higher CPP = better use of points. Below floor valuation = pay cash instead. - Check balances — AwardWallet confirms you have enough points.
- Book it — Use booking links from Seats.aero, Duffel, or Ignav. Don't transfer points until you've confirmed availability on the airline's site.
Example Prompts
"Plan a trip to Paris Aug 11-15 in business class"
"Find me the cheapest business class award from SFO to Tokyo in August"
"When's the cheapest time to fly SFO to NRT on points?"
"Compare all options for SFO to CDG round trip"
"Find hotels in Stockholm, include Airbnb"
"Compare points vs cash for a round trip JFK to London next March"
"What are my United miles and Chase UR balances?"
"Check my Southwest reservations for price drops"
"Find hidden gems near Lisbon"
"How do I get from Oslo to Bergen by train?"
"What's the seat pitch on Air France 83 in business class?"
"How many AAdvantage miles do I have?"
"Which FHR and Chase Edit hotels are in Stockholm? Any stacking opportunities?"
"What's the Points Boost rate for SFO to Tokyo business class on Chase?"
"Compare Amex IAP fares vs cash for business class to Paris"
Project Structure
travel-hacking-toolkit/
├── AGENTS.md -> CLAUDE.md # OpenCode project instructions (symlink)
├── CLAUDE.md # Project instructions and workflow guidance
├── opencode.json # OpenCode MCP server config
├── .mcp.json # Claude Code MCP server config
├── .env.example # API key template (OpenCode)
├── .claude/
│ ├── settings.local.json.example # API key template (Claude Code)
│ └── skills -> ../skills # Symlink to skills
├── .opencode/
│ └── skills -> ../skills # Symlink to skills
├── data/
│ ├── alliances.json # Airline alliance membership + booking relationships
│ ├── hotel-chains.json # Hotel chains, sub-brands, loyalty programs, reverse lookup
│ ├── partner-awards.json # Which programs book which airlines (alliance + bilateral)
│ ├── points-valuations.json # Points/miles valuations from 4 sources (floor/ceiling)
│ ├── sweet-spots.json # High-value award redemptions + booking windows
│ └── transfer-partners.json # Credit card transfer partners + ratios
├── skills/
│ │
│ │ # ── Orchestration ──
│ ├── award-calendar/SKILL.md # Cheapest award dates across a date range
│ ├── compare-flights/SKILL.md # Unified flight comparison (all sources)
│ ├── compare-hotels/SKILL.md # Unified hotel comparison (all sources)
│ ├── trip-calculator/SKILL.md # Cash vs points calculator
│ ├── trip-planner/SKILL.md # Full trip planning in one shot
│ │
│ │ # ── Flights ──
│ ├── duffel/SKILL.md # Primary cash prices (GDS)
│ ├── google-flights/SKILL.md # Browser-automated Google Flights
│ ├── ignav/SKILL.md # Secondary cash prices (REST API)
│ ├── seatmaps/SKILL.md # Aircraft seat maps
│ ├── seats-aero/SKILL.md # Award flight availability
│ ├── southwest/ # Southwest fares + change monitoring
│ │ ├── SKILL.md
│ │ ├── Dockerfile
│ │ └── scripts/
│ │ ├── search_fares.py
│ │ ├── check_change.py
│ │ └── entrypoint.sh
│ │
│ │ # ── Credit Card Portals ──
│ ├── amex-travel/ # Amex MR portal (flights + hotels)
│ │ ├── SKILL.md
│ │ ├── Dockerfile
│ │ └── scripts/
│ │ └── search_flights.py
│ ├── chase-travel/ # Chase UR portal (flights + hotels)
│ │ ├── SKILL.md
│ │ ├── Dockerfile
│ │ └── scripts/
│ │ ├── search_flights.py
│ │ └── record_search.py
│ │
│ │ # ── Hotels ──
│ ├── premium-hotels/SKILL.md # FHR/THC/Chase Edit local database
│ ├── rapidapi/SKILL.md # Booking.com prices
│ ├── serpapi/SKILL.md # Google Hotels + destination discovery
│ │
│ │ # ── Loyalty ──
│ ├── american-airlines/ # AA AAdvantage balance
│ │ ├── SKILL.md
│ │ ├── Dockerfile
│ │ └── scripts/
│ │ └── check_balance.py
│ ├── awardwallet/SKILL.md # All loyalty balances
│ ├── transfer-partners/SKILL.md # Transfer path optimizer
│ ├── wheretocredit/SKILL.md # Mileage earning rates
│ │
│ │ # ── Destinations & Transit ──
│ ├── atlas-obscura/ # Hidden gems (+ Node.js scraper)
│ │ ├── SKILL.md
│ │ ├── ao.mjs
│ │ └── package.json
│ ├── scandinavia-transit/SKILL.md # Nordic trains/buses/ferries
│ └── tripadvisor/SKILL.md # Ratings, reviews, nearby restaurants
├── scripts/
│ └── setup.sh # Interactive installer
└── LICENSE # MIT
Credits
- ajimix/travel-hacking-toolkit — Fork that contributed the google-flights skill, ignav skill, market selection strategy, and markdown table output formatting
- Patchright by @Vinyzu — Undetected Playwright fork that makes the Southwest skill possible
- 美卡指南 (US Card Guide) by Scott — FHR/THC/Chase Edit hotel property data via Google My Maps KML
- SeatMaps.com by Quicket GmbH — Aircraft seat maps, cabin data, seat recommendations
- AeroLOPA — Detailed to-scale aircraft seat maps with window positions
- Seats.aero — Award flight availability data
- AwardWallet — Loyalty program tracking
- Duffel — Real-time flight search and booking
- SerpAPI — Google search result APIs
- RapidAPI — API marketplace
- atlas-obscura-api by @bartholomej — Atlas Obscura scraper
- Skiplagged MCP — Flight search with hidden city fares
- Kiwi.com MCP — Flight search with virtual interlining
- Trivago MCP — Hotel metasearch
- Ferryhopper MCP by Ferryhopper — Ferry routes across 33 countries
- mcp-server-airbnb by OpenBnB — Airbnb search and listing details
- LiteAPI MCP by LiteAPI — Hotel booking
- Entur — Norwegian transit API
- Trafiklab / ResRobot — Swedish transit API
- Rejseplanen — Danish transit API
License
MIT