使用Duffel API搜索和检索航班信息的MCP服务器。
https://github.com/user-attachments/assets/c111aa4c-9559-4d74-a2f6-60e322c273d4
虽然像Google航班这样的工具对于简单的旅行非常有效,但这个工具在处理复杂的旅行计划时特别出色。原因如下:
想象一下,有一个旅行代理在你的聊天中,记得你讨论过的所有内容,并能立即搜索日期和路线。
Duffel需要账户验证和支付信息设置,但此MCP服务器仅使用API进行航班搜索——不会对您的账户进行实际预订或收费。
建议先尝试使用duffel_test来体验该工具的强大功能。如果您喜欢它,可以按照以下步骤进行验证过程以使用实时密钥。
您可以从一个测试API密钥(duffel_test)开始,在进入完整的验证过程之前,使用模拟数据试用功能:
要访问真实的航班数据,请遵循以下步骤:
💡 提示:每次完成一个验证步骤后,您都需要再次切换测试模式以继续下一步。持续切换直到完成所有要求。
⚠️ 重要提示:
duffel_test)开始评估功能此MCP服务器仅使用Duffel的搜索端点,无法进行预订或收费。您的支付信息仅用于Duffel的验证过程,且从未被MCP服务器访问或共享。
要通过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服务器添加,请修改您的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 Inspector:
npx @modelcontextprotocol/inspector uv --directory /path/to/find-flights-mcp run flights-mcp
Inspector提供:
@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" // 指定所需的舱位等级
}
}