Skip to main content
Glama
Gustor1
by Gustor1

Ultimate Travel Agent đŸŒâœˆïž

A generic, privacy-first, local-first multi-agent travel planning system generating verified, realistic, day-by-day itineraries with budget estimation and zero required external accounts.

Python 3.10+ License: MIT Code style: ruff Architecture: Local-First


Qu'est-ce que Ultimate Travel Agent ? (En bref)

Ultimate Travel Agent est un systÚme open source conçu pour aider n'importe qui à planifier un voyage complet et réaliste, sans risquer ses données personnelles et sans dépendre d'abonnements cloud ou de clés d'API payantes.

Contrairement aux chatbots conventionnels qui hallucinent des horaires, inventent des prix ou poussent vers des liens sponsorisés, ce systÚme :

  1. Modélise fidÚlement la réalité : Regroupement géographique des visites, temps de trajet porte-à-porte, pauses déjeuner respectées, alternatives en cas de pluie ou de fermeture.

  2. Fonctionne 100% hors-ligne par défaut : Zéro compte requis, zéro fuite de données, reproductibilité totale.

  3. Sécurise vos démarches : Ne réserve et ne paye jamais automatiquement. Il fournit des liens officiels directs vers les billetteries réelles des monuments et compagnies de transport.

  4. Offre 3 interfaces : Une interface web locale intuitive (FastAPI), une CLI puissante et un serveur MCP compatible Claude Desktop / Cursor.


Related MCP server: SkyOdyssey MCP

Concepts Clés & Différenciation

Pour bien comprendre l'architecture du projet :

  • Skills : Des instructions et directives rĂ©utilisables (SKILL.md) installables dans tout projet IA compatible Antigravity (planification, vĂ©rification de sources, validation budgĂ©taire, sĂ©curitĂ©, orchestration, audit MCP).

  • Sous-agents : Les rĂŽles d'IA spĂ©cialisĂ©s internes coordonnĂ©s en vagues DAG pour accomplir la synthĂšse du voyage de bout en bout.

  • MCP local : Le serveur Model Context Protocol exĂ©cutĂ© sur la machine locale via le transport stdio.

  • MCP distant : Le serveur HTTP Streamable dĂ©ployĂ© en ligne (Cloud Run, Railway, Render, Fly.io, Docker), connectable Ă  distance depuis n'importe quel IDE ou agent compatible MCP.

  • Provider : Une connexion optionnelle cĂŽtĂ© serveur vers une source de donnĂ©es externe (vols, trains, hĂŽtels, avis, activitĂ©s, cartes, mĂ©tĂ©o, devises), toujours protĂ©gĂ©e par un repli dĂ©terministe hors-ligne.


Mode Hors-Ligne & Garantie de Non-Paiement

⚠ Avertissement produit rĂ©glementaire :

Offline local planning mode:
No live availability, price, opening-hour or booking verification.
  • ZĂ©ro transaction financiĂšre : Le systĂšme n'a aucun accĂšs bancaire et ne dĂ©clenche aucun paiement direct.

  • ZĂ©ro inventaire en direct : Les disponibilitĂ©s rĂ©elles de siĂšges ou de chambres d'hĂŽtel doivent ĂȘtre vĂ©rifiĂ©es sur les portails officiels avant dĂ©part.

  • ZĂ©ro fabrication d'urgence : Les numĂ©ros d'urgence et coordonnĂ©es diplomatiques portent la mention lĂ©gale « Requires official source verification. ».


Le RÎle des 11 Sous-Agents Spécialisés

Pour garantir une rigueur absolue et éviter l'amplification d'erreurs, le systÚme coordonne 11 agents ordonnancés en 5 vagues rigides, couvrant 9 étapes métier transparentes :

Wave 1 (Parallel Exploration)
  ├── 1. destination-researcher       Geographic context & quiet travel periods
  ├── 2. transport-planner            Door-to-door transit & official booking links
  ├── 3. accommodation-researcher     Strategic neighborhood curation (quiet areas)
  ├── 4. activity-curator             26-dimension activity modeling & crowd avoidance
  ├── 5. local-discovery-agent        Authentic culinary gems (flagged for manual verification)
  └── 6. travel-preparation-agent     Passports, health, visas, and pre-departure checklists

Wave 2 (Budget Consolidation)
  └── 7. budget-analyst               Itemized multi-currency budget & safety buffer (+10-15%)

Wave 3 (Itinerary Optimization)
  └── 8. itinerary-optimizer          Day-by-day scheduling with geographic clustering & weather backup

Wave 4 (Quality & Safety Gate)
  ├── 9. quality-controller           Coherence checks, pacing fatigue alerts & proof audit
  └── mcp-skill-auditor               URL allowlist inspection & prompt injection defense

Wave 5 (Synthesis)
  └── travel-orchestrator             Final trip dossier compilation & Markdown export

Installation Rapide

Prérequis

  • Python 3.10 ou supĂ©rieur

  • Git

git clone https://github.com/Gustor1/ultimate-travel-agent.git
cd ultimate-travel-agent

# Création et activation de l'environnement virtuel
python -m venv .venv
source .venv/bin/activate  # Sur Windows : .venv\Scripts\activate

# Installation du package avec dépendances Web et MCP
pip install -e ".[dev,mcp,web]"

Lancer la suite de tests

pytest

Les 3 Façons d'Utiliser le SystÚme

1. Interface Web Locale (RecommandĂ©) 🌐

Lancez l'application locale légÚre avec FastAPI et ouvrez votre navigateur sur http://127.0.0.1:8000 :

python -m ultimate_travel_agent.cli serve --port 8000
# ou directement :
python -m ultimate_travel_agent.web --port 8000

Dans l'interface, vous pouvez :

  • Charger les exemples de rĂ©fĂ©rence en 1 clic (City-trip Barcelone ou Road-trip Islande).

  • Renseigner vos critĂšres (destination, dates, nombre de voyageurs, style d'hĂ©bergement, rythme, affluence).

  • Visualiser les Ă©tapes, le planning jour par jour et les fiches activitĂ©s enrichies.

  • Comparer des options d'itinĂ©raires inter-villes selon 7 prĂ©fĂ©rences (cheapest, fastest, eco, etc.).

  • Inspecter la ventilation budgĂ©taire et les alertes de surcoĂ»t.

  • Suivre les 9 Ă©tapes du pipeline multi-agents avec leurs hypothĂšses et niveaux de preuve.

  • Consulter les plans B (intempĂ©ries, fermetures) et la fiche d'urgence gĂ©nĂ©rique.

  • Exporter ou copier le dossier en Markdown.

Voir la documentation dédiée : docs/web-interface.md.


2. Ligne de Commande (CLI) đŸ’»

# Valider la cohérence et l'intégrité d'un voyage JSON
python -m ultimate_travel_agent.cli validate examples/city-trip/trip.json

# Calculer le budget prévisionnel consolidé avec marge de sécurité
python -m ultimate_travel_agent.cli budget examples/city-trip/trip.json

# Exécuter l'orchestration multi-agents en 5 vagues
python -m ultimate_travel_agent.cli plan examples/city-trip/trip.json

# Exporter le dossier complet de voyage en Markdown
python -m ultimate_travel_agent.cli export examples/city-trip/trip.json --output reports/barcelone.md

# Lancer la démo scriptée complÚte
python examples/demo_run.py

3. Serveur MCP Local (Model Context Protocol) 🔌

Le systĂšme inclut un serveur MCP standard stdio (version 1.2.0) exposant 21 outils en lecture seule pour Claude Desktop, Cursor ou tout client MCP :

python -m ultimate_travel_agent.mcp.server

Configuration Claude Desktop (mcp-config.json) :

{
  "mcpServers": {
    "ultimate-travel-agent": {
      "command": "python",
      "args": ["-m", "ultimate_travel_agent.mcp.server"]
    }
  }
}

21 Outils disponibles :

  • Planification & VĂ©rification (V1.0 / V1.1) : list_trips, get_trip, validate_trip, get_itinerary, validate_itinerary, calculate_budget, list_booking_requirements, export_trip_summary, get_inter_city_routes, get_contingency_dossier.

  • Hub d'IntĂ©grations & Consultation Voyage (V1.2) : list_integration_providers, get_provider_status, search_flight_options, search_train_options, search_accommodation_options, search_hotel_reviews, search_activity_options, get_route_options, get_weather_outlook, convert_currency, search_travel_sources.


Exemples Référents Inclus

đŸ™ïž Exemple City-Trip : Barcelone Culturelle (3 Jours)

  • Fichier : examples/city-trip/trip.json

  • Style : DĂ©couverte culturelle et gastronomique pour 2 personnes.

  • SpĂ©cificitĂ©s : Billet horodatĂ© Sagrada FamĂ­lia matinal (09h00), Park GĂŒell en fin d'aprĂšs-midi, hĂ©bergement boutique calme Ă  GrĂ cia, trajets en TGV Paris-Barcelone, alternatives en cas de pluie.

🚗 Exemple Road-Trip : Sud de l'Islande (5 Jours)

  • Fichier : examples/road-trip/trip.json

  • Style : ItinĂ©rance nature & paysages en vĂ©hicule 4x4 (chutes de SkĂłgafoss, plage de Reynisfjara, lagon de JökulsĂĄrlĂłn).

  • SpĂ©cificitĂ©s : Distinction du coĂ»t vĂ©hicule vs passagers, rĂ©serve de sĂ©curitĂ© Ă  15% pour variations de carburant/mĂ©tĂ©o, consignes de sĂ©curitĂ© sur les vagues traĂźtresses et l'Ă©tat des routes (road.is).


Hub d'Intégrations Voyage V1.2 (Provider Hub)

Le projet propose une architecture modulaire unifiée dans src/ultimate_travel_agent/integrations/ organisée autour d'un ProviderRegistry et de modÚles typés (Pydantic v2).

1. Modes de Fonctionnement

Le systÚme supporte 3 modes d'exécution distincts :

  • offline : DonnĂ©es locales dĂ©terministes, temps d'accĂšs instantanĂ©, zĂ©ro appel rĂ©seau, parfait pour les tests et la planification dĂ©connectĂ©e.

  • mock : Fixtures enrichies et simulations rĂ©alistes avec dĂ©lais plausibles, couverture de cas limites et formats identiques aux APIs rĂ©elles.

  • live : Interrogation d'APIs tierces rĂ©elles en lecture seule. ActivĂ© uniquement si les identifiants nĂ©cessaires sont configurĂ©s. En cas d'erreur rĂ©seau ou d'absence de clĂ©, le systĂšme applique un repli gracieux automatique (graceful fallback) vers le mock sans interruption.

2. Procédure d'Installation : Sans Clé vs Avec Clés Optionnelles

  • Installation standard sans clĂ© (100% fonctionnelle, zĂ©ro configuration) :

    pip install -e ".[dev,mcp,web]"

    Toutes les fonctionnalités (CLI, Web FastAPI, MCP Server 21 outils, tests unitaires) fonctionnent immédiatement sans aucune clé d'API.

  • Configuration optionnelle avec clĂ©s rĂ©elles : Copiez le gabarit sĂ©curisĂ© d'environnement :

    cp .env.example .env

    Puis renseignez uniquement les clés que vous souhaitez activer (par exemple AMADEUS_CLIENT_ID et AMADEUS_CLIENT_SECRET). Les clés non renseignées conservent leur mode mock / offline par défaut.

3. Garanties de Confidentialité & Absence d'Achat Automatique

  • đŸš« ZĂ©ro Achat / ZĂ©ro RĂ©servation Automatique : Le systĂšme n'a aucun accĂšs aux cartes bancaires, aucun token de paiement et aucune fonction d'Ă©criture transactionnelle. Il ne clique pas, ne remplit pas de formulaires de paiement et ne rĂ©serve rien. Il fournit systĂ©matiquement des liens officiels directs vers les billetteries des opĂ©rateurs.

  • đŸ›Ąïž ZĂ©ro Partage de PII (DonnĂ©es Personnelles) : Aucun nom, prĂ©nom, courriel, passeport ou donnĂ©e privĂ©e de voyageur n'est envoyĂ© aux adaptateurs externes. Les requĂȘtes sont anonymisĂ©es et portent uniquement sur des critĂšres gĂ©nĂ©raux (ville de dĂ©part, destination, dates, nombre d'adultes).

  • 🔒 Secrets ProtĂ©gĂ©s : Le fichier .env.example ne contient aucun secret par dĂ©faut, et .gitignore exclut tous les masques .env* pour Ă©viter toute fuite accidentelle vers un dĂ©pĂŽt public.

4. Tableau Récapitulatif des Fournisseurs

Fournisseur

Domaine / Usage

Clé API requise

Mode supporté

Statut actuel

MockFlightProvider

Vols (itinéraires, tarifs indicatifs, bagages)

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

AmadeusFlightProvider

Vols réels (GDS Amadeus for Developers)

AMADEUS_CLIENT_ID / SECRET

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt, validation requise)

AviationEdgeFlightProvider

Horaires & statuts de vol

AVIATION_EDGE_API_KEY

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

Google Flights

Comparaison de vols

N/A (Aucune API publique)

Aucun

❌ RejetĂ© (Scraping interdit & instable)

MockTrainProvider

Trains (temps de trajet porte-Ă -porte, TGV/TER)

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

SNCFTrainProvider

Trains France / TGV InOui / TER

SNCF_API_KEY

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

NavitiaTrainProvider

Réseaux de transports publics européens

NAVITIA_API_KEY

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

MockAccommodationProvider

HĂŽtels (quartiers calmes, boutique-hĂŽtels)

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

AmadeusHotelProvider

Inventaire hĂŽtelier et tarifs indicatifs

AMADEUS_CLIENT_ID / SECRET

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

BookingProvider

Consultation hébergements

Partenariat Affiliate

live, mock

🟡 PrĂ©parĂ© (Stub consultation uniquement)

MockReviewProvider

Avis et sentiment voyageurs agrégés

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

StayAPIReviewProvider

Sentiments et notes d'hÎtels vérifiés

STAYAPI_KEY

live, mock

🟡 PrĂ©parĂ© (Strictement lecture/avis)

TripadvisorReviewProvider

Notations et avis de réputation

TRIPADVISOR_API_KEY

live, mock

🟡 PrĂ©parĂ© (Strictement lecture/avis)

MockActivityProvider

Activités (26 dimensions, créneaux, replis pluie)

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

GetYourGuideActivityProvider

Visites et excursions culturelles

Partenariat GYG

live, mock

🟡 PrĂ©parĂ© (Stub consultation uniquement)

ViatorActivityProvider

Activités et circuits

Partenariat Viator

live, mock

🟡 PrĂ©parĂ© (Stub consultation uniquement)

OpenTripMapActivityProvider

POIs culturels et monuments ouverts

Clé gratuite OpenTripMap

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

MockMapsProvider

Distances, temps de trajet, matrices d'étapes

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

OSRMProvider

Routage routier open source (OpenStreetMap)

Aucune (Serveur public/auto-hébergé)

live, mock

🟡 PrĂ©parĂ© (PrĂȘt pour auto-hĂ©bergement)

OpenRouteServiceProvider

Isochrones et routage multi-modal

OPENROUTESERVICE_API_KEY

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

NominatimProvider

Géocodage d'adresses OpenStreetMap

Aucune (Respect de l'User-Agent)

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

GoogleMapsRoutesProvider

Matrices de distance Google Maps

GOOGLE_MAPS_API_KEY

live, mock

🟡 PrĂ©parĂ© (Stub consultation uniquement)

MockWeatherProvider

Météo, indices climatiques, déclencheur plan B

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

OpenMeteoProvider

Prévisions météo sans clé (Open Data)

Aucune

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

OpenWeatherMapProvider

Prévisions et alertes météo

OPENWEATHERMAP_API_KEY

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

MockCurrencyProvider

Devises, conversion avec date de référence

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

ECBCurrencyProvider

Taux officiels Banque Centrale Européenne

Aucune (Flux XML public)

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

MockGuideProvider

Contexte local, anecdotes, sécurité

Aucune

offline, mock

✅ IntĂ©grĂ© & Actif par dĂ©faut

WikivoyageProvider

Données de voyage libres et participatives

Aucune (API MediaWiki)

live, mock

🟡 PrĂ©parĂ© (Stub prĂȘt)

SocialDiscoveryProvider

PĂ©pites Ă©mergentes (TikTok/IG) — Non vĂ©rifiĂ©es

Aucune

offline, mock

✅ IntĂ©grĂ© & TaguĂ© social_discovery_only


Niveaux de Vérification des Données

Chaque donnée porte un niveau de preuve transparent :

  • 🟱 official_verified : CertifiĂ© auprĂšs d'un portail gouvernemental, consulaire ou de la billetterie officielle directe.

  • đŸ”” cross_checked : ConfirmĂ© par au moins deux guides ou sources rĂ©putĂ©es indĂ©pendantes.

  • đŸ”· community_recommended : RecommandĂ© par consensus de communautĂ©s de voyageurs expĂ©rimentĂ©s.

  • 🟣 social_discovery_only : Issu des rĂ©seaux sociaux (TikTok, Instagram) — nĂ©cessite une vĂ©rification manuelle des horaires et prix rĂ©els.

  • 🟡 unverified : Estimation prĂ©liminaire non vĂ©rifiĂ©e.

  • 🔮 outdated : DonnĂ©e antĂ©rieure Ă  une modification de grille tarifaire ou d'horaires.

Voir docs/data-verification.md pour les rĂšgles d'audit.


Use Ultimate Travel Agent in another project

Ultimate Travel Agent can be seamlessly plugged into any external AI agent workspace (Antigravity, Claude Code, Cursor, Windsurf):

1. Install Travel Skills

Copy the 6 travel planning, safety, budgeting, and verification skills into your target project:

# Using CLI
ultimate-travel-agent install-skills --target ../my-project

# Or using the portable python script (zero dependencies)
python packages/travel-skills/install.py --target ../my-project

2. Configure Local MCP Server (Stdio)

Add to your client configuration (e.g. ~/.antigravity/mcp_config.json):

{
  "mcpServers": {
    "ultimate-travel-agent-local": {
      "command": "python",
      "args": ["-m", "ultimate_travel_agent.mcp.server"]
    }
  }
}

3. Configure Remote MCP Server (HTTPS Streamable HTTP)

Connect to your remote deployed instance (Railway, Render, Fly.io, Cloud Run):

{
  "mcpServers": {
    "ultimate-travel-agent-remote": {
      "url": "https://YOUR-TRAVEL-MCP-DOMAIN/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TRAVEL_MCP_API_KEY"
      }
    }
  }
}

4. Example Travel Query

Ask your AI assistant:

"Plan a 4-day trip to Barcelona. Query search_flight_options from Paris, find lodging in quiet neighborhoods with search_accommodation_options, and calculate total expenditure with calculate_budget using a 12% buffer."

5. Data Limitations in Offline/Mock Modes

  • All results in offline or mock mode are simulated or heuristic approximations.

  • Fares and hotel prices must be re-checked manually on the official portal links provided.

  • Zero automated bookings or financial transactions will ever be executed.

6. Activating Live Providers

To activate real-time API integrations on your deployed server:

  1. Set server environment variables (e.g. AMADEUS_CLIENT_ID, SNCF_API_KEY, OPENROUTESERVICE_API_KEY).

  2. Select active providers: TRAVEL_PROVIDER_FLIGHTS=amadeus, TRAVEL_PROVIDER_WEATHER=open_meteo.

  3. Query tools with mode="live". If required credentials are missing, the server safely fails closed with ProviderConfigurationError.


Documentation ComplĂšte

Phase 9 — Remote MCP & Distribution Pack

Architecture & Base Locale


Licence

Ce projet est distribuĂ© sous la Licence MIT. Vous ĂȘtes libre de l'utiliser, le modifier et le distribuer.

Related MCP Connectors

Related MCP Servers