MCP 服务器

Jetopolis

app.jetopolis/game
游戏 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Provides data and guidance for the Jetopolis airline strategy game, including worlds, standings, aircraft, historical airlines and aircraft prices.

aircraft_catalog
Aircraft catalog
Aircraft types of the game catalog: seats in two classes, range, cruise speed, required runway, entry into service and end of production, and the list price in millions of US dollars of the entry-into-service year. With year, only types already flying that year are returned and availabilityInYear says whether they are sold new or only on the used market.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'lang': {'type': 'string', 'maxLength': 10, 'description': 'Language for the human-readable labels next to keys, one of the 25 game locales (en, ru, de, fr, es, ja, zh-CN and others); unknown values fall back to English'}, 'year': {'type': 'integer', 'maximum': 2030, 'minimum': 1950, 'description': 'Only aircraft already in service in this year; also fills availabilityInYear'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 150, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'Substring of the model name or id, case-insensitive (A320, 747, dc-3)'}, 'category': {'enum': ['PISTON', 'TURBOPROP', 'NARROWBODY', 'WIDEBODY', 'JUMBO', 'SST', 'REGIONAL_JET'], 'type': 'string'}, 'manufacturer': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'Substring, case-insensitive'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['total', 'aircraft'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'aircraft': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'manufacturer', 'model', 'category', 'categoryName', 'family', 'eisYear', 'eisPlanned', 'eopYear', 'seats', 'rangeKm', 'cruiseKmh', 'runwayRequiredM', 'listPriceUsdMlnAtEis', 'priceEstimated', 'availabilityInYear'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'model': {'type': 'string'}, 'seats': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'family': {'type': 'string'}, 'eisYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eopYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'rangeKm': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'category': {'enum': ['PISTON', 'TURBOPROP', 'NARROWBODY', 'WIDEBODY', 'JUMBO', 'SST', 'REGIONAL_JET'], 'type': 'string'}, 'cruiseKmh': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eisPlanned': {'type': 'boolean'}, 'categoryName': {'type': 'string'}, 'manufacturer': {'type': 'string'}, 'priceEstimated': {'type': 'boolean'}, 'runwayRequiredM': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'availabilityInYear': {'anyOf': [{'enum': ['new', 'used-only'], 'type': 'string'}, {'type': 'null'}]}, 'listPriceUsdMlnAtEis': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
aircraft_price
Aircraft price in a game year
In-game catalogue price of a new aircraft in a given year: the entry-into-service price inflated by US CPI to nominal dollars of that year, and the same price in 2024 dollars. Accepts an id from aircraft_catalog or part of the name; when several types match and the year does not settle it, returns candidates to choose from.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['model', 'year'], 'properties': {'year': {'type': 'integer', 'maximum': 2030, 'minimum': 1950, 'description': 'Game year to price the aircraft in'}, 'model': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'Aircraft id from aircraft_catalog (a320-200) or part of its name (A320, 747-400)'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['year', 'match', 'candidates', 'note'], 'properties': {'note': {'type': 'string'}, 'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'match': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'eisYear', 'eopYear', 'eisPlanned', 'listPriceUsdMlnAtEis', 'priceUsdMlnNominal', 'priceUsdMln2024', 'priceEstimated', 'availability'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'eisYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eopYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eisPlanned': {'type': 'boolean'}, 'availability': {'enum': ['not-yet', 'new', 'used-only'], 'type': 'string'}, 'priceEstimated': {'type': 'boolean'}, 'priceUsdMln2024': {'type': 'number'}, 'priceUsdMlnNominal': {'type': ['number', 'null']}, 'listPriceUsdMlnAtEis': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'eisYear', 'eopYear'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'eisYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eopYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}}, 'additionalProperties': False}
get_world
One world
One Jetopolis world by id: the same card as in list_worlds plus finishedAt for a world that has ended.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['worldId'], 'properties': {'lang': {'type': 'string', 'maxLength': 10, 'description': 'Language for the human-readable labels next to keys, one of the 25 game locales (en, ru, de, fr, es, ja, zh-CN and others); unknown values fall back to English'}, 'worldId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'World id from list_worlds'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'name', 'type', 'typeName', 'region', 'startYear', 'endYear', 'tickMinutes', 'gameDate', 'year', 'era', 'eraName', 'status', 'players', 'maxPlayers', 'active24h', 'url', 'finishedAt'], 'properties': {'id': {'type': 'string'}, 'era': {'type': 'string'}, 'url': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'enum': ['BLITZ', 'STANDARD', 'ENDLESS', 'PRIVATE'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'region': {'enum': ['wnam', 'enam', 'weur', 'eeur', 'apac-ne', 'apac-se', 'oc'], 'type': 'string'}, 'status': {'type': 'string'}, 'endYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eraName': {'type': 'string'}, 'players': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'gameDate': {'type': 'string'}, 'typeName': {'type': 'string'}, 'active24h': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'startYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'finishedAt': {'type': ['string', 'null']}, 'maxPlayers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'tickMinutes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}
historical_airlines
Historical airlines of a year
Real airlines that operated in a given year (1950-2030) as the game knows them: name, IATA code when reliably known, home country and region, type, years of operation, and the countries each one served that year. Network data has decade precision: a country listed for the 1960s may have been added mid-decade. servedCountries lists destinations from home; when networkKnown is false only the home country is known. Sorted by the airline size in the dataset.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['year'], 'properties': {'kind': {'enum': ['flag', 'major', 'regional', 'lowcost', 'charter'], 'type': 'string', 'description': 'flag carrier, major, regional, low-cost or charter'}, 'year': {'type': 'integer', 'maximum': 2030, 'minimum': 1950, 'description': 'Calendar year, 1950-2030'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'At most this many airlines'}, 'region': {'enum': ['wnam', 'enam', 'weur', 'eeur', 'apac-ne', 'apac-se', 'oc'], 'type': 'string', 'description': 'Game region of the airline base'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': 'Home country of the airline, ISO 3166-1 alpha-2 (GB, US, FR)'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['year', 'total', 'airlines'], 'properties': {'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'airlines': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'code', 'country', 'region', 'kind', 'since', 'until', 'servedCountries', 'confidence', 'networkKnown'], 'properties': {'id': {'type': 'string'}, 'code': {'type': ['string', 'null']}, 'kind': {'enum': ['flag', 'major', 'regional', 'lowcost', 'charter'], 'type': 'string'}, 'name': {'type': 'string'}, 'since': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'until': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'region': {'enum': ['wnam', 'enam', 'weur', 'eeur', 'apac-ne', 'apac-se', 'oc'], 'type': 'string'}, 'country': {'type': 'string'}, 'confidence': {'anyOf': [{'enum': ['high', 'medium', 'low'], 'type': 'string'}, {'type': 'null'}]}, 'networkKnown': {'type': 'boolean'}, 'servedCountries': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}
how_to_start
How to start playing
How to start playing Jetopolis: the steps from the first click to the first route, the world pace and links to the game and its guides. English or Russian.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'lang': {'enum': ['en', 'ru'], 'type': 'string', 'default': 'en'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lang', 'title', 'pitch', 'steps', 'links', 'facts'], 'properties': {'lang': {'enum': ['en', 'ru'], 'type': 'string'}, 'facts': {'type': 'object', 'required': ['worldPace', 'guest'], 'properties': {'guest': {'type': 'string'}, 'worldPace': {'type': 'string'}}, 'additionalProperties': False}, 'links': {'type': 'object', 'required': ['play', 'lobby', 'guides'], 'properties': {'play': {'type': 'string'}, 'lobby': {'type': 'string'}, 'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'pitch': {'type': 'string'}, 'steps': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}}, 'additionalProperties': False}
list_worlds
Live worlds
Public Jetopolis worlds open right now: name, server region, pace (Standard: 1 game day = 20 real minutes, Blitz: 5), start and end year, current game date and era, players and seats, players active in the last 24 hours, and a link to open the world. Worlds never pause.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'lang': {'type': 'string', 'maxLength': 10, 'description': 'Language for the human-readable labels next to keys, one of the 25 game locales (en, ru, de, fr, es, ja, zh-CN and others); unknown values fall back to English'}, 'type': {'enum': ['BLITZ', 'STANDARD', 'ENDLESS', 'PRIVATE'], 'type': 'string', 'description': 'STANDARD: 1 game day = 20 min, BLITZ: 5 min'}, 'region': {'enum': ['wnam', 'enam', 'weur', 'eeur', 'apac-ne', 'apac-se', 'oc'], 'type': 'string', 'description': 'Server region of the world'}, 'status': {'enum': ['RUNNING', 'FINALE', 'FINISHED'], 'type': 'string'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['asOf', 'worlds'], 'properties': {'asOf': {'type': 'string'}, 'worlds': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'type', 'typeName', 'region', 'startYear', 'endYear', 'tickMinutes', 'gameDate', 'year', 'era', 'eraName', 'status', 'players', 'maxPlayers', 'active24h', 'url'], 'properties': {'id': {'type': 'string'}, 'era': {'type': 'string'}, 'url': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'enum': ['BLITZ', 'STANDARD', 'ENDLESS', 'PRIVATE'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'region': {'enum': ['wnam', 'enam', 'weur', 'eeur', 'apac-ne', 'apac-se', 'oc'], 'type': 'string'}, 'status': {'type': 'string'}, 'endYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eraName': {'type': 'string'}, 'players': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'gameDate': {'type': 'string'}, 'typeName': {'type': 'string'}, 'active24h': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'startYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'maxPlayers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'tickMinutes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}}, 'additionalProperties': False}
world_standings
World leaders
Player airlines of a world ranked by rating: airline name and two-letter code, home base, rating, aircraft in service, open routes, founding date, status and a link to the public airline card. Updated once per game day of that world. Cash, fares and profit are private to each player and are never returned.
只读 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['worldId'], 'properties': {'lang': {'type': 'string', 'maxLength': 10, 'description': 'Language for the human-readable labels next to keys, one of the 25 game locales (en, ru, de, fr, es, ja, zh-CN and others); unknown values fall back to English'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'worldId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'World id from list_worlds'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['world', 'gameDate', 'asOf', 'standings'], 'properties': {'asOf': {'type': 'string'}, 'world': {'type': 'object', 'required': ['id', 'name', 'type', 'typeName', 'region', 'startYear', 'endYear', 'tickMinutes', 'gameDate', 'year', 'era', 'eraName', 'status', 'players', 'maxPlayers', 'active24h', 'url', 'finishedAt'], 'properties': {'id': {'type': 'string'}, 'era': {'type': 'string'}, 'url': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'enum': ['BLITZ', 'STANDARD', 'ENDLESS', 'PRIVATE'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'region': {'enum': ['wnam', 'enam', 'weur', 'eeur', 'apac-ne', 'apac-se', 'oc'], 'type': 'string'}, 'status': {'type': 'string'}, 'endYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'eraName': {'type': 'string'}, 'players': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'gameDate': {'type': 'string'}, 'typeName': {'type': 'string'}, 'active24h': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'startYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'finishedAt': {'type': ['string', 'null']}, 'maxPlayers': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'tickMinutes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, 'gameDate': {'type': 'string'}, 'standings': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'name', 'code', 'hqIata', 'hqName', 'rating', 'fleet', 'routes', 'foundedOn', 'status', 'cardUrl'], 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'rank': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'fleet': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'hqIata': {'type': 'string'}, 'hqName': {'type': 'string'}, 'rating': {'type': 'number'}, 'routes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'status': {'type': 'string'}, 'cardUrl': {'type': 'string'}, 'foundedOn': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
已添加
how_to_start
2026年9月30日 02:40
已添加
aircraft_price
2026年9月30日 02:40
已添加
aircraft_catalog
2026年9月30日 02:40
已添加
historical_airlines
2026年9月30日 02:40
已添加
world_standings
2026年9月30日 02:40
已添加
get_world
2026年9月30日 02:40
已添加
list_worlds
2026年9月30日 02:40