🚀 🌟 MCP Travel Concierge Server
究極のAI旅行計画アシスタント - Google Travel ServicesとAmadeus Professional Systemsの両者の長所を兼ね備えた包括的なMCP(Model Context Protocol)サーバーです。
🚀 クイックスタート
このTravel Concierge Serverは、2つの強力な旅行プラットフォームを統合した包括的なソリューションです。
- 🌐 Google Travel Services (SerpAPI経由) - 消費者向けのフライト、ホテル、イベントの検索が可能です。
- 🏢 Amadeus Global Distribution System - 専門的な旅行業界の在庫と価格情報を提供します。
消費者向けの使いやすさと専門的な深度の両方を手に入れましょう!
✨ 主な機能
✈️ デュアルフライト検索
- Google Flights:消費者向けの価格、人気ルート、価格洞察
- Amadeus GDS:専門的な航空会社の在庫、詳細な運賃クラス、リアルタイムの空席状況
🏨 包括的なホテル検索
- Google Hotels:バケーションレンタル、ブティックホテル、消費者のレビュー
- Amadeus Hotels:専門的な料金、リアルタイムの空室状況、ビジネス旅行の最適化
🎭 完全なイベント&アクティビティ発見
- Google Events:地元の祭り、コンサート、文化イベント
- Amadeus Activities:専門的なツアー、選りすぐりの体験、信頼できる事業者
🌍 追加サービス
- 地理コーディングと距離計算:正確な位置情報サービス
- 天気情報:リアルタイムの天気状況と予報
- 通貨変換:リアルタイムの為替レート
- 金融追跡:旅行業界の株価監視
📦 インストール
1. リポジトリをクローンし、依存関係をインストールする
git clone https://github.com/your-username/mcp_travelassistant.git
cd mcp_travelassistant
pip install -r requirements.txt
2. 環境変数を設定する
プロジェクトのルートディレクトリに.envファイルを作成し、APIキーを設定します。
cp env.example .env
.envファイルを編集し、実際のAPIキーを設定します。
# 必要なAPIキー
SERPAPI_KEY=your_serpapi_key_here
AMADEUS_API_KEY=your_amadeus_api_key_here
AMADEUS_API_SECRET=your_amadeus_api_secret_here
EXCHANGE_RATE_API_KEY=your_exchange_rate_api_key_here
APIキーの取得先:
3. サーバーを起動する
python travel_server.py
🔧 技術詳細
Claude Desktop用の設定
Claude Desktopの設定ファイル(通常は~/.cursor/mcp.jsonまたは~/Library/Application Support/Claude/claude_desktop_config.json)に以下の設定を追加します。
{
"mcpServers": {
"travel-concierge": {
"command": "python",
"args": ["combined_travel_server.py"],
"cwd": "/path/to/your/mcp_travelassistant",
"env": {
"SERPAPI_KEY": "your_serpapi_key_here",
"AMADEUS_API_KEY": "your_amadeus_api_key_here",
"AMADEUS_API_SECRET": "your_amadeus_api_secret_here",
"EXCHANGE_RATE_API_KEY": "your_exchange_rate_api_key_here"
}
}
}
}
UVパッケージマネージャー用の設定
UVを使用している場合は、以下の設定を使用できます。
{
"mcpServers": {
"travel-concierge": {
"command": "uv",
"args": [
"--directory", "/path/to/your/mcp_travelassistant/",
"run", "python", "combined_travel_server.py"
],
"env": {
"SERPAPI_KEY": "your_serpapi_key_here",
"AMADEUS_API_KEY": "your_amadeus_api_key_here",
"AMADEUS_API_SECRET": "your_amadeus_api_secret_here",
"EXCHANGE_RATE_API_KEY": "your_exchange_rate_api_key_here"
}
}
}
}
HTTPモード用の設定
サーバーをHTTPモードで実行する場合は、以下の設定を使用します。
{
"mcpServers": {
"travel-concierge": {
"command": "npx",
"args": [
"@modelcontextprotocol/client-http",
"http://localhost:8000/"
]
}
}
}
その後、以下のコマンドでサーバーを起動します。python travel_server.py --transport http --port 8000
🎯 利用可能なツール
✈️ フライト検索ツール
| ツール |
プロバイダー |
説明 |
search_flights_serpapi() |
Google Flights |
価格洞察付きの消費者向けフライト検索 |
search_flights_amadeus() |
Amadeus GDS |
専門的な航空会社の在庫と運賃 |
🏨 ホテル検索ツール
| ツール |
プロバイダー |
説明 |
search_hotels_serpapi() |
Google Hotels |
レビュー付きの消費者向けホテル検索 |
search_hotels_amadeus_by_city() |
Amadeus GDS |
専門的な都市ベースのホテル検索 |
search_hotels_amadeus_by_geocode() |
Amadeus GDS |
専門的な座標ベースの検索 |
search_hotel_offers_amadeus() |
Amadeus GDS |
リアルタイムのホテルの空室状況と価格 |
🎭 イベント&アクティビティツール
| ツール |
プロバイダー |
説明 |
search_events_serpapi() |
Google Events |
地元のイベントと文化体験 |
search_activities_amadeus() |
Amadeus GDS |
専門的なツアーとアクティビティ |
🌍 ユーティリティツール
| ツール |
プロバイダー |
説明 |
geocode_location() |
Nominatim |
住所を座標に変換する |
calculate_distance() |
Geopy |
場所間の距離を計算する |
get_weather_forecast() |
Open-Meteo |
旅行計画用の天気予報 |
get_current_conditions() |
Open-Meteo |
リアルタイムの天気状況 |
convert_currency() |
ExchangeRate-API |
リアルタイムの通貨変換 |
lookup_stock() |
Google Finance |
旅行業界の株価追跡 |
💻 使用例
包括的な旅行計画
google_flights = search_flights_serpapi(
departure_id="JFK",
arrival_id="CDG",
outbound_date="2025-06-15",
return_date="2025-06-22",
adults=2
)
amadeus_flights = search_flights_amadeus(
originLocationCode="JFK",
destinationLocationCode="CDG",
departureDate="2025-06-15",
returnDate="2025-06-22",
adults=2
)
ホテル検索戦略
location = geocode_location("Paris city center")
google_hotels = search_hotels_serpapi(
location="Paris city center",
check_in_date="2025-06-15",
check_out_date="2025-06-22"
)
amadeus_hotels = search_hotel_offers_amadeus(
cityCode="PAR",
checkInDate="2025-06-15",
checkOutDate="2025-06-22"
)
完全な旅行計画
coords = geocode_location("Paris, France")
weather = get_weather_forecast(
latitude=coords['latitude'],
longitude=coords['longitude']
)
events = search_events_serpapi(
query="concerts museums",
location="Paris",
date_filter="week"
)
budget_eur = convert_currency(
from_currency="USD",
to_currency="EUR",
amount=2000
)
🌟 ベストプラクティス
1. デュアル検索戦略
フライトとホテルの検索では、両方のプラットフォームを常に検索して、最良の取引と包括的なオプションを確保しましょう。
2. 位置情報を最初に取得する
geocode_location()を使用して正確な座標を取得し、それを位置ベースの検索に使用しましょう。
3. 天気情報を統合する
get_weather_forecast()を使用してアクティビティ計画を決定する前に天気予報を確認しましょう。
4. 通貨計画を立てる
convert_currency()を使用して正確な国際旅行の予算を計画しましょう。
🔄 Dockerサポート
ビルドと実行
docker build -t travel-concierge .
docker run -p 8000:8000 \
-e SERPAPI_KEY=your_key \
-e AMADEUS_API_KEY=your_key \
-e AMADEUS_API_SECRET=your_secret \
-e EXCHANGE_RATE_API_KEY=your_key \
travel-concierge
Docker Compose
cp env.example .env
docker-compose up
🐛 トラブルシューティング
一般的な問題
-
APIキーが不足している
Error: SERPAPI_KEY environment variable is required
解決策:.envファイルまたは環境変数にAPIキーを設定します。
-
ポートが既に使用中
Error: Port 8000 is already in use
解決策:--port 8001を使用して別のポートを指定します。
-
Amadeus認証エラー
Error: Invalid API credentials
解決策:AmadeusのAPIキーとシークレットが正しいことを確認します。
ヘルスチェック
HTTPモードで実行している場合は、http://localhost:8000/healthにアクセスしてサーバーが正常に動作していることを確認します。
📈 パフォーマンス
- 統一アーキテクチャ:単一のサーバーでオーバーヘッドと複雑さを削減します。
- 同時リクエスト:複数の同時リクエストを効率的に処理します。
- レート制限:外部API呼び出しに組み込みのレート制限があります。
- エラーハンドリング:包括的なエラーハンドリングと回復機能があります。
🤝 コントリビューション
- リポジトリをフォークする
- 機能ブランチを作成する (
git checkout -b feature/amazing-feature)
- 変更を加える
- 必要に応じてテストを追加する
- 変更をコミットする (
git commit -m 'Add some amazing feature')
- ブランチにプッシュする (
git push origin feature/amazing-feature)
- プルリクエストを作成する
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。
🙏 謝辞
- Amadeus for Developers - 専門的な旅行業界のデータ
- SerpAPI - Google Servicesの統合
- Open-Meteo - 天気データサービス
- ExchangeRate-API - 通貨変換サービス
- Nominatim/OpenStreetMap - 地理コーディングサービス
🆘 サポート
サポートが必要な場合は、以下の手順を行ってください。
- 上記のドキュメントを確認する
- サンプル環境ファイルを確認する
- 問題の詳細情報を含めてイシューを作成する
良い旅を! ✈️🏨🎭🌍