Flightticketmcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Flightticketmcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
一个基于模型上下文协议(MCP)的航空机票查询服务器。该服务器为AI助手提供标准化的航班实时动态查询功能接口。
Flight Ticket MCP Server 实现了供航空机票相关查询操作的工具和资源。它作为AI助手与航空服务系统之间的桥梁,专注于航班实时动态查询功能。
该服务器采用模块化架构,将核心功能、工具和实用程序分离,使其具有高度的可维护性和可扩展性。
flight_search_tools.py) - 航班路线查询功能flight_transfer_tools.py) - 多段航程和中转查询flight_info_tools.py) - 根据航班号查询详细信息simple_opensky_tools.py) - 基于OpenSky Network的实时航班跟踪weather_tools.py) - 基于经纬度和城市的天气查询date_tools.py) - 日期时间获取和处理cities_dict.py) - 282个城市和机场代码映射validators.py) - 输入参数验证和格式检查date_utils.py) - 日期格式化和时区处理api_client.py) - HTTP请求封装和错误处理本服务器支持三种传输协议:
# 使用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 是一个现代的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 --helpuvx 的优势:
# 使用主启动文件(默认启动SSE模式,监听127.0.0.1:8000)
python flight_ticket_server.py
# 或者直接运行main.py
python main.py# 启用调试模式,会输出详细日志
set MCP_DEBUG=true
python flight_ticket_server.py
# Linux/macOS
export MCP_DEBUG=true
python flight_ticket_server.py#### 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#### 使用 .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 文件,也可以直接设置环境变量:
支持的环境变量:
| 变量名 | 描述 | 默认值 | 可选值 |
|---|---|---|---|
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 |
启动成功后,您会看到类似输出:
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服务器启动后会在 logs/ 目录下生成以下日志文件:
flight_server.log - 一般日志(INFO级别及以上)flight_server_error.log - 错误日志(ERROR级别)flight_server_debug.log - 调试日志(仅在调试模式下生成)Ctrl+C 停止Ctrl+C 或发送SIGTERM信号#### 方式一:使用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配置文件中:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/claude/claude_desktop_config.json#### 应用配置
#### 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服务器连接:
# 使用uvx直接测试
uvx flight-ticket-mcp-server --help
# 或使用已安装的包测试
flight-ticket-mcp-server --help
# 测试模块化运行
python -m flight_ticket_mcp_server --help # 使用MCP inspector工具测试(如果安装了)
npx @modelcontextprotocol/inspector uvx flight-ticket-mcp-server#### 验证工具注册
成功连接后,您的Claude应该能够访问以下工具:
#### 故障排除
如果连接失败,请检查:
# 检查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配置完成后,您可以要求Claude执行以下操作:
#### 航班路线查询
#### 航班中转查询
#### 天气信息查询
#### 航班信息查询
#### 实时航班跟踪查询
#### 日期时间查询
#### 综合查询示例
searchFlightRoutes(departure_city, destination_city, departure_date) # 根据出发地、目的地和日期查询可用航班输入参数:
departure_city: 出发城市名称或机场代码 (如: "重庆", "CKG", "重庆(CKG)")destination_city: 目的地城市名称或机场代码 (如: "广州", "CAN", "广州(CAN)")departure_date: 出发日期 (YYYY-MM-DD格式)输出信息:
支持的城市格式:
getTransferFlightsByThreePlace(from_place, transfer_place, to_place, min_transfer_time, max_transfer_time)输入参数:
from_place: 出发地城市名称或机场代码 (如: "北京", "BJS")transfer_place: 中转地城市名称或机场代码 (如: "香港", "HKG")to_place: 目的地城市名称或机场代码 (如: "纽约", "NYC")min_transfer_time: 最小中转时间(小时),默认2.0小时max_transfer_time: 最大中转时间(小时),默认5.0小时输出信息:
#### 按经纬度查询
getWeatherByLocation(latitude, longitude, start_date, end_date)输入参数:
latitude: 纬度 (如: 39.9042)longitude: 经度 (如: 116.4074)start_date: 开始日期 (YYYY-MM-DD格式),可选end_date: 结束日期 (YYYY-MM-DD格式),可选#### 按城市名查询
getWeatherByCity(city_name, start_date, end_date)输入参数:
city_name: 城市名称 (如: "北京", "上海", "武汉")start_date: 开始日期 (YYYY-MM-DD格式),可选end_date: 结束日期 (YYYY-MM-DD格式),可选输出信息:
getFlightInfo(flight_number) # 根据航班号查询详细航班信息输入参数:
flight_number: 航班号 (如: "CA1234", "MU5678", "CZ3691")输出信息:
支持的航班号格式:
#### 航班实时状态查询
getFlightStatus(flight_number, date=None) # 查询航班实时状态输入参数:
flight_number: 航班呼号 (如: "CCA1234", "CSN5678", "MU9876")date: 日期参数(OpenSky仅支持实时数据,此参数被忽略)输出信息:
#### 机场周边航班查询
getAirportFlights(airport_code, flight_type="departure") # 查询机场周边航班输入参数:
airport_code: 机场代码 (如: "PEK", "PVG", "CAN", "CTU", "XIY")flight_type: 航班类型(此参数仅为兼容性,OpenSky返回所有航班)输出信息:
支持的机场代码(70+个):
#### 区域航班查询
getFlightsInArea(min_lat, max_lat, min_lon, max_lon) # 查询指定区域内航班输入参数:
min_lat: 最小纬度 (如: 39.0)max_lat: 最大纬度 (如: 41.0)min_lon: 最小经度 (如: 115.0)max_lon: 最大经度 (如: 118.0)输出信息:
#### 批量航班跟踪
trackMultipleFlights(flight_numbers, date=None) # 批量跟踪多个航班输入参数:
flight_numbers: 航班呼号列表 (如: ["CCA1234", "CSN5678", "MU9876"])date: 日期参数(OpenSky仅支持实时数据)输出信息:
注意事项:
getCurrentDate() # 获取当前日期(YYYY-MM-DD格式)输出信息:
FlightTicketMCPServer/
├── flight_ticket_server/
│ ├── core/ # 核心业务逻辑
│ ├── tools/ # MCP工具实现
│ ├── utils/ # 实用工具函数
│ └── main.py # 服务器入口点
├── office_flight_ticket_server/ # 额外模块
├── tests/ # 测试文件
├── logs/ # 日志文件目录
├── pyproject.toml # 项目配置
├── requirements.txt # 项目依赖
├── flight_ticket_server.py # 主启动文件
├── mcp-config.json # MCP配置示例
└── README.md # 项目文档# 运行所有测试
python -m pytest tests/ -v
# 运行基本功能测试
python -m pytest tests/test_basic.py -v
# 运行特定测试
python -m pytest tests/test_basic.py::TestFlightSearch::test_searchFlightsByNumber -vlogs/ 目录MCP_DEBUG=truetail -f logs/flight_server.log # 更改端口
set MCP_PORT=8001
python flight_ticket_server.py # 确保在正确的目录
cd FlightTicketMCPServer/flight_ticket_server
python flight_ticket_server.py # 检查文件权限
ls -la flight_ticket_server.py
chmod +x flight_ticket_server.py查看日志文件了解详细错误信息:
# 查看一般日志
cat logs/flight_server.log
# 查看错误日志
cat logs/flight_server_error.log
# 实时监控日志
tail -f logs/flight_server.logMIT License - 查看 LICENSE 文件获取详细信息。
欢迎提交Issue和Pull Request来改进这个项目。
如果您遇到问题或有功能建议,请在GitHub上创建Issue。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.