航班查找器MCP服务器
一个强大的模型上下文协议(MCP)服务器,允许人工智能助手跨多个来源搜索航班,分析定价模式,并提供智能预订建议。
✨ 特性
- 多源航班搜索:从Skyscanner和谷歌航班搜索航班
- API官方集成:使用官方API(如果可用),退回到抓取
- 高级Web抓取:多种提取策略来查找真实的飞行数据
- 智能日期分析:跨多个日期搜索以找到最优惠的价格
- 智能洞察:基于人工智能的航班细节和定价模式分析
- 预订链接:在相应平台上预订航班的直接链接
- 价格建议:数据驱动的最佳预订时间建议
🚀 LLM添加了什么
AI助手通过以下方式提供了巨大的价值:
- 多日期优化:自动搜索多个日期以找到最佳价格
- 智能分析:分解航班细节并提供可操作的见解
- 智能推荐:根据价格趋势提出最佳预订策略
- 比较分析:比较不同来源和日期的价格
- 用户友好的输出:以易于理解的格式呈现复杂的飞行数据
🛠️ 技术栈
- 运行时:使用TypeScript的Node.js
- 协议:模型上下文协议(MCP)
- 测试:支持TypeScript的Jest
- 依赖项:MCP SDK、Axios、Cheerio、Puppeteer(用于未来的网络抓取)
📦 安装
- 克隆存储库:
git clone
cd flight-finder-mcp- 安装依赖项:
npm install- 配置API密钥(可选但推荐):
cp config.example.env .env
# Edit .env and add your API keys- 构建项目:
npm run build🔑 API配置
为了获得最佳体验,我们建议为官方访问设置API密钥:
Skyscanner API
- 申请Skyscanner合作伙伴API:https://www.partners.skyscanner.net/product/travel-api
- 将API密钥添加到环境变量中:
SKYSCANNER_API_KEY=your_api_key_here谷歌航班替代方案(SearchAPI)
- 在以下网址注册SearchAPI:https://www.searchapi.io/
- 将API密钥添加到环境变量中:
SEARCHAPI_KEY=your_api_key_here备注:如果没有API密钥,服务器将恢复到web抓取,这可能会更慢、更不可靠。
🔍 Web抓取功能
该服务器包括具有多种提取策略的高级网络抓取功能:
多策略方法
- 主要选择器:查找标准航班卡元素
- 价格模式匹配:在页面内容中搜索价格模式
- 高级DOM遍历:扫描飞行相关元素
- 页面源代码分析:从HTML源代码和JSON中提取数据
- 回退模拟数据:在抓取失败时提供逼真的模拟数据
防检测功能
- 用户代理轮换:使用真实的浏览器用户代理
- 速率限制:实现请求之间的延迟
- 动态内容处理:等待JavaScript渲染的内容
- 装载指示器检测:等待页面加载完成
真实数据提取
抓取系统旨在从网站上提取实际的航班价格和信息,而不仅仅是模拟数据。它使用多种回退策略来确保找到真实航班信息的最佳机会。
🧪 测试
运行测试套件:
npm test在监视模式下运行测试:
npm run test:watch🚀 用法
启动MCP服务器
npm start或用于开发:
npm run dev可用的MCP工具
1. search_flights
搜索特定来源的航班。
参数:
source:航班搜索源(skyscanner或google_flights)origin:始发机场代码(例如。,LAX,JFK)destination:目的地机场代码(例如。,SFO,LHR)departureDate:出发日期YYYY-MM-DD格式returnDate:返回日期(单程航班可选)passengers:乘客配置
- adults:成年乘客人数(必填) - children:儿童乘客人数(可选) - infants:婴儿乘客人数(可选)
cabinClass:客舱等级偏好(可选)
示例:
{
"source": "skyscanner",
"origin": "LAX",
"destination": "JFK",
"departureDate": "2024-12-01",
"returnDate": "2024-12-08",
"passengers": {
"adults": 2,
"children": 1
},
"cabinClass": "economy"
}2. search_multiple_dates
搜索多个日期的航班,以找到最优惠的价格。
参数:
origin:始发机场代码destination:目的地机场代码dates:要搜索的日期数组passengers:乘客配置sources:要搜索的源数组(默认值:两者都有)
示例:
{
"origin": "LAX",
"destination": "JFK",
"dates": ["2024-12-01", "2024-12-02", "2024-12-03"],
"passengers": {
"adults": 1
},
"sources": ["skyscanner", "google_flights"]
}3. analyze_flight_details
分析航班细节并提供见解。
参数:
itinerary:要分析的航班行程对象
4. get_best_price_recommendation
通过分析获得多个日期的最佳价格建议。
参数:
origin:始发机场代码destination:目的地机场代码dates:要搜索的日期数组passengers:乘客配置
5. find_best_monthly_flights
查找特定月份的最佳航班,分析所有日期的价格,以确定最佳旅行日期。
参数:
origin:始发机场代码(例如。,LAX,JFK)destination:目的地机场代码(例如。,SFO,LHR)month:搜索月份YYYY-MM格式(例如。,2024-11)passengers:乘客配置cabinClass:客舱等级偏好(economy,premium_economy,business,first)sources:要搜索的源数组(默认值:两者都有)includeWeekendAnalysis:是否包括周末与工作日分析(默认值:true)
示例:
{
"origin": "LAX",
"destination": "JFK",
"month": "2024-11",
"passengers": {
"adults": 2
},
"cabinClass": "business",
"sources": ["skyscanner", "google_flights"],
"includeWeekendAnalysis": true
}这个工具提供了什么:
- 月度价格分析:搜索指定月份中的每个日期
- 客舱等级优化:为特定舱位(经济舱、商务舱、头等舱)找到最佳价格
- 周末与工作日分析:确定价格模式和最佳旅行天数
- 来源比较:比较不同航班搜索引擎的价格
- 智能推荐:人工智能提供了何时预订和避免哪些日期的见解
- 前5笔交易:本月最佳航班选择排行榜
📚 例子
运行示例
该项目包括演示飞行探测器功能的综合示例:
# Basic usage demo - shows core flight search functionality
npm run example
# Monthly flight search demo - demonstrates month-long analysis and cabin class optimization
npm run monthly-demo输出示例
每月的搜索演示提供了这样的全面分析:
📅 Monthly Flight Analysis for 2024-11
📍 Route: LAX → JFK
✈️ Cabin Class: Business
🔍 Sources: skyscanner, google_flights
📊 Price Analysis:
• Cheapest Date: 2024-11-05 at $605 on google_flights
• Most Expensive Date: 2024-10-31 at $1026 on skyscanner
• Average Price: $831
• Price Range: $421
📅 Weekend vs Weekday Analysis:
• Average Weekend Price: $916
• Average Weekday Price: $794
• Weekend Premium: 15%
💡 Smart Recommendations:
• 🚀 Amazing deal found! 2024-11-05 is 27% below average price on google_flights.
• 💡 google_flights tends to have better prices for this route (12% below average).🔧 配置
服务器通过以下文件进行配置:
tsconfig.json:TypeScript编译设置jest.config.ts:Jest测试配置package.json:项目依赖关系和脚本
📁 项目结构
flight-finder-mcp/
├── src/
│ ├── types/
│ │ └── flight.ts # TypeScript type definitions
│ ├── services/
│ │ ├── skyscanner.ts # Skyscanner flight search service
│ │ ├── google-flights.ts # Google Flights search service
│ │ └── flight-analyzer.ts # Flight analysis and insights service
│ └── index.ts # Main MCP server implementation
├── test/ # Unit tests
├── examples/ # Usage examples
│ ├── basic-usage.ts # Basic flight search demo
│ └── monthly-search-demo.ts # Monthly analysis demo
├── build/ # Compiled JavaScript output
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── jest.config.ts # Jest testing configuration
├── LICENSE # MIT License
└── README.md # This file🔮 未来的增强功能
- 真正的API集成:用实际的Skyscanner和Google Flights API替换模拟数据
- Web剪贴:对实时航班数据实施适当的网络抓取
- 其他来源:支持更多航班搜索引擎
- 价格提醒:设置价格监控和通知
- 历史数据:跟踪价格随时间的变化趋势
- 路线优化:建议有中途停留的最佳路线
⚠️ 重要提示
当前实施情况:这是一个使用模拟数据的概念验证实现。在生产中,您需要:
- 在可用的情况下使用官方API
- 通过速率限制实现适当的网络抓取
- 尊重robots.txt和服务条款
- 处理API费率限制和配额
- 实施正确的错误处理和重试逻辑
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🤝 贡献
欢迎投稿!请随时提交拉取请求。
📞 支持
如有疑问或需要支持,请在存储库中打开问题。
______________________________________________________________________
内置于❤️ 对于MCP社区
