ourairports-mcp-server
이 MCP로 할 수 있는 일
Provides offline airport, runway, navigation-aid, frequency, and location reference data from OurAirports.
도구
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['latitude', 'longitude'], 'properties': {'type': {'enum': ['large_airport', 'medium_airport', 'small_airport', 'heliport', 'seaplane_base', 'balloonport', 'closed'], 'type': 'string', 'description': 'Restrict to one airport type (e.g. large_airport for major fields only).'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum airports to return (1â\x80\x9350). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).'}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Query point latitude in decimal degrees (WGS84), â\x88\x9290 to 90.'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Query point longitude in decimal degrees (WGS84), â\x88\x92180 to 180.'}, 'radius_km': {'type': 'number', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Search radius in kilometers (1â\x80\x93500). Defaults to 100.'}, 'include_closed': {'type': 'boolean', 'default': False, 'description': 'Include airports of type "closed". Off by default.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['airports', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit that was applied. Present only when results were truncated.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of airports returned. Present only when results were truncated.'}, 'notice': {'type': 'string', 'description': 'Guidance when no airport fell within the radius or results were capped â\x80\x94 how to widen or narrow.'}, 'airports': {'type': 'array', 'items': {'type': 'object', 'required': ['airport', 'distanceKm', 'bearingDeg'], 'properties': {'airport': {'type': 'object', 'required': ['id', 'ident', 'type', 'name', 'latitudeDeg', 'longitudeDeg', 'elevationFt', 'continent', 'isoCountry', 'countryName', 'isoRegion', 'regionName', 'municipality', 'scheduledService', 'icaoCode', 'iataCode', 'gpsCode', 'localCode'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports internal integer id (the join key for runways/frequencies).'}, 'name': {'type': 'string', 'description': 'Airport name.'}, 'type': {'type': 'string', 'description': 'Airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.'}, 'ident': {'type': 'string', 'description': 'OurAirports universal identifier â\x80\x94 globally unique; often equals the ICAO or GPS code.'}, 'gpsCode': {'type': ['string', 'null'], 'description': 'GPS code, or null.'}, 'iataCode': {'type': ['string', 'null'], 'description': '3-letter IATA code, or null when the airport has none (~89% of fields).'}, 'icaoCode': {'type': ['string', 'null'], 'description': '4-letter ICAO code, or null when the airport has none (~88% of fields).'}, 'continent': {'type': ['string', 'null'], 'description': 'Two-letter continent code (AF, AN, AS, EU, NA, OC, SA), or null.'}, 'isoRegion': {'type': ['string', 'null'], 'description': 'ISO 3166-2 region code (e.g. US-WA), or null.'}, 'localCode': {'type': ['string', 'null'], 'description': 'National/local code (e.g. FAA LID), or null.'}, 'isoCountry': {'type': ['string', 'null'], 'description': 'ISO 3166-1 alpha-2 country code, or null.'}, 'regionName': {'type': ['string', 'null'], 'description': 'Resolved region name, or null when the region code is unknown.'}, 'countryName': {'type': ['string', 'null'], 'description': 'Resolved country name, or null when the country code is unknown.'}, 'elevationFt': {'type': ['number', 'null'], 'description': 'Field elevation in feet, or null when unknown.'}, 'latitudeDeg': {'type': 'number', 'description': 'Latitude in decimal degrees (WGS84).'}, 'longitudeDeg': {'type': 'number', 'description': 'Longitude in decimal degrees (WGS84).'}, 'municipality': {'type': ['string', 'null'], 'description': 'Served municipality, or null.'}, 'scheduledService': {'type': 'boolean', 'description': 'True when the airport has scheduled airline service.'}}, 'description': 'The airport record. Codes the airport lacks are null.', 'additionalProperties': False}, 'bearingDeg': {'type': 'number', 'description': 'Initial bearing from the query point in degrees true (0â\x80\x93360, clockwise from north).'}, 'distanceKm': {'type': 'number', 'description': 'Great-circle distance from the query point in kilometers.'}}, 'description': 'An airport with its great-circle distance and bearing from the query point.', 'additionalProperties': False}, 'description': 'Airports within the radius, nearest-first.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true only when more airports matched than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Airports within the radius that pass the type and include_closed filters, counted before the limit was applied.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'enum': ['NDB', 'VOR-DME', 'VORTAC', 'TACAN', 'VOR', 'DME', 'NDB-DME'], 'type': 'string', 'description': 'Restrict to one navaid type: NDB, VOR-DME, VORTAC, TACAN, VOR, DME, or NDB-DME.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum navaids to return (1â\x80\x9350). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).'}, 'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Coordinate mode: query point latitude (â\x88\x9290 to 90). Provide with longitude; mutually exclusive with airport_code.'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Coordinate mode: query point longitude (â\x88\x92180 to 180). Provide with latitude.'}, 'radius_km': {'type': 'number', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Coordinate mode: search radius in kilometers (1â\x80\x93500). Defaults to 100. Ignored in airport mode.'}, 'airport_code': {'type': 'string', 'minLength': 1, 'description': 'Airport mode: any airport code (IATA/ICAO/GPS/local/ident); returns the navaids serving that airport. Case-insensitive; surrounding whitespace is ignored. Mutually exclusive with latitude/longitude.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mode', 'airportIdent', 'navaids', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit that was applied. Present only when results were truncated.'}, 'mode': {'enum': ['coordinate', 'airport'], 'type': 'string', 'description': 'Which query mode was used.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['mode_conflict', 'unknown_code'], 'description': 'Machine-readable failure mode. Declared by this tool: `mode_conflict`: Both coordinate (latitude/longitude) and airport_code were supplied, or neither was. `unknown_code`: airport_code did not match any airport in any identifier space. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of navaids returned. Present only when results were truncated.'}, 'notice': {'type': 'string', 'description': 'Guidance when no navaids matched (empty radius, or airport found but unserved) or results were capped â\x80\x94 how to widen or narrow.'}, 'navaids': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'ident', 'name', 'type', 'frequencyKhz', 'frequencyMhz', 'latitudeDeg', 'longitudeDeg', 'elevationFt', 'isoCountry', 'dmeChannel', 'dmeFrequencyKhz', 'usageType', 'power', 'magneticVariationDeg', 'slavedVariationDeg', 'associatedAirport', 'distanceKm', 'bearingDeg'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports navaid id.'}, 'name': {'type': 'string', 'description': 'Navaid name.'}, 'type': {'type': 'string', 'description': 'Navaid type: NDB, VOR-DME, VORTAC, TACAN, VOR, DME, or NDB-DME.'}, 'ident': {'type': 'string', 'description': 'Navaid identifier (e.g. SEA).'}, 'power': {'type': ['string', 'null'], 'description': 'Transmitter power class as recorded upstream: HIGH, MEDIUM, LOW, or UNKNOWN. Null when not recorded.'}, 'usageType': {'type': ['string', 'null'], 'description': 'Service-volume class as recorded upstream: HI, LO, BOTH, TERMINAL, or RNAV. Null when not recorded.'}, 'bearingDeg': {'type': ['number', 'null'], 'description': 'Bearing from the query point in degrees true (coordinate mode); null in airport mode.'}, 'distanceKm': {'type': ['number', 'null'], 'description': 'Great-circle distance from the query point in km (coordinate mode); null in airport mode.'}, 'dmeChannel': {'type': ['string', 'null'], 'description': 'DME channel (e.g. 115X), or null.'}, 'isoCountry': {'type': ['string', 'null'], 'description': 'ISO 3166-1 alpha-2 country code, or null.'}, 'elevationFt': {'type': ['number', 'null'], 'description': 'Elevation in feet, or null when unknown.'}, 'latitudeDeg': {'type': 'number', 'description': 'Latitude in decimal degrees (WGS84).'}, 'frequencyKhz': {'type': ['number', 'null'], 'description': 'Frequency in kHz as stored upstream for every type. NDB and NDB-DME are tuned on this value directly; VOR and VOR-DME carry their VHF frequency and DME, TACAN, and VORTAC their paired VHF frequency (VOR 114.5 MHz is stored as 114500). Null when unknown.'}, 'frequencyMhz': {'type': ['number', 'null'], 'description': 'frequencyKhz / 1000 for VOR and VOR-DME (the VHF frequency) and for DME, TACAN, and VORTAC (the paired VHF frequency, which for some TACAN channels lies above 118 MHz). Null for NDB and NDB-DME, which are tuned in kHz, and when the frequency is unknown.'}, 'longitudeDeg': {'type': 'number', 'description': 'Longitude in decimal degrees (WGS84).'}, 'dmeFrequencyKhz': {'type': ['number', 'null'], 'description': 'Paired VHF frequency of the DME or TACAN component in kHz (divide by 1000 for MHz), on every type that has one â\x80\x94 including NDB-DME, where it differs from frequencyKhz. Null when the navaid has no DME component recorded.'}, 'associatedAirport': {'type': ['string', 'null'], 'description': 'Ident of the airport this navaid serves, or null for standalone enroute navaids.'}, 'slavedVariationDeg': {'type': ['number', 'null'], 'description': 'Magnetic variation built into the radials of a VOR, VOR-DME, VORTAC, or TACAN in degrees, positive east â\x80\x94 the reference radials are measured from, which can differ from magneticVariationDeg. Null when not recorded.'}, 'magneticVariationDeg': {'type': ['number', 'null'], 'description': 'Actual magnetic variation at the navaid site in degrees, positive east. Null when not recorded.'}}, 'description': 'A navaid with its frequency (kHz, plus MHz where the type has a VHF frequency), type, position, DME pairing, service volume, power, magnetic variation, and â\x80\x94 in coordinate mode â\x80\x94 distance and bearing from the query point.', 'additionalProperties': False}, 'description': 'Matching navaids. Nearest-first in coordinate mode; in airport-association order in airport mode.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true only when more navaids matched than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Navaids matched before the limit was applied: in-radius navaids passing the type filter (coordinate mode), or navaids associated with the airport passing the type filter (airport mode).'}, 'airportIdent': {'type': ['string', 'null'], 'description': 'In airport mode, the resolved airport ident the navaids were matched against; null in coordinate mode.'}, 'resolutionNote': {'type': 'string', 'description': "Airport mode, present only when airport_code is also a code of other airports: the identifier space that matched, why this airport won, and each other airport's ident, country, and code space."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['code'], 'properties': {'code': {'type': 'string', 'minLength': 1, 'description': 'Any airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive; surrounding whitespace is ignored.'}, 'include': {'type': 'array', 'items': {'enum': ['runways', 'frequencies'], 'type': 'string'}, 'default': ['runways', 'frequencies'], 'description': 'Which related records to include inline. Defaults to both. Pass a subset to trim the response.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['airport', 'resolvedVia', 'resolutionNote', 'included', 'runways', 'frequencies']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['unknown_code'], 'description': 'Machine-readable failure mode. Declared by this tool: `unknown_code`: No airport matched the supplied code in any identifier space (IATA/ICAO/GPS/local/ident). Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'airport': {'type': 'object', 'required': ['id', 'ident', 'type', 'name', 'latitudeDeg', 'longitudeDeg', 'elevationFt', 'continent', 'isoCountry', 'countryName', 'isoRegion', 'regionName', 'municipality', 'scheduledService', 'icaoCode', 'iataCode', 'gpsCode', 'localCode'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports internal integer id (the join key for runways/frequencies).'}, 'name': {'type': 'string', 'description': 'Airport name.'}, 'type': {'type': 'string', 'description': 'Airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.'}, 'ident': {'type': 'string', 'description': 'OurAirports universal identifier â\x80\x94 globally unique; often equals the ICAO or GPS code.'}, 'gpsCode': {'type': ['string', 'null'], 'description': 'GPS code, or null.'}, 'iataCode': {'type': ['string', 'null'], 'description': '3-letter IATA code, or null when the airport has none (~89% of fields).'}, 'icaoCode': {'type': ['string', 'null'], 'description': '4-letter ICAO code, or null when the airport has none (~88% of fields).'}, 'continent': {'type': ['string', 'null'], 'description': 'Two-letter continent code (AF, AN, AS, EU, NA, OC, SA), or null.'}, 'isoRegion': {'type': ['string', 'null'], 'description': 'ISO 3166-2 region code (e.g. US-WA), or null.'}, 'localCode': {'type': ['string', 'null'], 'description': 'National/local code (e.g. FAA LID), or null.'}, 'isoCountry': {'type': ['string', 'null'], 'description': 'ISO 3166-1 alpha-2 country code, or null.'}, 'regionName': {'type': ['string', 'null'], 'description': 'Resolved region name, or null when the region code is unknown.'}, 'countryName': {'type': ['string', 'null'], 'description': 'Resolved country name, or null when the country code is unknown.'}, 'elevationFt': {'type': ['number', 'null'], 'description': 'Field elevation in feet, or null when unknown.'}, 'latitudeDeg': {'type': 'number', 'description': 'Latitude in decimal degrees (WGS84).'}, 'longitudeDeg': {'type': 'number', 'description': 'Longitude in decimal degrees (WGS84).'}, 'municipality': {'type': ['string', 'null'], 'description': 'Served municipality, or null.'}, 'scheduledService': {'type': 'boolean', 'description': 'True when the airport has scheduled airline service.'}}, 'description': 'The resolved airport record. Codes the airport lacks are null.', 'additionalProperties': False}, 'runways': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'lengthFt', 'widthFt', 'surface', 'lighted', 'closed', 'leIdent', 'leHeadingDegT', 'leDisplacedThresholdFt', 'heIdent', 'heHeadingDegT', 'heDisplacedThresholdFt'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports runway id.'}, 'closed': {'type': 'boolean', 'description': 'True when the runway is closed.'}, 'heIdent': {'type': ['string', 'null'], 'description': 'High-end runway designator (e.g. 34R), or null.'}, 'leIdent': {'type': ['string', 'null'], 'description': 'Low-end runway designator (e.g. 16L), or null.'}, 'lighted': {'type': 'boolean', 'description': 'True when the runway is lighted.'}, 'surface': {'type': ['string', 'null'], 'description': 'Surface material as recorded upstream (free text, e.g. ASP, CON, GRS), or null.'}, 'widthFt': {'type': ['number', 'null'], 'description': 'Runway width in feet, or null when unknown.'}, 'lengthFt': {'type': ['number', 'null'], 'description': 'Length of the full runway surface in feet, including displaced thresholds and overrun areas â\x80\x94 not the usable takeoff or landing distance. Null when unknown.'}, 'heHeadingDegT': {'type': ['number', 'null'], 'description': 'High-end true heading in degrees, or null.'}, 'leHeadingDegT': {'type': ['number', 'null'], 'description': 'Low-end true heading in degrees, or null.'}, 'heDisplacedThresholdFt': {'type': ['number', 'null'], 'description': 'Length of the displaced threshold at the high end (heIdent) in feet â\x80\x94 part of lengthFt. Null when none is recorded.'}, 'leDisplacedThresholdFt': {'type': ['number', 'null'], 'description': 'Length of the displaced threshold at the low end (leIdent) in feet â\x80\x94 part of lengthFt. Null when none is recorded.'}}, 'description': 'A runway with full-surface dimensions, surface, lighting, and per-end designators, headings, and displaced thresholds.', 'additionalProperties': False}, 'description': 'Runways for the airport. Empty when the airport has none OR when `runways` was not in `include` â\x80\x94 check `included` to tell which.'}, 'included': {'type': 'array', 'items': {'enum': ['runways', 'frequencies'], 'type': 'string'}, 'description': 'Which related-record sets this response carries, echoing the effective `include` selection. A relation NOT listed here was omitted by `include` (its array is empty for that reason); a listed relation with an empty array genuinely has no records.'}, 'frequencies': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'description', 'frequencyMhz'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports frequency id.'}, 'type': {'type': 'string', 'description': 'Frequency type/role (e.g. TWR, GND, ATIS, APP) as recorded upstream.'}, 'description': {'type': ['string', 'null'], 'description': 'Human-readable description, or null.'}, 'frequencyMhz': {'type': ['number', 'null'], 'description': 'Radio frequency in MHz (e.g. 122.9), or null when unknown.'}}, 'description': 'An airport radio frequency (tower, ground, ATIS, etc.) in MHz.', 'additionalProperties': False}, 'description': 'Radio frequencies in MHz. Empty when the airport has none OR when `frequencies` was not in `include` â\x80\x94 check `included` to tell which.'}, 'resolvedVia': {'type': 'string', 'description': 'Which identifier space the code matched: ident, icao_code, iata_code, gps_code, or local_code.'}, 'resolutionNote': {'type': 'string', 'description': "How the code resolved: the identifier space that matched and, when other airports carry the same code, why this one won (resolution priority or dataset row order) and each other airport's ident, country, and code space â\x80\x94 pass that ident to fetch it."}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'continent': {'enum': ['AF', 'AN', 'AS', 'EU', 'NA', 'OC', 'SA'], 'type': 'string', 'description': 'Restrict to one continent: AF (Africa), AN (Antarctica), AS (Asia), EU (Europe), NA (North America), OC (Oceania), SA (South America).'}, 'include_regions': {'type': 'boolean', 'default': False, 'description': "When true, nest each country's ISO 3166-2 regions (with airport counts) under it. Off by default to keep the response compact."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['countries', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Guidance when the continent filter matched no countries.'}, 'countries': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'name', 'continent', 'airportCount'], 'properties': {'code': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code (the value to pass as `country` to ourairports_search_airports).'}, 'name': {'type': 'string', 'description': 'Country name.'}, 'regions': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'name', 'airportCount'], 'properties': {'code': {'type': 'string', 'description': 'ISO 3166-2 region code (e.g. US-WA).'}, 'name': {'type': 'string', 'description': 'Region name.'}, 'airportCount': {'type': 'number', 'description': 'Number of non-closed airports in the region.'}}, 'description': 'A region within a country, with its non-closed airport count.', 'additionalProperties': False}, 'description': 'Regions within the country with airport counts. Present only when include_regions is true.'}, 'continent': {'type': ['string', 'null'], 'description': 'Two-letter continent code (AF, AN, AS, EU, NA, OC, SA), or null.'}, 'airportCount': {'type': 'number', 'description': 'Number of non-closed airports in the country.'}}, 'description': 'A country present in the dataset, with its non-closed airport count and ISO code.', 'additionalProperties': False}, 'description': 'Countries present in the dataset, sorted by name.'}, 'totalCount': {'type': 'number', 'description': 'Number of countries returned.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'enum': ['large_airport', 'medium_airport', 'small_airport', 'heliport', 'seaplane_base', 'balloonport', 'closed'], 'type': 'string', 'description': 'Restrict to one airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum airports to return (1â\x80\x93100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).'}, 'query': {'type': 'string', 'description': 'Free-text search over airport name, municipality, and keywords. Tokens are AND-matched. Omit to browse purely by facets.'}, 'region': {'type': 'string', 'minLength': 1, 'description': 'ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored.'}, 'country': {'type': 'string', 'minLength': 1, 'description': 'ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match, case-insensitive; surrounding whitespace is ignored. Discover codes with ourairports_list_countries.'}, 'include_closed': {'type': 'boolean', 'default': False, 'description': 'Include airports of type "closed". Off by default â\x80\x94 closed airports pollute the live-flight grounding use case.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['airports', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit that was applied. Present only when results were truncated.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of airports returned. Present only when results were truncated.'}, 'notice': {'type': 'string', 'description': 'Guidance when nothing matched or results were capped â\x80\x94 how to broaden or narrow.'}, 'airports': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'ident', 'type', 'name', 'latitudeDeg', 'longitudeDeg', 'elevationFt', 'continent', 'isoCountry', 'countryName', 'isoRegion', 'regionName', 'municipality', 'scheduledService', 'icaoCode', 'iataCode', 'gpsCode', 'localCode'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports internal integer id (the join key for runways/frequencies).'}, 'name': {'type': 'string', 'description': 'Airport name.'}, 'type': {'type': 'string', 'description': 'Airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.'}, 'ident': {'type': 'string', 'description': 'OurAirports universal identifier â\x80\x94 globally unique; often equals the ICAO or GPS code.'}, 'gpsCode': {'type': ['string', 'null'], 'description': 'GPS code, or null.'}, 'iataCode': {'type': ['string', 'null'], 'description': '3-letter IATA code, or null when the airport has none (~89% of fields).'}, 'icaoCode': {'type': ['string', 'null'], 'description': '4-letter ICAO code, or null when the airport has none (~88% of fields).'}, 'continent': {'type': ['string', 'null'], 'description': 'Two-letter continent code (AF, AN, AS, EU, NA, OC, SA), or null.'}, 'isoRegion': {'type': ['string', 'null'], 'description': 'ISO 3166-2 region code (e.g. US-WA), or null.'}, 'localCode': {'type': ['string', 'null'], 'description': 'National/local code (e.g. FAA LID), or null.'}, 'isoCountry': {'type': ['string', 'null'], 'description': 'ISO 3166-1 alpha-2 country code, or null.'}, 'regionName': {'type': ['string', 'null'], 'description': 'Resolved region name, or null when the region code is unknown.'}, 'countryName': {'type': ['string', 'null'], 'description': 'Resolved country name, or null when the country code is unknown.'}, 'elevationFt': {'type': ['number', 'null'], 'description': 'Field elevation in feet, or null when unknown.'}, 'latitudeDeg': {'type': 'number', 'description': 'Latitude in decimal degrees (WGS84).'}, 'longitudeDeg': {'type': 'number', 'description': 'Longitude in decimal degrees (WGS84).'}, 'municipality': {'type': ['string', 'null'], 'description': 'Served municipality, or null.'}, 'scheduledService': {'type': 'boolean', 'description': 'True when the airport has scheduled airline service.'}}, 'description': 'An airport summary with its full (sparse) code set and coordinates.', 'additionalProperties': False}, 'description': 'Matching airports, ranked best-first. Codes the airport lacks are null.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true only when more airports matched than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Total airports matched before the limit was applied.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'enum': ['large_airport', 'medium_airport', 'small_airport', 'heliport', 'seaplane_base', 'balloonport', 'closed'], 'type': 'string', 'description': 'Restrict to runways at airports of one type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum runway rows to return (1â\x80\x93100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).'}, 'region': {'type': 'string', 'minLength': 1, 'description': 'ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored.'}, 'country': {'type': 'string', 'minLength': 1, 'description': 'ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match, case-insensitive; surrounding whitespace is ignored. Discover codes with ourairports_list_countries.'}, 'lighted': {'type': 'boolean', 'description': 'Filter by runway lighting: true for lighted runways only, false for unlighted only. Omit to include both.'}, 'surface': {'type': 'string', 'minLength': 1, 'description': 'Surface filter â\x80\x94 case-insensitive substring match against the raw upstream surface string (free text, no controlled vocabulary; ~654 distinct values). Match the literal text as recorded: "asp" matches ASP/ASPH/Asphalt/ASPH-G, "con" matches CON/Concrete, "turf" or "grs" for grass strips. A shorter fragment matches more variants; there is no enum or reference tool for surfaces.'}, 'min_width_ft': {'type': 'number', 'minimum': 0, 'description': 'Minimum runway width in feet (inclusive). Runways with an unknown width are excluded when this is set, never assumed to pass.'}, 'min_length_ft': {'type': 'number', 'minimum': 0, 'description': 'Minimum length of the full runway surface in feet (inclusive), matched against lengthFt â\x80\x94 which includes displaced thresholds and overruns, so this is not a usable-distance filter. Runways with an unknown length are excluded when this is set, never assumed to pass.'}, 'include_closed_runways': {'type': 'boolean', 'default': False, 'description': 'Include runways flagged closed. Off by default.'}, 'include_closed_airports': {'type': 'boolean', 'default': False, 'description': 'Include runways at airports of type "closed". Off by default.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['runways', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit that was applied. Present only when results were truncated.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of runway rows returned. Present only when results were truncated.'}, 'notice': {'type': 'string', 'description': 'Guidance when nothing matched or results were capped â\x80\x94 how to broaden or narrow.'}, 'runways': {'type': 'array', 'items': {'type': 'object', 'required': ['airport', 'runway'], 'properties': {'runway': {'type': 'object', 'required': ['id', 'lengthFt', 'widthFt', 'surface', 'lighted', 'closed', 'leIdent', 'leHeadingDegT', 'leDisplacedThresholdFt', 'heIdent', 'heHeadingDegT', 'heDisplacedThresholdFt'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports runway id.'}, 'closed': {'type': 'boolean', 'description': 'True when the runway is closed.'}, 'heIdent': {'type': ['string', 'null'], 'description': 'High-end runway designator (e.g. 34R), or null.'}, 'leIdent': {'type': ['string', 'null'], 'description': 'Low-end runway designator (e.g. 16L), or null.'}, 'lighted': {'type': 'boolean', 'description': 'True when the runway is lighted.'}, 'surface': {'type': ['string', 'null'], 'description': 'Surface material as recorded upstream (free text, e.g. ASP, CON, GRS), or null.'}, 'widthFt': {'type': ['number', 'null'], 'description': 'Runway width in feet, or null when unknown.'}, 'lengthFt': {'type': ['number', 'null'], 'description': 'Length of the full runway surface in feet, including displaced thresholds and overrun areas â\x80\x94 not the usable takeoff or landing distance. Null when unknown.'}, 'heHeadingDegT': {'type': ['number', 'null'], 'description': 'High-end true heading in degrees, or null.'}, 'leHeadingDegT': {'type': ['number', 'null'], 'description': 'Low-end true heading in degrees, or null.'}, 'heDisplacedThresholdFt': {'type': ['number', 'null'], 'description': 'Length of the displaced threshold at the high end (heIdent) in feet â\x80\x94 part of lengthFt. Null when none is recorded.'}, 'leDisplacedThresholdFt': {'type': ['number', 'null'], 'description': 'Length of the displaced threshold at the low end (leIdent) in feet â\x80\x94 part of lengthFt. Null when none is recorded.'}}, 'description': 'The matching runway â\x80\x94 full-surface dimensions, surface, lighting, and per-end designators, headings, and displaced thresholds.', 'additionalProperties': False}, 'airport': {'type': 'object', 'required': ['id', 'ident', 'type', 'name', 'latitudeDeg', 'longitudeDeg', 'elevationFt', 'continent', 'isoCountry', 'countryName', 'isoRegion', 'regionName', 'municipality', 'scheduledService', 'icaoCode', 'iataCode', 'gpsCode', 'localCode'], 'properties': {'id': {'type': 'number', 'description': 'OurAirports internal integer id (the join key for runways/frequencies).'}, 'name': {'type': 'string', 'description': 'Airport name.'}, 'type': {'type': 'string', 'description': 'Airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.'}, 'ident': {'type': 'string', 'description': 'OurAirports universal identifier â\x80\x94 globally unique; often equals the ICAO or GPS code.'}, 'gpsCode': {'type': ['string', 'null'], 'description': 'GPS code, or null.'}, 'iataCode': {'type': ['string', 'null'], 'description': '3-letter IATA code, or null when the airport has none (~89% of fields).'}, 'icaoCode': {'type': ['string', 'null'], 'description': '4-letter ICAO code, or null when the airport has none (~88% of fields).'}, 'continent': {'type': ['string', 'null'], 'description': 'Two-letter continent code (AF, AN, AS, EU, NA, OC, SA), or null.'}, 'isoRegion': {'type': ['string', 'null'], 'description': 'ISO 3166-2 region code (e.g. US-WA), or null.'}, 'localCode': {'type': ['string', 'null'], 'description': 'National/local code (e.g. FAA LID), or null.'}, 'isoCountry': {'type': ['string', 'null'], 'description': 'ISO 3166-1 alpha-2 country code, or null.'}, 'regionName': {'type': ['string', 'null'], 'description': 'Resolved region name, or null when the region code is unknown.'}, 'countryName': {'type': ['string', 'null'], 'description': 'Resolved country name, or null when the country code is unknown.'}, 'elevationFt': {'type': ['number', 'null'], 'description': 'Field elevation in feet, or null when unknown.'}, 'latitudeDeg': {'type': 'number', 'description': 'Latitude in decimal degrees (WGS84).'}, 'longitudeDeg': {'type': 'number', 'description': 'Longitude in decimal degrees (WGS84).'}, 'municipality': {'type': ['string', 'null'], 'description': 'Served municipality, or null.'}, 'scheduledService': {'type': 'boolean', 'description': 'True when the airport has scheduled airline service.'}}, 'description': 'The airport this runway belongs to. Codes the airport lacks are null.', 'additionalProperties': False}}, 'description': 'A runway paired with its airport (one row per matching runway).', 'additionalProperties': False}, 'description': 'Matching runways, each paired with its airport. One row per runway â\x80\x94 an airport with N matching runways contributes N rows.'}, 'truncated': {'type': 'boolean', 'description': 'Present and true only when more runways matched than were returned.'}, 'totalCount': {'type': 'number', 'description': 'Total matching runways before the limit was applied.'}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
MolTravel
Searches and provides details for flights, hotels, rental cars, ferries, airports, travel experiences, destinations, country info…
Wmata
Provides Washington Metro rail and bus routes, stops, stations, service incidents, route details, and real-time arrival predictio…
Openrouteservice
Provides geocoding, routing, travel-time matrices, isochrones, snapping, and elevation data using OpenStreetMap-based services.
Google_maps
Provides Google Maps geocoding, place search and details, directions, distance matrices, and elevation data.
SeaWeb
Searches and extracts web information about entities and travel locations, including restaurants, salons, tourist conditions, dis…
Aviationstack
Provides airline, airport, city, country, and flight directory data, including real-time and scheduled flight details.
Nps
Searches National Park Service data for parks, campgrounds, activities, alerts, visitor statistics, locations, fees, and operatin…
Tfl
Provides London transport journey planning, line status, disruptions, stop arrivals, and Santander Cycle availability.