🚀 🌟 MCP旅行 concierge 服務器
終極人工智能旅行規劃助手 - 一個全面的MCP(模型上下文協議)服務器,它將谷歌旅行服務的精華與Amadeus專業系統相結合。
🚀 快速開始
本旅行 concierge 服務器將兩個強大的旅行平臺整合為一個全面的解決方案:
- 🌐 谷歌旅行服務(通過 SerpAPI) - 面向消費者的航班、酒店和活動搜索
- 🏢 Amadeus全球分銷系統 - 專業的旅行行業庫存和定價
讓您兼得二者之長:既有面向消費者的便捷性,又有專業的深度!
✨ 主要特性
✈️ 雙航班搜索
- 谷歌航班:面向消費者的定價、熱門航線、價格洞察
- Amadeus GDS:專業的航空公司庫存、詳細的票價等級、即時可用性
🏨 全面的酒店搜索
- 谷歌酒店:度假租賃、精品酒店、消費者評價
- Amadeus酒店:專業價格、即時可用性、商務旅行優化
🎭 完整的活動與體驗發現
- 谷歌活動:當地節日、音樂會、文化活動
- Amadeus活動:專業旅遊、精選體驗、經過驗證的運營商
🌍 附加服務
- 地理編碼與距離計算:精確的位置服務
- 天氣智能:即時天氣狀況和預報
- 貨幣兌換:即時匯率
- 財務跟蹤:旅行行業股票監測
📦 安裝指南
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
🔧 MCP 配置
針對 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() |
谷歌航班 |
帶有價格洞察的面向消費者的航班搜索 |
search_flights_amadeus() |
Amadeus GDS |
專業的航空公司庫存和票價搜索 |
🏨 酒店搜索工具
工具 |
提供商 |
描述 |
search_hotels_serpapi() |
谷歌酒店 |
帶有評價的面向消費者的酒店搜索 |
search_hotels_amadeus_by_city() |
Amadeus GDS |
基於城市的專業酒店搜索 |
search_hotels_amadeus_by_geocode() |
Amadeus GDS |
基於座標的專業搜索 |
search_hotel_offers_amadeus() |
Amadeus GDS |
即時酒店可用性和定價搜索 |
🎭 活動與體驗工具
工具 |
提供商 |
描述 |
search_events_serpapi() |
谷歌活動 |
當地活動和文化體驗搜索 |
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_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 - 谷歌服務集成
- Open-Meteo - 天氣數據服務
- ExchangeRate-API - 貨幣兌換服務
- Nominatim/OpenStreetMap - 地理編碼服務
🆘 支持
如需支持,請:
- 查看上述文檔
- 查看示例環境文件
- 打開一個包含詳細問題信息的問題單
旅途愉快! ✈️🏨🎭🌍