首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
flights-mcp2025-05-300分享
github
启用使用 Duffel API 搜索和检索详细航班信息的功能,支持各种航班类型和灵活的搜索参数,以便高效地规划旅行。
By ravinahp
2025-05-300
github
详情内容

查找航班 MCP 服务器 选项 #1

smithery 徽章
使用 Duffel API 搜索和检索航班信息的 MCP 服务器。

工作原理

航班

视频演示

https://github.com/user-attachments/assets/c111aa4c-9559-4d74-a2f6-60e322c273d4

为什么这有用

虽然像 Google Flights 这样的工具对于简单的旅行非常有效,但在处理复杂的旅行计划时,这个工具表现得尤为出色。以下是原因:

  • 上下文记忆:Claude 会记住你在聊天中之前的所有航班搜索,因此你不需要打开多个标签页来比较价格
  • 灵活日期搜索:轻松搜索多天以找到最佳价格,而无需手动检查每个日期
  • 复杂行程:非常适合多城市旅行、一次中转航班,或者当你需要比较不同的路线选项时,只需询问即可
  • 自然对话:只需描述你正在寻找的内容 - 不再需要点击日历界面或手动调整搜索参数,如解析城市名称、日期和时间

可以把它想象成你聊天中的旅行代理,它会记住你讨论的所有内容,并可以立即搜索跨日期和路线的航班。

功能

  • 在多个目的地之间搜索航班
  • 支持单程、往返和多城市航班查询
  • 详细的航班报价信息
  • 灵活的搜索参数(出发时间、舱位等级、乘客数量)
  • 自动处理航班中转
  • 在多个天内搜索航班以找到最适合你旅行的航班(较慢)

先决条件

  • Python 3.x
  • Duffel API 实时密钥

获取你的 Duffel API 密钥

Duffel 需要账户验证和支付信息设置,但此 MCP 服务器仅使用 API 进行航班搜索 - 不会对你的账户进行实际预订或收费。

首先尝试使用 duffel_test 来体验此工具的强大功能。如果你喜欢它,可以通过以下验证过程使用实时密钥。

首先使用测试模式(推荐)

你可以从测试 API 密钥 (duffel_test) 开始,使用模拟数据尝试功能,然后再进行完整的验证过程:

  1. 访问 Duffel 注册页面
  2. 创建一个账户(你可以选择“个人使用”作为公司名称)
  3. 导航到 更多 > 开发者 以找到你的测试 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 桌面安装 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 密钥
  • 确保目录路径与你的本地安装匹配

部署

构建

准备包:

# 同步依赖并更新锁定文件
uv sync

# 构建包
uv build

这将在 dist/ 目录中创建分发文件。

调试

为了获得最佳的调试体验,请使用 MCP 检查器:

npx @modelcontextprotocol/inspector uv --directory /path/to/find-flights-mcp run find-flights-mcp

检查器提供:

  • 实时请求/响应监控
  • 输入/输出验证
  • 错误跟踪
  • 性能指标

可用工具

1. 搜索航班

@mcp.tool()
async def search_flights(params: FlightSearch) -> str:
    """根据参数搜索航班。"""

支持三种航班类型:

  • 单程航班
  • 往返航班
  • 多城市航班

参数包括:

  • 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:
    """获取特定航班报价的详细信息。"""

使用其唯一 ID 检索特定航班报价的详细信息。

3. 搜索多城市航班

@mcp.tool(name="search_multi_city")
async def search_multi_city(params: MultiCityRequest) -> str:
    """搜索多城市航班。"""

专门用于复杂多城市航班行程的工具。

参数包括:

  • segments: 航班段列表
  • adults: 成人乘客数量
  • cabin_class: 首选舱位等级
  • max_connections: 最大中转次数

使用案例

一些示例(但请自己尝试!)

你可以使用这些工具查找各种复杂度的航班:

  • “查找 1 月 7 日从 SFO 到 NYC 的单程航班,2 名成人,商务舱”
  • “搜索从 LAX 到伦敦的往返航班,1 月 8 日出发,1 月 15 日返回”
  • “计划从纽约到巴黎的多城市旅行,1 月 7 日出发,1 月 10 日到罗马,1 月 15 日返回纽约”
  • “1 月 7 日至 1 月 15 日从 SFO 到 LAX 的最便宜航班,2 名成人,经济舱?”
  • 你甚至可以搜索多天内的航班以找到最适合你旅行的航班。目前,建议仅以这种方式搜索单程或往返航班。例如:“查找 1 月 7 日至 1 月 10 日从 SFO 到 LAX 的最便宜航班,2 名成人,经济舱”

响应格式

工具返回 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"  // 指定所需的舱位等级
  }
}
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档