返回市场
飞行-mcp

飞行-mcp

作者:ravinahp143 星标更新:2025-06-12

项目介绍

查找航班的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)开始,在进入完整的验证过程之前,使用模拟数据试用功能:

  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自动安装Find Flights for Claude Desktop:

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 Inspector:

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

Inspector提供:

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

可用工具

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: 最大转机次数

使用案例

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

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

  • "查找2025年1月7日从SFO到NYC的单程航班,2个成人,商务舱"
  • "搜索从LAX到伦敦的往返航班,出发日期为2025年1月8日,返回日期为2025年1月15日"
  • "规划从纽约到巴黎的多城市行程,2025年1月7日出发,然后2025年1月10日前往罗马,最后2025年1月15日返回纽约"
  • "从2025年1月7日至2025年1月15日,2个成人经济舱从SFO到LAX的最便宜航班是什么?"
  • 您甚至可以在多天内搜索航班以找到最适合您行程的航班。目前建议仅以这种方式搜索单程或往返航班。例如:"查找2025年1月7日至2025年1月10日,2个成人经济舱从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"  // 指定所需的舱位等级
  }
}