🌟 MCP旅行礼宾服务器
终极AI旅行计划助手 -一个全面的MCP(模型上下文协议)服务器,将谷歌旅行服务的最佳功能与Amadeus Professional Systems相结合。
🚀 概述
此旅行礼宾服务器集成 两个强大的旅游平台 一个全面的解决方案:
- 🌐 谷歌旅游服务 (通过SerpAPI)-对航班、酒店和活动进行消费者友好的搜索
- 🏢 Amadeus全球分销系统 -专业旅游业库存和定价
MCP AI TRAVEL ASSISTANT - Watch Video
拿到 两全其美:具有专业深度的消费者可访问性!
✨ 主要特点
✈️ 双航班搜索
- 谷歌航班:消费者友好型定价、热门路线、价格洞察
- Amadeus GDS:专业的航空公司库存、详细的票价等级、实时可用性
🏨 综合酒店搜索
- 谷歌酒店:度假租赁、精品酒店、消费者评论
- Amadeus酒店:专业费率、实时可用性、商务旅行优化
🎭 完成事件和活动发现
- 谷歌活动:当地节日、音乐会、文化活动
- Amadeus活动:专业旅游、精心策划的体验、经过验证的运营商
🌍 附加服务
- 地理编码和距离计算:精确定位服务
- 天气情报:实时条件和预测
- 货币兑换:实时汇率
- 财务跟踪:旅游业库存监测
🛠️ 安装和设置
1.克隆和安装依赖项
# Clone the repository
git clone https://github.com/your-username/mcp_travelassistant.git
cd mcp_travelassistant
# Install dependencies
pip install -r requirements.txt2.设置环境变量
创建一个 .env 使用API密钥在项目根目录中创建文件:
# Copy the example environment file
cp env.example .env编辑 .env 使用您的实际API密钥文件:
# Required API Keys
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密钥的位置:
- 塞拉皮基:从 SerpAPI
- AMADEUS_API_KEY & AMADEUS_API_SECRET公司:从 Amadeus开发者版
- 交换_日期\_ PI_密钥:从 汇率-API
3.运行服务器
python travel_server.py🔧 MCP配置
适用于克劳德桌面
将此配置添加到您的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() | 提名 | 将地址转换为坐标 |
calculate_distance() | Geopy | 计算位置之间的距离 |
get_weather_forecast() | Open Meteo | 旅行计划的天气预报 |
get_current_conditions() | Open Meteo | 实时天气状况 |
convert_currency() | ExchangeRate-API | 实时货币转换 |
lookup_stock() | 谷歌财经 | 旅游业股票跟踪 |
🎨 使用示例
全面的旅行计划
# Search for flights from multiple providers
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
)酒店搜索策略
# Get coordinates first
location = geocode_location("Paris city center")
# Consumer search via Google Hotels
google_hotels = search_hotels_serpapi(
location="Paris city center",
check_in_date="2025-06-15",
check_out_date="2025-06-22"
)
# Professional search via Amadeus
amadeus_hotels = search_hotel_offers_amadeus(
cityCode="PAR",
checkInDate="2025-06-15",
checkOutDate="2025-06-22"
)完整的旅行计划
# 1. Get destination coordinates
coords = geocode_location("Paris, France")
# 2. Check weather
weather = get_weather_forecast(
latitude=coords['latitude'],
longitude=coords['longitude']
)
# 3. Find events
events = search_events_serpapi(
query="concerts museums",
location="Paris",
date_filter="week"
)
# 4. Convert currency for budget planning
budget_eur = convert_currency(
from_currency="USD",
to_currency="EUR",
amount=2000
)🌟 最佳实践
1. 双重搜索策略
始终在两个平台上搜索航班和酒店,以确保您获得最佳交易和全面的选择。
2. 位置优先
从开始 geocode_location() 为了获得精确的坐标,然后使用这些坐标进行基于位置的搜索。
3. 天气集成
在最终确定活动计划之前,使用以下工具检查天气预报 get_weather_forecast().
4. 货币规划
使用 convert_currency() 准确的国际旅行预算。
🔄 Docker支持
构建并运行
# Build the Docker image
docker build -t travel-concierge .
# Run with environment variables
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-conciergeDocker Compose
# Copy environment file
cp env.example .env
# Edit .env with your API keys
# Then run:
docker-compose up🐛 故障排除
常见问题
- 缺少API密钥
Error: SERPAPI_KEY environment variable is required解决方案:在中设置API密钥 .env 文件或环境变量
- 端口已在使用中
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许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- Amadeus开发者版 -专业旅游行业数据
- SerpAPI -谷歌服务集成
- Open Meteo -气象数据服务
- 汇率-API -货币兑换服务
- 提名/开放街道地图 -地理编码服务
🆘 支持
如需支持,请:
- 检查上述文件
- 查看示例环境文件
- 打开一个问题,提供有关您问题的详细信息
______________________________________________________________________
旅途愉快! ✈️🏨🎭🌍
