Skip to main content
Glama
qqoqto
by qqoqto

Flight Ticket MCP Server

一个基于模型上下文协议(MCP)的航空机票查询服务器。该服务器为AI助手提供标准化的航班实时动态查询功能接口。

概述

Flight Ticket MCP Server 实现了供航空机票相关查询操作的工具和资源。它作为AI助手与航空服务系统之间的桥梁,专注于航班实时动态查询功能。

该服务器采用模块化架构,将核心功能、工具和实用程序分离,使其具有高度的可维护性和可扩展性。

Related MCP server: SkyOdyssey MCP

功能特性

航班路线查询

  • 根据出发地、目的地和出发日期查询可用航班

  • 支持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传输协议

  • 工具注册管理 - 统一的工具注册和调用机制

  • 环境配置管理 - 灵活的配置和环境变量支持

支持的传输协议

本服务器支持三种传输协议:

  1. sse - Server-Sent Events(默认,适用于Web应用)

  2. stdio - 标准输入输出(适用于Claude Desktop)

  3. 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 文件作为配置模板:

  1. 复制配置模板

    # 复制配置模板
    cp .env.example .env
  2. 编辑配置文件: 打开 .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
  3. 配置说明

    • .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

应用配置

  1. 保存配置文件

  2. 重启Claude Desktop

  3. 在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服务器连接:

  1. Claude Desktop测试

    • 重启Claude Desktop

    • 检查状态栏是否显示"flight-ticket-server"连接成功

    • 在对话中尝试询问:"你现在有哪些工具可用?"

  2. 命令行测试

    # 使用uvx直接测试
    uvx flight-ticket-mcp-server --help
    
    # 或使用已安装的包测试
    flight-ticket-mcp-server --help
    
    # 测试模块化运行
    python -m flight_ticket_mcp_server --help
  3. MCP协议测试

    # 使用MCP inspector工具测试(如果安装了)
    npx @modelcontextprotocol/inspector uvx flight-ticket-mcp-server

验证工具注册

成功连接后,您的Claude应该能够访问以下工具:

  • ✈️ searchFlightRoutes - 航班路线查询

  • 📅 getCurrentDate - 获取当前日期

  • 🔄 getTransferFlightsByThreePlace - 航班中转查询

  • 🌤️ getWeatherByLocation - 经纬度天气查询

  • 🏙️ getWeatherByCity - 城市天气查询

  • ℹ️ getFlightInfo - 航班信息查询

  • 📡 getFlightStatus - 航班实时状态查询

  • 🛫 getAirportFlights - 机场周边航班查询

  • 🗺️ getFlightsInArea - 区域航班查询

  • 📊 trackMultipleFlights - 批量航班跟踪

故障排除

如果连接失败,请检查:

  1. uvx配置

    # 检查uv/uvx是否安装
    uvx --version
    
    # 手动测试包运行
    uvx flight-ticket-mcp-server@latest
  2. 包版本

    # 强制使用最新版本
    uvx flight-ticket-mcp-server@latest
    
    # 清除uvx缓存后重试
    uv cache clean
    uvx flight-ticket-mcp-server@latest
  3. 配置文件语法

    • 确保JSON格式正确

    • 检查引号和括号匹配

    • 验证配置文件路径

  4. 日志检查

    • 查看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, destination_city, departure_date)  # 根据出发地、目的地和日期查询可用航班

输入参数:

  • departure_city: 出发城市名称或机场代码 (如: "重庆", "CKG", "重庆(CKG)")

  • destination_city: 目的地城市名称或机场代码 (如: "广州", "CAN", "广州(CAN)")

  • departure_date: 出发日期 (YYYY-MM-DD格式)

输出信息:

  • 航班列表(包含航班号、航空公司、起飞到达时间、机场、航站楼、价格)

  • 价格统计(最低价、最高价、平均价)

  • 航空公司分布统计

  • 格式化的查询结果输出

  • 支持的城市:282个国内城市和机场

支持的城市格式:

  • 城市名:上海、北京、重庆、广州等

  • 机场代码:SHA、BJS、CKG、CAN等

  • 完整格式:上海(SHA)、北京(BJS)等

航班中转路线查询

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")

输出信息:

  • 航班基本信息(航空公司、机型、航线类型)

  • 航线信息(出发和到达机场、航站楼、登机口)

  • 实时状态(准时、延误、登机、飞行中、已到达等)

  • 座位配置(经济舱、商务舱、头等舱座位数)

  • 价格信息(各舱位价格和可用性)

  • 天气信息(出发地和目的地当前天气)

  • 附加服务(值机柜台、行李额度、餐食、WiFi等)

支持的航班号格式:

  • 中国国际航空:CA1234、CA8901

  • 中国东方航空:MU5678、MU2468

  • 中国南方航空:CZ3691、CZ1357

  • 海南航空:HU7890

  • 厦门航空:MF8123

  • 春秋航空:9C8765

  • 吉祥航空:HO1288

  • 国外航空:UA858、NH955 等

实时航班跟踪

航班实时状态查询

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返回所有航班)

输出信息:

  • 机场周边30公里范围内的所有航班

  • 每架航班的实时位置和状态

  • 航班呼号、速度、高度信息

  • 机场坐标和搜索范围

支持的机场代码(70+个):

  • 北京:PEK(首都)、PKX(大兴)

  • 上海:PVG(浦东)、SHA(虹桥)

  • 广州:CAN、深圳:SZX、成都:CTU/TFU

  • 重庆:CKG、西安:XIY、昆明:KMG

  • 杭州:HGH、南京:NKG、武汉:WUH

  • 以及其他主要城市机场

区域航班查询

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仅支持实时数据)

输出信息:

  • 多个航班的实时状态汇总

  • 每个航班的详细查询结果

  • 成功查询数量统计

  • 批量查询执行时间

注意事项:

  • OpenSky Network仅提供实时数据,不支持历史航班查询

  • API有频率限制,批量查询时会自动添加延时

  • 部分航班可能无呼号信息或位置数据不完整

  • 数据精度和可用性取决于ADS-B信号覆盖

日期时间工具

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 -v

日志和调试

  • 日志文件位置:logs/ 目录

  • 启用调试模式:设置 MCP_DEBUG=true

  • 查看实时日志:tail -f logs/flight_server.log

故障排除

常见问题

  1. 端口被占用

    # 更改端口
    set MCP_PORT=8001
    python flight_ticket_server.py
  2. 导入错误

    # 确保在正确的目录
    cd FlightTicketMCPServer/flight_ticket_server
    python flight_ticket_server.py
  3. 权限问题

    # 检查文件权限
    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.log

许可证

MIT License - 查看 LICENSE 文件获取详细信息。

贡献

欢迎提交Issue和Pull Request来改进这个项目。

支持

如果您遇到问题或有功能建议,请在GitHub上创建Issue。

Available Tools

10 tools
getAirportFlightsGetairportflightsC

机场周边航班查询 - 查询指定机场周边30公里范围内的所有航班。支持主要机场代码如PEK、PVG、CAN等

ParametersJSON Schema
NameRequiredDescriptionDefault
flight_typeNodeparture
airport_codeYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it discloses little beyond the geographic constraint. It says nothing about result volume, pagination, whether results are real-time, permission requirements, or the return shape for what could be a large result set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence that front-loads the resource and the spatial constraint followed by concrete code examples. No filler, though it is arguably too terse given the documentation gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no annotations and no output schema, the description should explain flight_type semantics and something about the return payload. It supplies only airport_code examples and a scope, leaving key calling details unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It partially does for airport_code by supplying example codes (PEK, PVG, CAN), but flight_type is never mentioned, leaving its allowed values (default 'departure') completely undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (query), resource (flights), and scope (all flights within 30km of a specified airport), which is concrete and actionable. It does not, however, differentiate itself from the closely related sibling getFlightsInArea, so an agent cannot tell from the text alone which geographic tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 30km airport-radius scope implies when the tool applies, giving implicit usage guidance. But there is no explicit when-not or any reference to the similar sibling getFlightsInArea, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getCurrentDateGetcurrentdateA

获取当前日期 - 返回格式为 yyyy-MM-dd 的当前日期字符串

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the output format (yyyy-MM-dd) and implicitly that this is a side-effect-free read, which is genuinely useful. However it omits timezone/clock basis, which is the one behavioral detail that actually matters for a 'current date' tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the action front-loaded and the return format trailing as supporting detail. Every clause earns its place and there is no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully specifies the return format, which is the key thing an agent needs. The remaining gap is the unspecified timezone/locale, which affects what 'current date' resolves to; for an otherwise trivial tool this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. The description correctly avoids inventing parameter semantics that do not exist, and the empty schema is consistent with the text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('获取当前日期' / get current date) and adds the exact return format, so the agent knows precisely what it produces. It does not explicitly differentiate itself from siblings, but the sibling set (all flight/weather lookups) makes the distinction self-evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers it should call this when it needs today's date. There is no explicit when-to-use statement, no mention of prerequisites, and no named alternatives. For a zero-parameter utility that is acceptable but leaves the routing entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getFlightInfoGetflightinfoB

航班信息查询 - 根据航班号查询详细的航班信息,包括航班状态、座位配置、价格、天气等

ParametersJSON Schema
NameRequiredDescriptionDefault
flight_numberYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the scope of returned data (status, seat configuration, price, weather), which is real behavioral value, but omits any statement about read-only nature, authentication, rate limits, or error conditions for an unknown flight number.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence that front-loads the action and then the payload; no waste. Only minor redundancy between the 'flight information query' preamble and the explicit verb that follows.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema, the description is adequate: it names the input and sketches the return contents. It falls short on input format and on distinguishing this tool from getFlightStatus, both of which an agent needs to select and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter has no type/format documentation in the schema. The description only restates the input as 'flight number' without specifying expected format (e.g., IATA carrier+number like 'CA1234'), so it does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (query flight info by flight number) and enumerates the returned content (status, seating, pricing, weather). However, it does not differentiate itself from the closely-named sibling getFlightStatus, which also returns flight status, so an agent cannot easily tell which to pick from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives, despite siblings like getFlightStatus and searchFlightRoutes covering overlapping ground. The agent is left to infer routing from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getFlightsInAreaGetflightsinareaC

区域航班查询 - 查询指定地理区域内的所有航班。参数为边界框坐标(最小纬度,最大纬度,最小经度,最大经度)

ParametersJSON Schema
NameRequiredDescriptionDefault
max_latYes
max_lonYes
min_latYes
min_lonYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It implies a read-only query but says nothing about authentication, rate limits, output format, pagination, or what happens with large result sets, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact, front-loaded sentence followed by a short parameter note. It wastes little space, though the parameter note is essentially a comma-separated list without much added structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and 0% schema description coverage, the description is the only source of truth. It covers the basic purpose and parameter grouping but omits return format, error behavior, and selection guidance against siblings, making it incomplete for an agent to call confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for missing parameter documentation. It identifies all four parameters as a bounding box and gives their conceptual order (min lat, max lat, min lon, max lon), but it does not explain valid ranges, coordinate reference system, or inclusion semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: query all flights within a geographic area defined by a bounding box. This clearly distinguishes it from siblings like getAirportFlights or searchFlightRoutes, though it does not name those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only explains what the tool does and what parameters it takes. It offers no guidance on when to prefer this tool over getAirportFlights, searchFlightRoutes, or other sibling tools, and no conditions or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getFlightStatusGetflightstatusA

航班实时状态查询 - 使用OpenSky Network查询航班实时位置和状态。flight_number为航班呼号(如CCA1234),date参数无效(仅支持实时数据)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
flight_numberYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the data source (OpenSky Network) and that only live data is available. However, it omits auth requirements, rate limits, and error/failure behavior for unknown callsigns, leaving meaningful gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: the purpose and data source lead, followed by parameter clarifications. Every clause adds information, though the parenthetical about date sits at the end rather than being foregrounded as a constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema and no annotations, the description covers purpose, source, and parameter meaning adequately. It stops short of describing the shape of the returned status (position/velocity fields) or failure behavior, which slightly leaves an agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: flight_number is defined as a callsign with an example (CCA1234), and date is explicitly declared invalid/ignored. Both parameters receive meaningful interpretation beyond the bare schema, though format edge cases are not covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: queries real-time flight position and status via OpenSky Network. It also clarifies the flight_number format (callsign like CCA1234). However, it does not explicitly differentiate itself from siblings like getFlightInfo, which an agent would need to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating it only supports real-time data and that the date parameter is invalid, which steers an agent away from historical queries. But it names no alternative tool and gives no explicit when-to-use/when-not-to-use guidance relative to getFlightInfo or getFlightStatus-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTransferFlightsByThreePlaceGettransferflightsbythreeplaceA

航班中转路线查询 - 根据出发地、中转地、目的地、最小转机时间、最大转机时间查询中转航班信息,最小转机时间默认为2小时,最大转机时间默认为5小时

ParametersJSON Schema
NameRequiredDescriptionDefault
to_placeNo纽约
from_placeNo北京
transfer_placeNo香港
max_transfer_timeNo
min_transfer_timeNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses default transfer-time windows (2 and 5 hours), which affect results when those parameters are omitted, but it does not describe the return format, pagination, or whether the query is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that states the purpose and then lists the input dimensions, followed by default notes. It is dense but wastes no words and puts the core operation first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter query tool with no annotations and no output schema, the description covers purpose, parameter mapping, and time-unit defaults. However, it omits any description of the returned flight information and does not explain how place names should be formatted, leaving the agent to infer return shape and input constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It names all five parameters in Chinese and maps them to departure, transfer, and destination places, and crucially clarifies that min/max transfer time are in hours with defaults of 2 and 5, adding meaning beyond the bare numeric schema defaults. It still doesn't specify the expected format for place values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('查询' query) and resource ('中转航班' transfer flights), and enumerates the three-place plus time-window inputs that define the query. It differentiates itself from generic flight siblings like getAirportFlights or searchFlightRoutes by focusing on connecting itineraries, though it doesn't name any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what inputs drive the query but offers no explicit when-to-use guidance, no alternatives, and no exclusions. An agent can infer the tool is for connecting-flight lookups, but it must still discover on its own that searchFlightRoutes or getFlightInfo are not the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getWeatherByCityGetweatherbycityB

城市天气查询 - 根据城市名查询天气信息。支持武汉、北京、上海等主要城市。如果不提供日期,默认查询今天和明天的天气数据

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
city_nameYes
start_dateNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add one genuinely useful behavioral fact not present in the schema: an omitted date defaults to today plus tomorrow. It says nothing about authentication, rate limits, error behavior, or supported city coverage limits beyond a few examples.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact clauses that front-load the resource and then the scoping/default behavior. No filler or repetition, though it is a single run-on line rather than clearly segmented guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no output schema and no annotations, the definition covers the required argument and the date default but omits date format, return-shape expectations, and how city coverage is bounded. Adequate but with clear gaps an agent would have to guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains city_name's role and the default behavior of the date parameters, but never specifies the accepted date string format or whether city names must be Chinese, leaving key invocation details undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('城市天气查询 - 根据城市名查询天气信息'), and the phrase '根据城市名' implicitly separates it from the sibling getWeatherByLocation. It stops short of explicitly naming that alternative, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: use this when you have a city name. There is no statement of when not to use it and no reference to getWeatherByLocation as the alternative for coordinate/location-based lookups, which is the obvious sibling choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getWeatherByLocationGetweatherbylocationB

天气信息查询 - 根据经纬度查询天气信息,使用Open-Meteo API。如果不提供日期,默认查询今天和明天的天气数据

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
latitudeYes
longitudeYes
start_dateNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the backing service (Open-Meteo API) and the key default ('if no date is provided, query today and tomorrow'), but says nothing about error handling, units returned, timezone handling, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence pair that is front-loaded with the core purpose followed by the default-date rule. The leading '天气信息查询 -' label is mildly redundant with the tool name but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, no annotations, and no per-parameter documentation, so the description must do more. The default-date rule is the most valuable missing piece it supplies, but date format, coordinate validity, and result shape remain unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the semantics of omitting start_date/end_date (defaults to today and tomorrow), which covers two of four parameters meaningfully, but it omits date string format, allowed ranges, and any constraint on latitude/longitude.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('查询天气信息' via '经纬度'), which is clearly distinct from a generic weather tool. However, it never names or contrasts with the obvious sibling getWeatherByCity, so an agent must infer the coordinate-vs-city distinction itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the input (call it when you have latitude/longitude), and the default date behavior is noted, but there is no explicit when-to-use guidance and no mention of when to prefer getWeatherByCity or other siblings. The alternative-based routing is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searchFlightRoutesSearchflightroutesC

來回航班查詢 - 根據出發地、目的地、出發日期和回程日期查詢來回機票資訊

ParametersJSON Schema
NameRequiredDescriptionDefault
return_dateYes
departure_cityYes
departure_dateYes
destination_cityYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it discloses almost nothing: no auth or rate-limit notes, no statement about result format, currency, or whether prices are live or cached. The only behavioral fact conveyed is that the search is round-trip rather than one-way.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the resource and the four inputs front-loaded, and no wasted words. It is appropriately sized, though that brevity comes at the cost of detail elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema description coverage, this four-required-parameter tool needs far more from its description than one line. Date format, city identifier convention, and return-value shape are all unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for four required string parameters, so the description must compensate. It names the four concepts (departure city, destination city, departure date, return date), which maps them to the schema properties, but adds no formats—city codes vs. names, date string format, or IATA conventions remain unknown.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: round-trip flight lookup, with the four query dimensions named. It is clear what the tool does, but it gives no differentiation from siblings like getFlightInfo, getFlightStatus, or getFlightsInArea, so an agent cannot tell from the text alone why it should pick this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternatives. The implicit constraint that only round-trip searches are supported (return_date is required) is never surfaced as a usage rule, leaving the agent to infer routing against nine sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trackMultipleFlightsTrackmultipleflightsB

批量航班跟踪 - 同时查询多个航班的实时状态。flight_numbers为航班呼号列表,如['CCA1234','CSN5678']

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
flight_numbersYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'real-time status', which is a small behavioral hint, but omits permissions, rate limits, maximum batch size, error handling, and whether the date parameter defaults to today or is required for historical queries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded: purpose first, then a concrete parameter example. It is efficient overall, though the opening phrase '批量航班跟踪' partially restates the tool name, adding slight redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch tool with 0% schema coverage, no annotations, and no output schema, the description is incomplete. It documents the key required parameter but leaves the date parameter, return format, batch limits, and error behavior unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does add useful meaning for the required 'flight_numbers' parameter by defining it as a list of flight callsigns and giving an example, but it completely ignores the optional 'date' parameter, leaving its format and default behavior undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: batch query real-time status of multiple flights simultaneously. It distinguishes itself from single-flight siblings implicitly through 'multiple flights', but does not name a specific alternative tool like getFlightInfo or getFlightStatus, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the batch nature: use this when tracking several flights at once. However, there is no explicit guidance on when to choose this over single-flight tools such as getFlightInfo, nor any stated prerequisites, exclusions, or limits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.0.1
    • First observedgetAirportFlights
    • First observedgetCurrentDate
    • First observedgetFlightInfo
    • First observedgetFlightsInArea
    • First observedgetFlightStatus
    • First observedgetTransferFlightsByThreePlace
    • First observedgetWeatherByCity
    • First observedgetWeatherByLocation
    • First observedsearchFlightRoutes
    • First observedtrackMultipleFlights

TDQS

B3.2/5.0

Scored across 10 tools

Disambiguation3/5

getFlightInfo and getFlightStatus both take a flight number and return status-related information, creating real ambiguity about which to use. The spatial queries getAirportFlights and getFlightsInArea also overlap conceptually, though their input types differ and descriptions partially clarify the distinction.

Naming Consistency4/5

All tool names are camelCase and verb-first (get/track/search), giving a mostly predictable pattern. Minor deviations like the awkwardly long getTransferFlightsByThreePlace and the generic getCurrentDate keep it from being perfect.

Tool Count4/5

10 tools is within the ideal 3-15 range and suits a flight query server well. A couple of tools (getFlightInfo/getFlightStatus) could be consolidated, so it falls just short of ideal scoping.

Completeness3/5

The set covers round-trip search, transfer search, status tracking, flight details, weather, and current date. However, as a 'ticket' server it lacks booking/purchase, one-way direct flight search, and order management, which are notable gaps for the implied domain.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI clients to explore cheapest destinations, optimize multi-leg flight itineraries, and reference airport/region data via MCP tools and resources.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides AI assistants with access to real-time flight data, airport schedules, delays, and aviation reference databases through natural language queries.
    12
    130 npm
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Provides real travel search for AI assistants, enabling flight, hotel, car rental, and ground transportation searches through a single MCP tool, with no API keys required.
    75
    -