使用说明
Amadeus MCP服务器
全面的模型上下文协议(MCP)服务器,可访问完整的Amadeus travel API套件。该服务器使AI助手能够通过Amadeus行业领先的旅行API搜索、预订和管理航班、酒店、旅游、接送等。
特性
飞行API(11个工具)
-
航班搜索与发现
search_flights-搜索具有灵活参数的航班优惠confirm_flight_price-预订前验证定价flight_inspiration_search-从起点发现目的地flight_cheapest_dates-寻找最便宜的旅行日期
-
飞行分析和预测
analyze_flight_price-基于人工智能的价格分析predict_flight_delay-预测航班延误get_flight_status-实时航班跟踪
酒店API(4个工具)
search_hotels_by_city-查找城市中的酒店search_hotels_by_location-查找坐标附近的酒店get_hotel_offers-搜索可用性和价格get_hotel_ratings-基于情绪的酒店评级
旅游和活动(2个工具)
search_activities-按地点查找旅游和活动get_activity_details-获取详细的活动信息
转账(1个工具)
search_transfers-搜索机场接送和地面交通(有效类型:私人、出租车、小时、班车、共享)- 支持机场到机场的自动位置格式化接送
- 包括20多个主要机场的数据库,其中包含完整的地址和坐标信息
- 自动添加API兼容性所需的位置详细信息(城市、国家/地区代码、坐标)
参考数据(6个工具)
search_airports-按关键字查找机场search_cities-按名称查找城市get_nearest_airports-查找坐标附近的机场get_airline_info-获取航空公司信息get_airline_routes-获取航空公司航线网络get_airport_routes-获取机场目的地
市场洞察(2个工具)
get_travel_insights-大多数旅游目的地get_booking_insights-预订最多的目的地
总计:26个MCP工具 -专注于实用的搜索和发现功能
禁用工具
以下工具已禁用,但仍保留在代码库中以供参考:
- ❌ 预订工具 (5):
book_flight,book_hotel,book_transfer,get_flight_order,cancel_flight_order- 原因:测试环境不能创建真正的预订;用户更喜欢直接在航空公司/酒店网站上预订
- ❌ 预测三重目标:商务旅行与休闲旅行的人工智能预测
- 原因:用户已经知道他们的旅行目的;最小实用价值
安装
1.获取Amadeus API证书
注册一个免费的Amadeus开发者帐户:
- 访问https://developers.amadeus.com
- 创建账户
- 在仪表板中创建新应用程序
- 复制您的 API密钥 (客户端ID)和 API秘密 (客户机密)
2.安装依赖项
pip install -r requirements.txt
或者直接安装软件包:
pip install -e .
3.配置环境变量
将Amadeus凭据设置为环境变量:
export AMADEUS_CLIENT_ID="your_api_key_here"
export AMADEUS_CLIENT_SECRET="your_api_secret_here"
export AMADEUS_ENV="test" # Use "production" for live bookings
对于持久配置,请添加到 ~/.bashrc 或 ~/.zshrc:
# Amadeus API Configuration
export AMADEUS_CLIENT_ID="your_api_key_here"
export AMADEUS_CLIENT_SECRET="your_api_secret_here"
export AMADEUS_ENV="test"
用法
运行服务器
启动Amadeus MCP服务器:
mcp-server-amadeus
或者直接运行:
python -m mcp_server_amadeus
与Claude Desktop一起使用
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"amadeus": {
"command": "mcp-server-amadeus",
"env": {
"AMADEUS_CLIENT_ID": "your_api_key_here",
"AMADEUS_CLIENT_SECRET": "your_api_secret_here",
"AMADEUS_ENV": "test"
}
}
}
}
查询示例
连接后,您可以问Claude:
航班搜索:
- “搜索12月15日从纽约飞往巴黎的航班”
- “找到下个月从伦敦到东京最便宜的商务舱航班”
- “我在哪里可以从洛杉矶坐300美元以下的飞机?”
酒店搜索:
- “查找12月20日至25日巴黎2名成人的酒店”
- “搜索埃菲尔铁塔坐标附近的酒店”
- “显示纽约万豪酒店的评级”
活动:
- “卢浮宫博物馆附近有什么旅游和活动?”
- “在罗马市中心找事情做”
转移:
- “搜索从CDG机场到ORY机场的接送服务”
- “找一辆从肯尼迪机场到曼哈顿的私家车”
- “从希思罗机场到伦敦市中心有哪些出租车选择?”
旅游见解:
- “旧金山最受欢迎的目的地是什么?”
- “预测这次旅行是商务旅行还是休闲旅行:纽约至芝加哥,周一至周五”
- “这是从洛杉矶飞往肯尼迪机场的好价格吗?”
参考数据:
- 查找坐标40.7128、-74.0060附近的机场
- “美国航空公司经营哪些航线?”
- “搜索日本的机场”
API环境
测试环境(默认)
- 基本URL:
https://test.api.amadeus.com - 目的: 开发和测试
- 特征:
- 免费套餐可用
- 未创建实际预订
- 有限费率限制
- 测试数据可能无法反映实时可用性
生产环境
- 基本URL:
https://api.amadeus.com - 目的: 实时预订和真实数据
- 特征:
- 实时数据
- 实际预订和费用
- 更高的利率限制
- 需要生产API证书
使用以下参数设置环境: export AMADEUS_ENV="production"
工具参考
航班搜索参数
这 search_flights 工具接受:
| 参数 | 类型 | 描述 | 示例 |
|---|---|---|---|
origin |
string | 始发机场/城市代码 | “NYC”、“JFK” |
destination |
string | 目的地代码 | “LAX”、“标准杆数” |
departure_date |
string | 出发日期 | “2024-12-15” |
return_date |
string | 返回日期(可选) | “2024-12-20” |
adults |
int | 成人人数 | 1 |
children |
int | 子女人数 | 0 |
travel_class |
string | 客舱级别 | “经济舱”、“商务舱” |
max_results |
int | Max提出返回 | 10 |
currency_code |
string | 价格货币 | “USD”、“EUR” |
nonstop_only |
bool | 仅直飞航班 | false |
included_airline_codes |
string | 按航空公司筛选 | “AA、UA、DL” |
酒店搜索参数
这 get_hotel_offers 工具接受:
| 参数 | 类型 | 描述 | 示例 |
|---|---|---|---|
hotel_ids |
string | 酒店ID(逗号分隔) | “MCLONGHM,ADNYCCTB” |
check_in_date |
string | 入住日期 | “2024-12-15” |
check_out_date |
string | 退房日期 | “2024-12-20” |
adults |
int | 每间客房的成人人数 | 2 |
room_quantity |
int | 房间数 | 1 |
currency |
string | 价格货币 | “USD” |
认证
服务器自动处理OAuth2身份验证:
- 初始请求: 当调用第一个工具时,服务器请求访问令牌
- 令牌缓存: 令牌被缓存并重新用于后续请求
- 自动刷新: 令牌在到期前自动刷新
- 错误处理: 身份验证错误被清楚地记录下来
您不需要手动管理令牌,只需设置凭据,服务器就可以处理其余部分。
速率限制
Amadeus API费率限制因环境而异:
- 测试: 每秒约10个请求
- 生产: 根据您的计划设定更高的限额
服务器包括对速率限制响应的错误处理。
错误处理
所有工具都返回JSON,其中包含:
成功响应:
{
"data": [...],
"meta": {...}
}
错误响应:
{
"error": "Detailed error message"
}
错误也会记录到stderr进行调试。
支持的IATA代码
机场代码
使用标准的3个字母的IATA代码:
JFK-肯尼迪国际机场LAX-洛杉矶国际机场LHR-伦敦希思罗机场CDG-巴黎戴高乐NRT-东京成田
城市代码
许多城市都有自己的代码:
NYC-纽约市(所有机场)LON-伦敦(所有机场)PAR-巴黎(所有机场)TYO-东京(所有机场)
航空公司代码
标准2字母IATA代码:
AA-美国航空公司UA-联合航空公司DL-达美航空公司BA-英国航空公司LH-汉莎航空
发展
项目结构
src/mcp_server_amadeus/
├── __init__.py # Package initialization
└── server.py # Main MCP server with all tools
添加新工具
添加新的Amadeus API端点:
- 添加工具功能
@mcp.tool()装饰器 - 使用实现API请求
amadeus_request() - 添加适当的错误处理和日志记录
- 使用新工具更新此README
测试
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
故障排除
“未配置凭据”错误
- 确保
AMADEUS_CLIENT_ID和AMADEUS_CLIENT_SECRET已设定 - 检查环境变量是否已导出到当前shell中
- 在Amadeus开发人员仪表板中验证凭据是否正确
“令牌请求失败”错误
- 检查您的互联网连接
- 验证凭据是否有效
- 确保您没有达到速率限制
“API请求失败(401)”错误
- 您的访问令牌可能已过期(应自动刷新)
- 检查凭据是否仍然有效
- 尝试在Amadeus仪表板中重新生成凭据
“未找到结果”错误
- 验证IATA代码是否正确(必须大写)
- 检查日期格式是否正确(YYYY-MM-DD)
- 确保日期在未来
- 尝试扩展搜索参数(删除筛选器)
速率限制错误
- 在请求之间等待几秒钟
- 减少
max_results参数 - 考虑升级到具有更高限制的API生产
资源
- Amadeus开发者版: https://developers.amadeus.com
- API文件: https://developers.amadeus.com/self-service
- API参考: https://developers.amadeus.com/self-service/apis-docs
- 支持论坛: https://developers.amadeus.com/support
- 不和谐社区: https://discord.gg/cVrFBqx
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 提交拉取请求
鸣谢
内置:
更新日志
版本0.2.0(简化和聚焦)
- 简化为26个MCP工具 -删除了6个低价值工具
- 禁用预订工具 (预订航班、预订酒店、预订转账、获取航班订单、取消航班订单)
- 测试环境限制
- 用户更喜欢直接在提供商网站上预订
- 已删除predict_trip_purpose -用户已经知道他们的旅行目的
- 增强工具:
- 使用20+机场位置数据库传输API
- 自动消毒的航班价格确认
- 具有更好错误处理能力的酒店评级
- 集中: 搜索和发现(非预订)
版本0.1.0(初始版本)
- 32个MCP工具,涵盖全部Amadeus API
- 自动OAuth2身份验证
- 航班搜索、预订和分析
- 酒店搜索和预订
- 旅游和活动
- 机场接送
- 参考数据工具
- 市场洞察和预测