启用使用 Duffel API 搜索和检索详细航班信息的功能,支持各种航班类型和灵活的搜索参数,以便高效地规划旅行。
1.3k 查看 · 2026-07-07 更新
简介
启用使用 Duffel API 搜索和检索详细航班信息的功能,支持各种航班类型和灵活的搜索参数,以便高效地规划旅行。
简介
启用使用 Duffel API 搜索和检索详细航班信息的功能,支持各种航班类型和灵活的搜索参数,以便高效地规划旅行。
查找航班 MCP 服务器 
使用 Duffel API 搜索和检索航班信息的 MCP 服务器。
工作原理
视频演示
https://github.com/user-attachments/assets/c111aa4c-9559-4d74-a2f6-60e322c273d4
为什么这很有帮助
虽然像 Google 航班这样的工具对于简单的旅行非常有用,但这个工具在处理复杂的旅行计划时表现出色。原因如下:
- 上下文记忆:Claude 记住了聊天中所有以前的航班搜索,因此您不需要打开多个标签页来比较价格。
- 灵活的日期搜索:轻松搜索多天以找到最佳价格,而无需手动检查每个日期。
- 复杂的行程:非常适合多城市旅行、单程航班或需要比较不同路线选项的情况,您可以直接询问!
- 自然对话:只需描述您想要什么 - 不再需要点击日历界面或处理搜索参数,包括解析城市名称、日期和时间。
可以将其想象为在您的聊天中有一个旅行代理,他记得您讨论的所有内容,并且可以立即搜索日期和路线。
功能
- 在多个目的地之间搜索航班
- 支持单程、往返和多城市航班查询
- 详细的航班报价信息
- 灵活的搜索参数(出发时间、舱位等级、乘客人数)
- 自动处理航班转机
- 在多天内搜索航班以找到最适合您旅行的航班(较慢)
先决条件
- Python 3.x
- Duffel API 实时密钥
获取您的 Duffel API 密钥
Duffel 需要账户验证和支付信息设置,但此 MCP 服务器仅使用 API 进行航班搜索 - 不会对您的账户进行实际预订或收费。
建议先使用 duffel_test 来体验此工具的强大功能。如果您最终喜欢它,可以通过以下验证过程使用实时密钥。
先试用测试模式(推荐)
您可以先使用测试 API 密钥 (duffel_test) 尝试模拟数据的功能,然后再进行完整的验证过程:
- 访问 Duffel 的注册页面
- 创建一个账户(您可以选择“个人使用”作为公司名称)
- 导航到 More > Developer 找到您的测试 API 密钥(已经提供了一个)
获取实时 API 密钥
要访问真实的航班数据,请按照以下步骤操作:
- 在 Duffel 仪表板中,关闭左上角的“测试模式”
- 验证过程需要多个步骤 - 您需要反复关闭测试模式:
- 第一次关闭:验证您的电子邮件地址
- 再次关闭:完成公司信息(个人使用也可以)
- 再次关闭:添加付款信息(Duffel 要求提供此信息,但此 MCP 服务器不会产生任何费用)
- 再次关闭:完成所有剩余的验证步骤
- 最后一次关闭:点击“同意并提交”后进入实时模式
- 完成全部验证后,前往 更多 > 开发者 > 创建实时令牌
- 复制您的实时 API 密钥
💡 提示:每次完成一个验证步骤后,您都需要再次关闭测试模式以继续下一步。不断切换直到完成所有要求。
⚠️ 重要提示:
- 您的支付信息由 Duffel 直接处理,MCP 服务器无法访问或存储这些信息
- 此 MCP 服务器仅支持只读操作 - 它只能搜索航班,不能预订
- 通过此集成,您的支付方式不会产生任何费用
- 所有敏感信息(包括 API 密钥)都保留在本地机器上
- 您可以先使用测试 API 密钥 (
duffel_test) 来评估功能 - 验证过程可能需要一些时间 - 这是 Duffel 的标准要求
安全说明
此 MCP 服务器仅使用 Duffel 的搜索端点,不能进行预订或收费。您的支付信息仅供 Duffel 的验证过程使用,MCP 服务器永远不会访问或共享这些信息。
关于 API 使用限制的说明
- 查看 Duffel 当前的价格和使用限制
- 根据您的需求有不同的套餐可供选择
- 建议在他们的网站上查看当前价格
安装
通过 Smithery 安装
要通过 Smithery 自动安装适用于 Claude Desktop 的 Find Flights:
npx -y @smithery/cli install @ravinahp/travel-mcp --client claude
手动安装
克隆仓库:
git clone https://github.com/ravinahp/flights-mcp cd flights-mcp
使用 uv 安装依赖项:
uv sync
注意:我们使用 uv 而不是 pip,因为项目使用 pyproject.toml 进行依赖管理。
配置为 MCP 服务器
要将此工具添加为 MCP 服务器,请修改您的 Claude 桌面配置文件。
配置文件位置:
- MacOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
向您的 JSON 文件中添加以下配置:
{ "flights-mcp": { "command": "uv", "args": [ "--directory", "/Users/YOUR_USERNAME/Code/flights-mcp", "run", "flights-mcp" ], "env": { "DUFFEL_API_KEY_LIVE": "your_duffel_live_api_key_here" } } }
⚠️ 重要:
- 将
YOUR_USERNAME替换为您的实际系统用户名 - 将
your_duffel_live_api_key_here替换为您的实际 Duffel 实时 API 密钥 - 确保目录路径与您的本地安装匹配
部署
构建
准备包:
# Sync dependencies and update lockfile uv sync # Build package uv build
这将在 dist/ 目录中创建分发包。
调试
为了获得最佳调试体验,请使用 MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory /path/to/find-flights-mcp run find-flights-mcp
Inspector 提供:
- 实时请求/响应监控
- 输入/输出验证
- 错误跟踪
- 性能指标
可用工具
1. 搜索航班
@mcp.tool() async def search_flights(params: FlightSearch) -> str: """Search for flights based on parameters."""
支持三种航班类型:
- 单程航班
- 往返航班
- 多城市航班
参数包括:
type: 航班类型 ('one_way', 'round_trip', 'multi_city')origin: 出发机场代码destination: 目的地机场代码departure_date: 出发日期 (YYYY-MM-DD)- 可选参数:
return_date: 往返航班的返回日期adults: 成年乘客数量cabin_class: 偏好的舱位等级departure_time: 特定出发时间范围arrival_time: 特定到达时间范围max_connections: 最大转机次数
2. 获取报价详情
@mcp.tool() async def get_offer_details(params: OfferDetails) -> str: """Get detailed information about a specific flight offer."""
使用其唯一ID检索特定航班报价的详细信息。
3. 搜索多城市航班
@mcp.tool(name="search_multi_city") async def search_multi_city(params: MultiCityRequest) -> str: """Search for multi-city flights."""
专门用于复杂的多城市航班行程。
参数包括:
segments: 航班段列表adults: 成年乘客数量cabin_class: 偏好的舱位等级max_connections: 最大转机次数
使用案例
一些示例(但请自己尝试!)
您可以使用这些工具查找各种复杂程度的航班:
- "为两名成人寻找从SFO到NYC的一程商务舱航班,出发日期为1月7日"
- "搜索从LAX到伦敦的往返航班,出发日期为1月8日,返回日期为1月15日"
- "计划一次多城市旅行,从纽约出发于1月7日前往巴黎,然后1月10日前往罗马,并于1月15日返回纽约"
- "查询从SFO到LAX的最便宜航班,时间为1月7日至1月15日,两名成人在经济舱"
- 您甚至可以在多个日期内搜索航班以找到最适合您旅行的航班。目前建议仅以此方式搜索单程或往返航班。例如:"在1月7日至1月10日期间,为两名成人寻找从SFO到LAX的最便宜经济舱航班"
响应格式
工具返回JSON格式的响应,包含:
- 航班报价详情
- 价格信息
- 航线详情
- 航空公司信息
- 转机详情
错误处理
服务包括以下错误处理机制:
- API请求失败
- 无效的机场代码
- 缺失或无效的API密钥
- 网络超时
- 无效的搜索参数
贡献指南
[如有需要,请添加贡献指南]
许可证
本项目根据MIT许可证发布 - 查看 LICENSE 文件获取详情。
性能说明
- 单程/往返航班搜索限制为50个报价
- 多城市航班搜索限制为10个报价
- 供应商超时设置为15-30秒,具体取决于搜索类型
舱位等级
可用的舱位等级:
economy: 标准经济舱premium_economy: 高级经济舱business: 商务舱first: 头等舱
带舱位等级的请求示例:
{ "params": { "type": "one_way", "adults": 1, "origin": "SFO", "destination": "LAX", "departure_date": "2025-01-12", "cabin_class": "business" // Specify desired cabin class } }
来源
- 来源:github
- 链接:https://github.com/ravinahp/flights-mcp