旅行规划服务器

一个结合Google旅行服务和Amadeus专业系统的AI旅行规划助手,提供航班、酒店、活动和实用工具的综合搜索功能。

  • by abhinavmathur-atlan
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 abhinavmathur-atlan/mcp-travel-assistant

使用说明

🌟 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.txt

2.设置环境变量

创建一个 .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密钥的位置:

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-concierge

Docker Compose

# Copy environment file
cp env.example .env

# Edit .env with your API keys
# Then run:
docker-compose up

🐛 故障排除

常见问题

  1. 缺少API密钥

    Error: SERPAPI_KEY environment variable is required
    

    解决方案:在中设置API密钥 .env 文件或环境变量

  2. 端口已在使用中

    Error: Port 8000 is already in use
    

    解决方案:使用其他端口 --port 8001

  3. Amadeus身份验证错误

    Error: Invalid API credentials
    

    解决方案:验证您的Amadeus API密钥和机密是否正确

健康检查

在HTTP模式下运行时,请访问 http://localhost:8000/health 验证服务器是否正常运行。

📈 演出

  • 统一架构:单服务器减少了开销和复杂性
  • 并发请求:高效处理多个同时进行的请求
  • 速率限制:外部API调用的内置速率限制
  • 错误处理:全面的错误处理和恢复

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交您的更改(git commit -m 'Add some amazing feature')
  6. 推到分支(git push origin feature/amazing-feature)
  7. 打开拉取请求

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

  • Amadeus开发者版 -专业旅游行业数据
  • SerpAPI -谷歌服务集成
  • Open Meteo -气象数据服务
  • 汇率-API -货币兑换服务
  • 提名/开放街道地图 -地理编码服务

🆘 支持

如需支持,请:

  1. 检查上述文件
  2. 查看示例环境文件
  3. 打开一个问题,提供有关您问题的详细信息

旅途愉快! ✈️🏨🎭🌍