README
🚀 ✈️ 航班MCP服务器
这是一个模型上下文协议(MCP)服务器,借助Aviasales航班搜索API提供航班搜索功能。通过该服务器,你可以搜索航班、筛选结果、获取详细的航班信息并生成预订链接。
🚀 快速开始
你可以选择使用远程MCP服务器,也可以部署自己的实例:
-
远程MCP
有一个公共实例可通过以下地址访问:
https://findflights.me/sse
此服务器使用SSE传输协议,无需设置即可直接使用。⚠️ 重要提示:目前并非所有的大语言模型(LLM)客户端都支持远程MCP连接。例如,Claude.ai仅在Pro+计划中支持远程MCP集成。
-
自行部署
如果你希望运行自己的服务器,请遵循安装指南部分的说明进行操作。⚠️ 重要提示:要部署自己的服务器,你必须获取Aviasales API密钥和标记ID。
✨ 主要特性
- 航班搜索:支持单程、往返和多城市航班搜索。
- 高级筛选:可根据价格、时长、航空公司、出发/到达时间和经停次数等条件筛选结果。
- 多种排序选项:支持按价格、出发时间、到达时间或时长进行排序。
- 详细航班信息:提供全面的航班详情,包括行李额度和航空公司信息。
- 预订链接:为选定的航班生成预订链接。
- 本地存储:已执行的搜索会存储在本地,以便大语言模型(LLM)无需等待即可访问过往搜索记录。
- 多种MCP传输选项:支持标准输入输出(stdio)、HTTP和SSE传输协议。
📦 安装指南
前提条件
- Aviasales API密钥
- Python 3.12 或更高版本
- UV包管理器
安装步骤
- 克隆仓库:
git clone <repository-url>
cd flights-mcp
- 设置环境变量(请参阅环境变量部分)
- 运行服务器
uv run src/flights-mcp/main.py
服务器将绑定到 0.0.0.0,可通过主机的所有网络接口进行访问。
🔧 环境变量
以下是所需的环境变量:
| 属性 | 详情 |
|------|------|
| FLIGHTS_AVIASALES_API_TOKEN | 你的Aviasales API令牌(必需) |
| FLIGHTS_AVIASALES_MARKER | 你的Aviasales标记ID(必需) |
| FLIGHTS_TRANSPORT | 要使用的传输协议(可选),选项包括:stdio(默认)、streamable_http、sse |
| FLIGHTS_HTTP_PORT | HTTP/SSE传输的端口(可选),仅在FLIGHTS_TRANSPORT为streamable_http或sse时使用,默认值为4200 |
| FLIGHTS_HTTP_PATH | 端点的URI路径(可选),仅在FLIGHTS_TRANSPORT为streamable_http或sse时使用,默认值为/mcp |
📚 详细文档
MCP工具
服务器提供以下MCP工具:
| 工具 | 描述 |
|------|------|
| search_flights | 使用Aviasales航班搜索API搜索航班,返回包含search_id的搜索描述和找到的选项摘要。 |
| get_flight_options | 从先前的搜索中检索、筛选和排序航班选项,返回分页的筛选后航班选项列表。 |
| get_flight_option_details | 返回详细的航班信息,包括航段、价格、行李额度和代理条款。 |
| request_booking_link | 为特定的航班选项生成预订链接。 |
典型使用模式
- 搜索航班:使用
search_flights()方法,可多次调用以搜索灵活日期的航班。 - 筛选和浏览选项:使用
get_flight_options()方法,这是一个轻量级工具,可多次调用并使用不同的筛选和排序选项。 - 获取详细信息:使用
get_flight_option_details()方法,获取用户首选选项的详细信息。 - 生成预订链接:仅当用户确认预订意向时,使用
request_booking_link()方法生成预订链接。
📄 支持与反馈
- MCP服务器问题:请在此仓库中提交问题。
- MCP协议问题:请参阅模型上下文协议文档。
Scan to join WeChat group