MCP server wrapping a production-grade flight tracking system (Flask + SQLite) that provides real-time flight status, AWB tracking, and timezone information. Integrates multiple data sources: 17track API, HACTL, MST Cargo, and AF-KLM.
Server has 4 tools with basic schemas and descriptions, but significant quality gaps. Tool names lack clear action verbs (track_by_awb vs get_flight_tracking). Descriptions are present but written in Chinese, making them inaccessible to English-speaking LLMs and violating the principle that descriptions should be LLM-optimized. Parameter descriptions exist but are minimal. No output schemas documented. Error handling and recovery guidance absent. No tool annotations (readOnlyHint/destructiveHint). The batch_track tool accepts arrays but lacks pagination/limit documentation. register_awb is a WRITE operation but has no confirmation or dry-run pattern.
批量查询运单状态。 支持一次查询最多50个运单。
注册运单到17track(启用实时推送)。
根据运单号查询航班实时状态。 融合多数据源:17track API / HACTL / MST Cargo / AF-KLM。 自动处理488前缀的数据融合规则。
根据航班号查询航班状态。
All tool descriptions are in Chinese, not English. LLMs trained primarily on English will not understand when/why to select these tools. Descriptions must be in English for cross-LLM compatibility.
Tool names do not start with clear action verbs. 'track_by_awb' is ambiguous (get? search? monitor?). Should be 'get_flight_tracking_by_awb' or 'search_shipment_status'. Naming convention: verb_noun.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., does track_by_awb return ata, atd, status, location?). Every tool must document its return structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
register_awb is a WRITE operation with no confirmation, dry-run, or error recovery guidance. Agents could accidentally register duplicate AWBs. Implement confirmation_request pattern.
batch_track accepts an array but lacks pagination, limit constraints, or documentation of max batch size (code mentions 50 max but not in schema). Unbounded arrays risk context window exhaustion.