航班搜索MCP

启用使用 Duffel API 搜索和检索详细航班信息的功能,支持各种航班类型和灵活的搜索参数,以便高效地规划旅行。

travel-and-transportation

1.3k 查看 · 2026-07-07 更新

简介

启用使用 Duffel API 搜索和检索详细航班信息的功能,支持各种航班类型和灵活的搜索参数,以便高效地规划旅行。

简介

启用使用 Duffel API 搜索和检索详细航班信息的功能,支持各种航班类型和灵活的搜索参数,以便高效地规划旅行。

查找航班 MCP 服务器 Option #1

smithery 徽章 使用 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) 尝试模拟数据的功能,然后再进行完整的验证过程:

  1. 访问 Duffel 的注册页面
  2. 创建一个账户(您可以选择“个人使用”作为公司名称)
  3. 导航到 More > Developer 找到您的测试 API 密钥(已经提供了一个)

获取实时 API 密钥

要访问真实的航班数据,请按照以下步骤操作:

  1. 在 Duffel 仪表板中,关闭左上角的“测试模式”
  2. 验证过程需要多个步骤 - 您需要反复关闭测试模式:
    • 第一次关闭:验证您的电子邮件地址
    • 再次关闭:完成公司信息(个人使用也可以)
    • 再次关闭:添加付款信息(Duffel 要求提供此信息,但此 MCP 服务器不会产生任何费用)
    • 再次关闭:完成所有剩余的验证步骤
    • 最后一次关闭:点击“同意并提交”后进入实时模式
  3. 完成全部验证后,前往 更多 > 开发者 > 创建实时令牌
  4. 复制您的实时 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 } }

来源