此 MCP 可以做什么
Analyzes historical flight and package prices for destinations from Czech origins without providing live quotes.
工具
输入模式
{'type': 'object', 'required': ['destinations'], 'properties': {'rail': {'enum': ['flight', 'package', 'both'], 'type': 'string', 'description': 'optional (default both): restrict to one rail'}, 'party': {'type': 'string', 'pattern': '^(0|[1-9]\\d*)-(0|[1-9]\\d*)$', 'description': "optional (default '2-2'): '<adults>-<children>', the same A-C shape the price streams are keyed on"}, 'destinations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 8, 'minItems': 2, 'description': '2-8 destination slugs; the answer keeps this order'}, 'min_history_days': {'type': 'integer', 'minimum': 0, 'description': "optional (default 30): rails measured for fewer days are listed under 'excluded'"}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['schema', 'generated', 'party', 'rail', 'min_history_days', 'comparison_rows', 'comparison', 'excluded', 'disclaimer'], 'properties': {'rail': {'enum': ['flight', 'package', 'both'], 'type': 'string'}, 'party': {'type': 'string'}, 'schema': {'type': 'string'}, 'license': {'type': 'object', 'required': ['id', 'url', 'attribution'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'attribution': {'type': 'string'}}}, 'currency': {'type': 'string'}, 'excluded': {'type': 'array', 'items': {'type': 'object', 'required': ['destination', 'reason'], 'properties': {'rail': {'enum': ['flight', 'package', 'both'], 'type': 'string'}, 'party': {'type': 'string'}, 'reason': {'type': 'string'}, 'measured': {'type': 'object', 'required': ['days', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'days': {'type': 'integer'}, 'from': {'type': 'string'}}}, 'generated': {'type': 'string'}, 'resort_key': {'type': 'string'}, 'destination': {'type': 'string'}}}}, 'generated': {'type': ['string', 'null'], 'description': 'the OLDEST `generated` among the rows and dated exclusions'}, 'comparison': {'type': 'array', 'items': {'type': 'object', 'required': ['destination', 'title', 'url', 'generated', 'rail', 'party', 'price_covers', 'measured', 'stats'], 'properties': {'url': {'type': 'string'}, 'rail': {'enum': ['flight', 'package'], 'type': 'string'}, 'party': {'type': 'object', 'required': ['adults', 'children'], 'properties': {'adults': {'type': 'integer'}, 'children': {'type': 'integer'}}}, 'stats': {'type': 'object', 'required': ['basis'], 'properties': {'min': {'type': ['number', 'null']}, 'basis': {'type': 'string'}, 'latest': {'type': ['number', 'null']}, 'median': {'type': ['number', 'null']}, 'is_series_max': {'type': 'boolean'}, 'is_series_min': {'type': 'boolean'}, 'cheaper_than_pct': {'type': ['number', 'null']}}}, 'title': {'type': 'object', 'required': ['cs', 'en'], 'properties': {'cs': {'type': 'string'}, 'en': {'type': 'string'}}}, 'resort': {'type': 'string'}, 'origins': {'type': 'object', 'description': 'departure-airport CLUSTER; covers_all_published_prices is false'}, 'arrivals': {'type': 'object', 'description': 'arrival airports RECORDED; covers_all_published_prices is false'}, 'measured': {'type': 'object', 'required': ['days', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'days': {'type': 'integer'}, 'from': {'type': 'string'}}}, 'searched': {'type': 'object', 'description': 'the search mode (and fixed dates, where there are any) the series was collected under'}, 'generated': {'type': 'string'}, 'resort_key': {'type': 'string'}, 'destination': {'type': 'string'}, 'price_covers': {'type': 'object', 'description': 'what the money buys - airfare only, or a package as offered'}, 'regime_breaks': {'type': 'array', 'description': '[from, to] date spans where the series was not comparable'}, 'latest_stale_after_days': {'type': 'number', 'description': "this rail's own freshness boundary, in days after measured.to"}}}}, 'disclaimer': {'type': 'string'}, 'comparison_rows': {'type': 'integer', 'description': 'rows, not destinations - a dual-rail destination contributes two'}, 'min_history_days': {'type': 'integer'}}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}}, 'description': 'tool-level failure, returned with isError: true'}]}
输入模式
{'type': 'object', 'required': ['destination'], 'properties': {'destination': {'type': 'string', 'description': "destination slug, as returned by list_destinations. A RESORT key read off a rail (e.g. 'hurghada') also resolves, to its parent destination, and the answer then carries `resolved_from`; underscores and hyphens are interchangeable."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['schema', 'generated', 'destination', 'url', 'currency', 'license', 'rails', 'disclaimer'], 'properties': {'url': {'type': 'string'}, 'rails': {'type': 'array', 'items': {'type': 'object', 'required': ['rail', 'party', 'price_covers', 'measured', 'stats'], 'properties': {'rail': {'enum': ['flight', 'package'], 'type': 'string'}, 'party': {'type': 'object', 'required': ['adults', 'children'], 'properties': {'adults': {'type': 'integer'}, 'children': {'type': 'integer'}}}, 'stats': {'type': 'object', 'required': ['basis'], 'properties': {'min': {'type': ['number', 'null']}, 'basis': {'type': 'string'}, 'latest': {'type': ['number', 'null']}, 'median': {'type': ['number', 'null']}, 'is_series_max': {'type': 'boolean'}, 'is_series_min': {'type': 'boolean'}, 'cheaper_than_pct': {'type': ['number', 'null']}}}, 'resort': {'type': 'string'}, 'origins': {'type': 'object', 'description': 'departure-airport CLUSTER; covers_all_published_prices is false'}, 'arrivals': {'type': 'object', 'description': 'arrival airports RECORDED; covers_all_published_prices is false'}, 'measured': {'type': 'object', 'required': ['days', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'days': {'type': 'integer'}, 'from': {'type': 'string'}}}, 'searched': {'type': 'object', 'description': 'the search mode (and fixed dates, where there are any) the series was collected under'}, 'resort_key': {'type': 'string'}, 'price_covers': {'type': 'object', 'description': 'what the money buys - airfare only, or a package as offered'}, 'regime_breaks': {'type': 'array', 'description': '[from, to] date spans where the series was not comparable'}, 'latest_stale_after_days': {'type': 'number', 'description': "this rail's own freshness boundary, in days after measured.to"}}}}, 'schema': {'type': 'string'}, 'license': {'type': 'object', 'required': ['id', 'url', 'attribution'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'attribution': {'type': 'string'}}}, 'currency': {'type': 'string'}, 'generated': {'type': 'string'}, 'disclaimer': {'type': 'string'}, 'destination': {'type': 'object', 'required': ['key', 'slug', 'title'], 'properties': {'key': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'object', 'required': ['cs', 'en'], 'properties': {'cs': {'type': 'string'}, 'en': {'type': 'string'}}}}}, 'resolved_from': {'type': 'object', 'required': ['asked', 'resort_key', 'resort'], 'properties': {'asked': {'type': 'string'}, 'resort': {'type': ['string', 'null']}, 'resort_key': {'type': 'string'}}, 'description': 'Present when the caller named a RESORT key; the answer is its parent destination.'}}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}}, 'description': 'tool-level failure, returned with isError: true'}]}
输入模式
{'type': 'object', 'properties': {'rail': {'enum': ['flight', 'package'], 'type': 'string', 'description': 'optional: restrict to one rail'}, 'sort': {'enum': ['cheapest_vs_history', 'most_below_median'], 'type': 'string', 'description': "optional (default cheapest_vs_history): 'cheapest_vs_history' ranks by the share of tracked days that were dearer; 'most_below_median' ranks by how far the last measurement sits below the median, relatively"}, 'limit': {'type': 'integer', 'minimum': 0, 'description': "optional (default 10): how many rows to return; 'matched' reports the count before the cap"}, 'party': {'type': 'string', 'description': "optional: '<adults>-<children>', e.g. '2-2' - the same A-C shape the price streams are keyed on"}, 'min_history_days': {'type': 'integer', 'minimum': 0, 'description': "optional (default 30): rails measured for fewer days are listed under 'excluded'"}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['schema', 'generated', 'sort', 'min_history_days', 'matched', 'stale_rails', 'opportunities', 'excluded', 'disclaimer'], 'properties': {'sort': {'enum': ['cheapest_vs_history', 'most_below_median'], 'type': 'string'}, 'schema': {'type': 'string'}, 'license': {'type': 'object', 'required': ['id', 'url', 'attribution'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'attribution': {'type': 'string'}}}, 'matched': {'type': 'integer', 'description': 'rows before the `limit` cap'}, 'currency': {'type': 'string'}, 'excluded': {'type': 'array', 'items': {'type': 'object', 'required': ['destination', 'rail', 'reason', 'history_days'], 'properties': {'rail': {'enum': ['flight', 'package'], 'type': 'string'}, 'reason': {'type': 'string'}, 'resort_key': {'type': 'string'}, 'destination': {'type': 'string'}, 'history_days': {'type': 'integer'}}}}, 'generated': {'type': ['string', 'null'], 'description': 'the OLDEST `generated` among the rows returned'}, 'disclaimer': {'type': 'string'}, 'stale_rails': {'type': 'object', 'required': ['as_of', 'of', 'count', 'keys'], 'properties': {'of': {'type': 'integer'}, 'keys': {'type': 'array', 'items': {'type': 'string'}}, 'as_of': {'type': 'string'}, 'count': {'type': 'integer'}, 'unknown': {'type': 'integer'}}, 'description': 'How many of the rails in scope are past their own freshness boundary on `as_of` (Europe/Prague).'}, 'opportunities': {'type': 'array', 'items': {'type': 'object', 'required': ['destination', 'title', 'url', 'rail', 'party', 'latest', 'median', 'min', 'cheaper_than_pct', 'latest_cheaper_than_pct_of_days', 'is_series_min', 'history_days', 'measured', 'generated'], 'properties': {'min': {'type': ['number', 'null']}, 'url': {'type': 'string'}, 'rail': {'enum': ['flight', 'package'], 'type': 'string'}, 'party': {'type': 'object', 'required': ['adults', 'children'], 'properties': {'adults': {'type': 'integer'}, 'children': {'type': 'integer'}}}, 'title': {'type': 'object', 'required': ['cs', 'en'], 'properties': {'cs': {'type': 'string'}, 'en': {'type': 'string'}}}, 'latest': {'type': ['number', 'null']}, 'median': {'type': ['number', 'null']}, 'resort': {'type': 'string'}, 'measured': {'type': 'object', 'required': ['days', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'days': {'type': 'integer'}, 'from': {'type': 'string'}}}, 'generated': {'type': 'string'}, 'resort_key': {'type': 'string'}, 'destination': {'type': 'string'}, 'history_days': {'type': 'integer'}, 'is_series_min': {'type': 'boolean'}, 'cheaper_than_pct': {'type': ['number', 'null']}, 'latest_stale_after_days': {'type': 'number'}, 'latest_cheaper_than_pct_of_days': {'type': ['number', 'null']}}}}, 'min_history_days': {'type': 'integer'}}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}}, 'description': 'tool-level failure, returned with isError: true'}]}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['schema', 'currency', 'count', 'stale_rails', 'destinations', 'disclaimer'], 'properties': {'count': {'type': 'integer'}, 'schema': {'type': 'string'}, 'license': {'type': 'object', 'required': ['id', 'url', 'attribution'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'attribution': {'type': 'string'}}}, 'currency': {'type': 'string'}, 'disclaimer': {'type': 'string'}, 'stale_rails': {'type': 'object', 'required': ['as_of', 'of', 'count', 'keys'], 'properties': {'of': {'type': 'integer'}, 'keys': {'type': 'array', 'items': {'type': 'string'}}, 'as_of': {'type': 'string'}, 'count': {'type': 'integer'}, 'unknown': {'type': 'integer'}}, 'description': 'How many of the rails in scope are past their own freshness boundary on `as_of` (Europe/Prague).'}, 'destinations': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'slug', 'title', 'url', 'generated', 'rails'], 'properties': {'key': {'type': 'string'}, 'url': {'type': 'string'}, 'slug': {'type': 'string'}, 'rails': {'type': 'array', 'items': {'type': 'object', 'required': ['rail', 'party', 'measured'], 'properties': {'rail': {'enum': ['flight', 'package'], 'type': 'string'}, 'party': {'type': 'object', 'required': ['adults', 'children'], 'properties': {'adults': {'type': 'integer'}, 'children': {'type': 'integer'}}}, 'resort': {'type': 'string'}, 'measured': {'type': 'object', 'required': ['days', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'days': {'type': 'integer'}, 'from': {'type': 'string'}}}, 'resort_key': {'type': 'string'}}}, 'description': "one entry per rail; each carries its own `measured`, which is not the destination's"}, 'title': {'type': 'object', 'required': ['cs', 'en'], 'properties': {'cs': {'type': 'string'}, 'en': {'type': 'string'}}}, 'generated': {'type': 'string'}}}}}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}}, 'description': 'tool-level failure, returned with isError: true'}]}
输入模式
{'type': 'object', 'required': ['destination'], 'properties': {'rail': {'enum': ['flight', 'package'], 'type': 'string', 'description': 'optional: restrict to one rail'}, 'destination': {'type': 'string', 'description': "destination slug, as returned by list_destinations. A RESORT key read off a rail (e.g. 'hurghada') also resolves, to its parent destination, and the answer then carries `resolved_from`; underscores and hyphens are interchangeable."}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['schema', 'generated', 'destination', 'url', 'currency', 'license', 'rails', 'disclaimer'], 'properties': {'url': {'type': 'string'}, 'note': {'type': 'string', 'description': 'present when the `rail` filter matched nothing published for this destination'}, 'rails': {'type': 'array', 'items': {'type': 'object', 'required': ['rail', 'party', 'price_covers', 'measured', 'stats', 'series_sample'], 'properties': {'rail': {'enum': ['flight', 'package'], 'type': 'string'}, 'party': {'type': 'object', 'required': ['adults', 'children'], 'properties': {'adults': {'type': 'integer'}, 'children': {'type': 'integer'}}}, 'stats': {'type': 'object', 'required': ['basis'], 'properties': {'min': {'type': ['number', 'null']}, 'basis': {'type': 'string'}, 'latest': {'type': ['number', 'null']}, 'median': {'type': ['number', 'null']}, 'is_series_max': {'type': 'boolean'}, 'is_series_min': {'type': 'boolean'}, 'cheaper_than_pct': {'type': ['number', 'null']}}}, 'resort': {'type': 'string'}, 'origins': {'type': 'object', 'description': 'departure-airport CLUSTER; covers_all_published_prices is false'}, 'arrivals': {'type': 'object', 'description': 'arrival airports RECORDED; covers_all_published_prices is false'}, 'measured': {'type': 'object', 'required': ['days', 'from', 'to'], 'properties': {'to': {'type': 'string'}, 'days': {'type': 'integer'}, 'from': {'type': 'string'}}}, 'searched': {'type': 'object', 'description': 'the search mode (and fixed dates, where there are any) the series was collected under'}, 'resort_key': {'type': 'string'}, 'price_covers': {'type': 'object', 'description': 'what the money buys - airfare only, or a package as offered'}, 'regime_breaks': {'type': 'array', 'description': '[from, to] date spans where the series was not comparable'}, 'series_sample': {'type': 'object', 'required': ['complete', 'points'], 'properties': {'points': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'cheapest_total'], 'properties': {'date': {'type': 'string'}, 'origin': {'type': 'string'}, 'return': {'type': 'string'}, 'departure': {'type': 'string'}, 'cheapest_total': {'type': 'number'}}}}, 'complete': {'type': 'boolean'}}, 'description': 'a DOWNSAMPLED sample; `complete` says whether it is the whole series'}, 'latest_stale_after_days': {'type': 'number', 'description': "this rail's own freshness boundary, in days after measured.to"}}}}, 'schema': {'type': 'string'}, 'license': {'type': 'object', 'required': ['id', 'url', 'attribution'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'attribution': {'type': 'string'}}}, 'currency': {'type': 'string'}, 'generated': {'type': 'string'}, 'disclaimer': {'type': 'string'}, 'destination': {'type': 'object', 'required': ['key', 'slug', 'title'], 'properties': {'key': {'type': 'string'}, 'slug': {'type': 'string'}, 'title': {'type': 'object', 'required': ['cs', 'en'], 'properties': {'cs': {'type': 'string'}, 'en': {'type': 'string'}}}}}, 'resolved_from': {'type': 'object', 'required': ['asked', 'resort_key', 'resort'], 'properties': {'asked': {'type': 'string'}, 'resort': {'type': ['string', 'null']}, 'resort_key': {'type': 'string'}}, 'description': 'Present when the caller named a RESORT key; the answer is its parent destination.'}}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}}, 'description': 'tool-level failure, returned with isError: true'}]}
近期工具变更
类似的 MCP 服务器
Adsb
Provides live ADS-B aircraft positions, nearby-aircraft searches, callsign and airframe tracking, and military or government airc…
Data Sncf
Provides metadata and queries for SNCF railway and transportation open-data datasets.
Mobility Database
Searches MobilityData's catalogue of public-transport GTFS and GTFS-Realtime feeds and returns operator, coverage, licensing and …
Luxembourg MCP
Provides official Luxembourg public data covering geocoding, mobility, transport, parking, weather, utilities, housing, demograph…
site
Provides searchable flight-delay data, dataset comparisons and statistics, provenance information, and a human-provider enquiry h…
Gachi Data API — Japan Station & Accessibility Data
Provides Japanese station discovery, accessibility and public-toilet information, train statuses, municipal context, hazard data,…
HotelRefund Price Tracker
Finds Agoda hotel catalog entries, tracks hotel prices over time, reports deals and price history, and provides refund guidance.
travel-trends-mcp
Assesses travel disruption risk, lists monitored events, provides EU tourism statistics, and supports ongoing trip monitoring.