航班搜索服务

一个通过Duffel API搜索和检索航班信息的MCP服务器,支持单程、往返和多城市航班查询,适用于复杂旅行计划。

  • by ravinahp
  • Python
  • 本地部署
  • 231 星标
  • 更新于
在 GitHub 查看 ravinahp/flights-mcp

使用说明

查找航班MCP服务器

MCP服务器,用于使用Duffel API搜索和检索航班信息。

原理

视频演示

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. 在行李处理仪表板中,关闭左上角的“测试模式”
  2. 验证过程需要多个步骤-您需要反复关闭测试模式:
    • 第一个切换:验证您的电子邮件地址
    • 再次切换:完整的公司信息(个人使用即可)
    • 再次切换:添加付款信息(Duffel要求,但此MCP服务器不收取任何费用)
    • 再次切换:完成所有剩余的验证步骤
    • 最终切换:点击“同意并提交”后进入直播模式
  3. 完全验证后,转到更多>开发人员>创建Live Token
  4. 复制您的实时API密钥

💡 提示:每次完成验证步骤时,都需要再次关闭测试模式才能继续下一步。继续切换,直到完成所有要求。

⚠️ 重要注意事项:

  • 您的付款信息由Duffel直接处理,MCP服务器不会访问或存储
  • 此MCP服务器是只读的-它只能搜索航班,不能预订航班
  • 通过此集成,您的付款方式不会产生任何费用
  • 所有敏感信息(包括API密钥)都保留在机器本地
  • 您可以从测试API密钥开始(duffel_test)评估功能
  • 验证过程可能需要一些时间,这是Duffel的标准要求

安全说明

此MCP服务器仅使用Duffel的搜索端点,不能进行预订或收费。您的付款信息仅用于Duffel的验证过程,MCP服务器永远不会访问或与MCP服务器共享。

API使用限制说明

  • 查看Duffel当前的定价和使用限制
  • 根据您的要求提供不同的层次
  • 建议查看其网站上的当前定价

安装

通过Smithery安装

通过以下方式自动安装克劳德桌面查找航班 史密瑟里:

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
  • 窗户: %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 Live API密钥
  • 确保目录路径与本地安装匹配

部署

建筑

准备包裹:

# Sync dependencies and update lockfile
uv sync

# Build package
uv build

这将在 dist/ 目录。

调试

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

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

检查员提供:

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

可用工具

1.搜索航班

@mcp.tool()
async def search_flights(params: FlightSearch) -> str:
    """Search for flights based on parameters."""

支持三种飞行类型:

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

参数包括:

  • type:航班类型(“单程”、“往返”、“多城市”)
  • 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:最大连接数

用例

举个例子(但你自己试试吧!)

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

  • “查找1月7日从旧金山到纽约市的单程航班,可容纳2名商务舱成人”
  • “搜索从洛杉矶国际机场到伦敦的往返航班,1月8日出发,1月15日返回”
  • “计划1月7日从纽约到巴黎的多城市旅行,1月10日到罗马,1月15日返回纽约”
  • “从1月7日到1月15日,2名经济舱成人从旧金山到洛杉矶最便宜的航班是什么?”
  • 您甚至可以搜索几天内的航班,以找到适合您旅行的最佳航班。目前,建议仅以这种方式搜索单程或往返航班。示例:“查找1月7日至1月10日从旧金山到洛杉矶的经济舱2名成人最便宜的航班”

响应格式

这些工具返回JSON格式的响应,其中包含:

  • 航班优惠详情
  • 定价信息
  • 切片(路线)详细信息
  • 承运商信息
  • 连接详细信息

错误处理

该服务包括强大的错误处理功能,用于:

  • API请求失败
  • 机场代码无效
  • 缺少API密钥或密钥无效
  • 网络超时
  • 搜索参数无效

贡献

[如适用,添加捐款指南]

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

业绩说明

  • 搜索仅限于单程/往返航班的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
  }
}