FlightTicketMCP
Flight Ticket MCP Server 实现了供航空机票相关查询操作的工具和资源。它作为AI助手与航空服务系统之间的桥梁,专注于航班实时动态查询功能。
Install / Use
/learn @xiaonieli7/FlightTicketMCPQuality Score
Category
Development & EngineeringSupported Platforms
README
Flight Ticket MCP Server
一个基于模型上下文协议(MCP)的航空机票查询服务器。该服务器为AI助手提供标准化的航班实时动态查询功能接口。
概述
Flight Ticket MCP Server 实现了供航空机票相关查询操作的工具和资源。它作为AI助手与航空服务系统之间的桥梁,专注于航班实时动态查询功能。
该服务器采用模块化架构,将核心功能、工具和实用程序分离,使其具有高度的可维护性和可扩展性。
功能特性
航班路线查询
- 根据出发地、目的地和出发日期查询可用航班
- 支持282个国内城市和机场代码
- 智能城市名称解析(支持城市名、机场代码、完整格式)
- 实时航班价格和航班时刻信息
- 航空公司和机型信息
- 航站楼和登机口信息
- 价格统计和航空公司分布
- 格式化输出结果
航班中转路线查询
- 根据出发地、中转地、目的地查询联程航班
- 支持自定义最小和最大中转时间(默认2-5小时)
- 智能筛选符合中转时间要求的航班组合
- 提供完整的两段航程信息
- 支持国内外航线中转查询
- 详细的中转时间计算和验证
天气信息查询
- 按经纬度查询:精确地理位置天气查询
- 按城市名查询:支持主要城市直接查询
- 支持历史、当前和未来天气数据
- 提供温度、湿度、风速、天气状况等详细信息
- 自动处理时区和日期范围
- 支持武汉、北京、上海等主要城市预设
航班信息查询
- 根据航班号查询详细的航班信息
- 包含航班状态、座位配置、价格信息
- 提供天气信息(出发地和目的地)
- 显示航班基本信息(航空公司、机型、航线类型)
- 详细的航站楼、登机口信息
- 实时动态状态(准时、延误、登机、飞行中等)
- 座位价格和可用性信息
- 附加服务信息(餐食、WiFi、娱乐系统等)
实时航班跟踪
- 航班实时状态查询:查询航班实时位置和状态
- 机场周边航班查询:查询指定机场周边30公里范围内的所有航班
- 区域航班查询:查询指定地理区域内的所有实时航班
- 批量航班跟踪:同时跟踪多个航班的实时状态
- 支持中国主要机场代码(PEK、PVG、CAN等70+机场)
- 提供详细的航班位置、速度、高度、状态信息
- 无需认证的公开API,实时更新航班数据
日期时间工具
- 获取当前系统日期(YYYY-MM-DD格式)
- 获取当前系统日期时间(YYYY-MM-DD HH:mm:ss格式)
- 为其他功能提供标准化的日期时间支持
- 自动处理时区和格式转换
数据处理与智能化
- 智能城市解析:支持多种城市输入格式(城市名、机场代码、完整格式)
- 参数验证:全面的输入参数验证和错误处理
- 结果格式化:统一的JSON格式输出,便于AI助手解析
- 错误恢复:完善的异常处理和降级机制
- 日志记录:详细的操作日志和调试信息
技术架构
核心模块 (Core)
- 航班数据模型和结构定义
- 机场、航空公司、航班、价格等数据模型
- 航班中转和座位配置数据结构
工具模块 (Tools)
- 航班搜索工具 (
flight_search_tools.py) - 航班路线查询功能 - 航班中转工具 (
flight_transfer_tools.py) - 多段航程和中转查询 - 航班信息工具 (
flight_info_tools.py) - 根据航班号查询详细信息 - 实时航班跟踪工具 (
simple_opensky_tools.py) - 基于OpenSky Network的实时航班跟踪 - 天气查询工具 (
weather_tools.py) - 基于经纬度和城市的天气查询 - 日期时间工具 (
date_tools.py) - 日期时间获取和处理
实用工具 (Utils)
- 城市字典 (
cities_dict.py) - 282个城市和机场代码映射 - 数据验证器 (
validators.py) - 输入参数验证和格式检查 - 日期工具 (
date_utils.py) - 日期格式化和时区处理 - API客户端 (
api_client.py) - HTTP请求封装和错误处理
MCP集成层
- FastMCP服务器 - 基于FastMCP框架的MCP协议实现
- 多传输协议支持 - stdio、SSE、HTTP传输协议
- 工具注册管理 - 统一的工具注册和调用机制
- 环境配置管理 - 灵活的配置和环境变量支持
支持的传输协议
本服务器支持三种传输协议:
- sse - Server-Sent Events(默认,适用于Web应用)
- stdio - 标准输入输出(适用于Claude Desktop)
- streamable-http - 可流式HTTP(适用于HTTP客户端)
安装
前置要求
- Python 3.11 或更高版本
- pip 包管理器(或 uvx 工具)
方式一:从PyPI安装(推荐)
# 使用pip安装
pip install flight-ticket-mcp-server
# 或使用uvx直接运行(无需安装)
uvx flight-ticket-mcp-server
# 或使用uvx安装后运行
uvx --install flight-ticket-mcp-server
方式二:本地开发安装
# 克隆或下载项目
cd FlightTicketMCP
# 安装依赖
pip install -r requirements.txt
# 或从本地源码安装
pip install -e .
uvx 使用说明
uvx 是一个现代的Python包运行工具,可以直接运行PyPI包而无需先安装到系统环境:
# 安装uv(包含uvx工具)
pip install uv
# 直接运行MCP服务器(无需安装)
uvx flight-ticket-mcp-server
# 使用最新版本(推荐)
uvx flight-ticket-mcp-server@latest
# 带参数运行
uvx flight-ticket-mcp-server --help
# 指定版本运行
uvx flight-ticket-mcp-server==1.0.1
# 强制重新安装最新版本
uvx flight-ticket-mcp-server@latest --help
uvx 的优势:
- 🚀 无需污染全局Python环境
- 📦 自动管理虚拟环境
- 🔄 支持直接运行最新版本
- 🛡️ 隔离依赖,避免冲突
启动方式
1. 直接启动(默认SSE模式)
# 使用主启动文件(默认启动SSE模式,监听127.0.0.1:8000)
python flight_ticket_server.py
# 或者直接运行main.py
python main.py
2. 调试模式启动
# 启用调试模式,会输出详细日志
set MCP_DEBUG=true
python flight_ticket_server.py
# Linux/macOS
export MCP_DEBUG=true
python flight_ticket_server.py
3. 不同传输协议启动
SSE模式(默认)
# 直接启动,使用默认SSE配置(127.0.0.1:8000)
python flight_ticket_server.py
stdio模式
# Windows
set MCP_TRANSPORT=stdio
python flight_ticket_server.py
# Linux/macOS
export MCP_TRANSPORT=stdio
python flight_ticket_server.py
HTTP模式
# Windows
set MCP_TRANSPORT=streamable-http
set MCP_HOST=127.0.0.1
set MCP_PORT=8000
python flight_ticket_server.py
# Linux/macOS
export MCP_TRANSPORT=streamable-http
export MCP_HOST=127.0.0.1
export MCP_PORT=8000
python flight_ticket_server.py
4. 环境变量配置
使用 .env 文件(推荐)
项目提供了 .env.example 文件作为配置模板:
-
复制配置模板:
# 复制配置模板 cp .env.example .env -
编辑配置文件: 打开
.env文件,根据需要修改配置值:# MCP服务器配置 MCP_TRANSPORT=sse MCP_HOST=127.0.0.1 MCP_PORT=8000 MCP_SSE_PATH=/sse # 日志配置 LOG_LEVEL=INFO LOG_FILE_PATH=logs/flight_server.log LOG_MAX_SIZE=10 LOG_BACKUP_COUNT=5 # 开发配置 MCP_DEBUG=false -
配置说明:
.env文件包含敏感配置,不会被提交到版本控制.env.example是安全的模板文件,可以提交到Git- 环境变量优先级:系统环境变量 > .env文件 > 程序默认值
直接设置环境变量
如果不使用 .env 文件,也可以直接设置环境变量:
支持的环境变量:
| 变量名 | 描述 | 默认值 | 可选值 |
|--------|------|--------|--------|
| MCP_TRANSPORT | 传输协议类型 | sse | stdio, sse, streamable-http |
| MCP_HOST | 服务器主机地址 | 127.0.0.1 | 任何有效IP地址 |
| MCP_PORT | 服务器端口 | 8000 | 1-65535 |
| MCP_PATH | HTTP路径 | /mcp | 任何有效路径 |
| MCP_SSE_PATH | SSE路径 | /sse | 任何有效路径 |
| MCP_DEBUG | 调试模式 | false | true, false, 1, 0 |
| LOG_LEVEL | 日志级别 | INFO | DEBUG, INFO, WARNING, ERROR, CRITICAL |
| LOG_FILE_PATH | 日志文件路径 | logs/flight_server.log | 任何有效路径 |
| LOG_MAX_SIZE | 日志文件最大大小(MB) | 10 | 正整数 |
| LOG_BACKUP_COUNT | 日志备份数量 | 5 | 正整数 |
| FASTMCP_LOG_LEVEL | FastMCP日志级别 | INFO | DEBUG, INFO, WARNING, ERROR |
5. 启动验证
启动成功后,您会看到类似输出:
Transport: sse
Logging enabled - logs will be saved to logs/ directory
Flight Ticket MCP Server starting...
Transport: sse
All tools registered successfully
Starting SSE transport on 127.0.0.1:8000/sse
6. 日志文件
服务器启动后会在 logs/ 目录下生成以下日志文件:
flight_server.log- 一般日志(INFO级别及以上)flight_server_error.log- 错误日志(ERROR级别)flight_server_debug.log- 调试日志(仅在调试模式下生成)
7. 停止服务器
- stdio模式: 按
Ctrl+C停止 - HTTP/SSE模式: 按
Ctrl+C或发送SIGTERM信号
使用方法
MCP客户端配置
方式一:使用uvx(推荐)
使用uvx运行MCP服务器,无需预先安装,简洁优雅:
{
"mcpServers": {
"flight-ticket-server": {
"command": "uvx",
"args": ["flight-ticket-mcp-server@latest"]
}
}
}
uvx配置的优势:
- 🚀 无需预先安装包
- 📦 自动管理依赖和虚拟环境
- 🔄 始终运行最新版本
- 🛡️ 隔离环境,避免冲突
方式二:使用pip安装后运行
如果已通过pip安装,可以直接使用命令行工具:
{
"mcpServers": {
"flight-ticket-server": {
"command": "flight-ticket-mcp-server"
}
}
}
方式三:本地开发版本
对于本地开发或自定义版本:
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCP\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
配置文件位置
将上述配置添加到Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
应用配置
- 保存配置文件
- 重启Claude Desktop
- 在Claude Desktop中应该能看到flight-ticket-server连接成功
不同传输协议的配置
SSE模式(默认)
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCPServer\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "sse",
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8000",
"MCP_SSE_PATH": "/sse"
}
}
}
}
stdio模式
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCPServer\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
HTTP模式
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCPServer\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "streamable-http",
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8000",
"MCP_PATH": "/mcp"
}
}
}
}
MCP客户端测试
测试连接
配置完成后,可以通过以下方式测试MCP服务器连接:
-
Claude Desktop测试:
- 重启Claude Desktop
- 检查状态栏是否显示"flight-ticket-server"连接成功
- 在对话中尝试询问:"你现在有哪些工具可用?"
-
命令行测试:
# 使用uvx直接测试 uvx flight-ticket-mcp-server --help # 或使用已安装的包测试 flight-ticket-mcp-server --help # 测试模块化运行 python -m flight_ticket_mcp_server --help -
MCP协议测试:
# 使用MCP inspector工具测试(如果安装了) npx @modelcontextprotocol/inspector uvx flight-ticket-mcp-server
验证工具注册
成功连接后,您的Claude应该能够访问以下工具:
- ✈️ searchFlightRoutes - 航班路线查询
- 📅 getCurrentDate - 获取当前日期
- 🔄 getTransferFlightsByThreePlace - 航班中转查询
- 🌤️ getWeatherByLocation - 经纬度天气查询
- 🏙️ getWeatherByCity - 城市天气查询
- ℹ️ getFlightInfo - 航班信息查询
- 📡 getFlightStatus - 航班实时状态查询
- 🛫 getAirportFlights - 机场周边航班查询
- 🗺️ getFlightsInArea - 区域航班查询
- 📊 trackMultipleFlights - 批量航班跟踪
故障排除
如果连接失败,请检查:
-
uvx配置:
# 检查uv/uvx是否安装 uvx --version # 手动测试包运行 uvx flight-ticket-mcp-server@latest -
包版本:
# 强制使用最新版本 uvx flight-ticket-mcp-server@latest # 清除uvx缓存后重试 uv cache clean uvx flight-ticket-mcp-server@latest -
配置文件语法:
- 确保JSON格式正确
- 检查引号和括号匹配
- 验证配置文件路径
-
日志检查:
- 查看Claude Desktop的日志输出
- 检查服务器启动日志
示例操作
配置完成后,您可以要求Claude执行以下操作:
航班路线查询
- "查询重庆到广州明天的航班"
- "搜索上海到北京后天的所有航班"
- "查看深圳飞成都2024年7月20日的航班价格"
- "北京到三亚的航班有哪些选择"
- "帮我找一下成都到杭州下周二的航班信息"
航班中转查询
- "查询北京经香港到纽约的中转航班"
- "搜索上海经迪拜到伦敦的联程航班,中转时间3-6小时"
- "查找广州经新加坡到悉尼的航班,最短中转2小时"
- "北京到洛杉矶,经东京中转的航班有哪些"
天气信息查询
- "查询北京今天和明天的天气情况"
- "上海的天气怎么样"
- "查询纬度39.9042,经度116.4074的天气"(北京坐标)
- "武汉本周的天气预报"
- "查询重庆2024年7月15日到7月17日的天气"
航班信息查询
- "查询航班CA1234的详细信息"
- "MU5678这个航班现在什么状态"
- "帮我查看航班HU7890的座位和价格信息"
- "CZ3691航班的登机口和航站楼信息"
实时航班跟踪查询
- "查询航班CCA1234的实时状态和位置"
- "查看北京首都机场周边有哪些航班"
- "查询北京地区(纬度39-41,经度115-118)内的所有航班"
- "同时跟踪航班CCA1234、CSN5678、MU9876的实时状态"
- "查看浦东机场附近正在飞行的航班"
- "这架飞机现在在哪里?飞行高度和速度是多少?"
日期时间查询
- "今天是几号"
- "现在的日期和时间是什么"
- "帮我获取当前日期"
综合查询示例
- "我要从成都飞北京,明天出发,顺便告诉我北京的天气"
- "查询上海到广州的航班,还有广州的天气情况"
- "帮我规划从重庆到东京的行程,需要中转,并查看目的地天气"
- "查询CA1234航班信息,以及出发地和目的地的天气"
- "我的航班是MU5678,帮我查看航班状态和座位情况"
- "查询CCA1234航班的实时位置,同时告诉我目的地天气"
- "我想知道北京机场现在有哪些航班起飞,以及北京的天气状况"
API参考
航班路线查询
searchFlightRoutes(departure_city
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
