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일 2:40 AM
추가됨
aircraft_price
2026년 9월 30일 2:40 AM
추가됨
aircraft_catalog
2026년 9월 30일 2:40 AM
추가됨
historical_airlines
2026년 9월 30일 2:40 AM
추가됨
world_standings
2026년 9월 30일 2:40 AM
추가됨
get_world
2026년 9월 30일 2:40 AM
추가됨
list_worlds
2026년 9월 30일 2:40 AM