Skyscanner MCP服务器
MCP(模型上下文协议)服务器,将Skyscanner航班和机场搜索功能暴露给Claude Desktop和Cursor等人工智能助手。
⚠️ 免责声明
该项目是实验性的,仅用于教育目的。
- 本软件按“原样”提供,不作任何保证
- 不用于商业用途 -请勿在任何商业或生产环境中使用此软件
- 此处使用的Skyscanner API客户端库为反向引擎,可能违反Skyscanner的服务条款
- 使用风险自负-作者不对使用此软件的任何后果负责
- 本项目旨在学习和实验MCP服务器和API集成
特性
- ✈️ 航班搜索 -使用灵活的日期选项搜索机场之间的航班
- 🛫 机场搜索 -按名称、城市或IATA代码查找机场
安装
先决条件
- Python 3.8或更高版本
- Git(用于子模块支持)
步骤1:克隆存储库
# Clone with submodules (recommended)
git clone --recursive https://github.com/shadyvb/mcp-skyscanner.git
cd mcp-skyscanner如果你已经克隆了,没有子模块:
git submodule update --init --recursive步骤2:安装依赖项
pip install -r requirements.txt安装内容:
fastmcp-MCP服务器框架curl_cffi,typeguard,orjson-Skyscanner API依赖项skyscanner-api-作为git子模块包含(由自动加载mcp_server.py)
这 mcp_server.py 自动添加 vendor/skyscanner Python路径的子模块,因此不需要额外的安装步骤。
用法
设置Claude桌面
- 找到您的Claude Desktop配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 视窗: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 添加MCP服务器配置:
打开配置文件并添加以下内容(或与现有内容合并 mcpServers):
{
"mcpServers": {
"skyscanner": {
"command": "python3",
"args": ["/absolute/path/to/mcp-skyscanner/mcp_server.py"],
"env": {
"SKYSCANNER_LOCALE": "en-US",
"SKYSCANNER_CURRENCY": "USD",
"SKYSCANNER_MARKET": "US"
}
}
}
}重要提示:
- 替换
/absolute/path/to/mcp-skyscanner/mcp_server.py随着 绝对路径 你的mcp_server.py文件 - 使用
python3而不是python在macOS/Linux上 - 如果使用虚拟环境,请使用Python的完整路径(例如。,
/path/to/venv/bin/python3)
- 重新启动克劳德桌面 完全(退出并重新打开应用程序)
- 验证安装: 重新启动后,您应该在Claude Desktop中看到可用的Skyscanner工具。试着问:“搜索12月22日从LHR飞往JFK的航班”
环境变量
SKYSCANNER_LOCALE:区域设置代码(默认:“en-US”)SKYSCANNER_CURRENCY:货币代码(默认值:“USD”)SKYSCANNER_MARKET:市场区域代码(默认:“US”)
可用工具
配置后,Claude Desktop中提供以下工具:
search_airports
按名称、城市或IATA代码搜索机场。
Claude中的示例用法:
- “搜索伦敦机场”
- “查找代码为LHR的机场”
- “开罗有哪些机场?”
参数:
query(字符串,必填):机场名称、城市或IATA代码(例如,“伦敦”、“LHR”、“开罗”)depart_date(字符串,可选):ISO格式的出发日期(例如“2025-12-22”)return_date(字符串,可选):以ISO格式返回日期
退货: 机场物体清单 title, skyId (IATA代码),以及 entity_id
search_flights
搜索两个机场之间的航班。
Claude中的示例用法:
- “搜索12月22日从伦敦希思罗机场飞往纽约肯尼迪机场的航班”
- “查找2025年12月22日从CAI到OPO的航班”
- “显示从LHR到JFK的往返航班,12月22日起飞,12月29日返回”
参数:
origin_airport_code(字符串,必填):IATA代码(例如,“LHR”、“CAI”、“JFK”)destination_airport_code(字符串,必填):IATA代码(例如,“JFK”、“OPO”、“LHR”)depart_date(字符串,必填):ISO格式的出发日期(例如,“2025-12-22”或“2025-12-22T10:00:00”)return_date(string,可选):往返航班的返回日期cabin_class(字符串,可选):“经济”、“premium_economic”、“business”或“first”(默认值:“经济体”)adults(整数,可选):成年乘客人数,1-8(默认值:1)
退货: 词典与 session_id 和 buckets 包含航班选项:
Best-最佳整体选择Cheapest-最低价格选项Fastest-最短持续时间选项Direct-直达航班(如有)
示例用法
在Claude Desktop中设置MCP服务器后,您可以使用自然语言查询:
User: Search for flights from London Heathrow to New York JFK on December 22nd
Claude: I'll search for flights from London Heathrow (LHR) to New York JFK on December 22nd, 2025.
[Uses search_flights tool]
I found several flight options:
- Best: 8 options available
- Cheapest: 8 options available
- Fastest: 8 options available
- Direct: 3 non-stop options available
Would you like me to search for return flights as well?故障排除
服务器未出现
- 检查Python路径:使用
python3而不是python在macOS上,或使用Python可执行文件的完整路径 - 验证依赖关系:运行
pip install -r requirements.txt确保所有软件包都已安装 - 初始化子模块:运行
git submodule update --init --recursive如果vendor/skyscanner目录为空 - 检查日志:查找中的错误
~/Library/Logs/Claude/mcp-server-skyscanner.log(macOS) - 手动测试:运行
python3 /path/to/mcp_server.py检查导入错误
常见错误
spawn python ENOENT:使用python3而不是python在配置中ModuleNotFoundError: No module named 'fastmcp':运行pip install -r requirements.txt- 日期格式错误:确保日期在
YYYY-MM-DD格式和未来
错误响应
服务器返回结构化错误响应:
BannedWithCaptcha:价格受Skyscanner限制Timeout:搜索已超过最大重试次数InvalidDate:日期格式或验证错误AirportNotFound:未找到机场代码
备注
- 航班搜索可能需要10-30秒(API调查结果)
- 日期必须采用ISO 8601格式(
YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS) - 日期必须在未来
- 机场代码不区分大小写
许可证
GPL-3.0
重要提示: 此许可证仅适用于MCP服务器代码。Skyscanner API客户端库(vendor/skyscanner)有自己的许可条款。请在使用前查看上游存储库的许可证。
鸣谢
- Skyscanner API客户端: 无解析/skyscanner
免责声明(提醒)
这个项目是实验性的,仅用于教育目的。它不打算用于商业用途。使用风险自负。
