使用 Duffel API 搜索和检索航班信息的 MCP 服务器。
https://github.com/user-attachments/assets/c111aa4c-9559-4d74-a2f6-60e322c273d4
虽然像 Google Flights 这样的工具对于简单的旅行非常有效,但在处理复杂的旅行计划时,这个工具表现得尤为出色。以下是原因:
可以把它想象成你聊天中的旅行代理,它会记住你讨论的所有内容,并可以立即搜索跨日期和路线的航班。
Duffel 需要账户验证和支付信息设置,但此 MCP 服务器仅使用 API 进行航班搜索 - 不会对你的账户进行实际预订或收费。
首先尝试使用 duffel_test
来体验此工具的强大功能。如果你喜欢它,可以通过以下验证过程使用实时密钥。
你可以从测试 API 密钥 (duffel_test
) 开始,使用模拟数据尝试功能,然后再进行完整的验证过程:
要访问真实的航班数据,请按照以下步骤操作:
💡 提示:每次完成验证步骤后,你需要再次关闭测试模式以进入下一步。继续关闭,直到你完成所有要求。
⚠️ 重要注意事项:
duffel_test
) 开始评估功能此 MCP 服务器仅使用 Duffel 的搜索端点,无法进行预订或收费。你的支付信息仅用于 Duffel 的验证过程,MCP 服务器不会访问或共享。
要通过 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 服务器,请修改你的 Claude 桌面配置文件。
配置文件位置:
~/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 实时 API 密钥准备包:
# 同步依赖并更新锁定文件
uv sync
# 构建包
uv build

这将在 dist/
目录中创建分发文件。
为了获得最佳的调试体验,请使用 MCP 检查器:
npx @modelcontextprotocol/inspector uv --directory /path/to/find-flights-mcp run find-flights-mcp
检查器提供:
@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
: 最大中转次数@mcp.tool()
async def get_offer_details(params: OfferDetails) -> str:
"""获取特定航班报价的详细信息。"""

使用其唯一 ID 检索特定航班报价的详细信息。
@mcp.tool(name="search_multi_city")
async def search_multi_city(params: MultiCityRequest) -> str:
"""搜索多城市航班。"""

专门用于复杂多城市航班行程的工具。
参数包括:
segments
: 航班段列表adults
: 成人乘客数量cabin_class
: 首选舱位等级max_connections
: 最大中转次数你可以使用这些工具查找各种复杂度的航班:
工具返回 JSON 格式的响应,包括:
服务包括对以下情况的稳健错误处理:
[添加贡献指南,如果适用]
此项目根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。
可用的舱位等级:
economy
: 标准经济舱premium_economy
: 高级经济舱business
: 商务舱first
: 头等舱带舱位等级的示例请求:
{
"params": {
"type": "one_way",
"adults": 1,
"origin": "SFO",
"destination": "LAX",
"departure_date": "2025-01-12",
"cabin_class": "business" // 指定所需的舱位等级
}
}
