MCP Server

Location and Timezone MCP Server by RoxyAPI

com.roxyapi/location
Maps & Location Public & reachable MCP 2025-11-25

What this MCP does

Resolves cities and countries to coordinates, IANA timezones, and daylight-saving-aware UTC offsets.

get_location_countries
List all countries - ISO codes and city coverage
Returns every country with ISO 3166-1 alpha-2 and alpha-3 codes, plus the number of searchable cities per country. Use this endpoint to build country dropdown menus, regional filters, or to check city coverage before querying a birth location. Countries are sorted alphabetically by name. Covers Europe, Americas, Asia, Middle East, Africa, and Oceania.
Read only
Input schema
{'type': 'object', 'examples': [{}], 'properties': {'limit': {'type': 'integer', 'default': 50, 'example': 50, 'maximum': 250, 'minimum': 1, 'description': 'Maximum items to return per page. Range: 1-250, default 50.'}, 'offset': {'type': 'integer', 'default': 0, 'example': 0, 'minimum': 0, 'description': 'Number of items to skip for pagination. Default 0.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['total', 'limit', 'offset', 'countries'], 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'offset': {'type': 'number'}, 'countries': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'iso2', 'iso3', 'cityCount'], 'properties': {'iso2': {'type': 'string'}, 'iso3': {'type': 'string'}, 'name': {'type': 'string'}, 'cityCount': {'type': 'number'}}}}}}
get_location_countries_iso2
Get cities in a country - Geocoding directory sorted by population
Returns all cities for a specific country, identified by ISO 3166-1 alpha-2 code (e.g. DE for Germany, FR for France, GB for United Kingdom, US for United States). Each city includes geographic coordinates, IANA timezone, and DST-aware UTC offset for direct use in astrology birth chart, horoscope, transit, and panchang calculations. Cities sorted by population with the largest metropolitan areas first.
Read only
Input schema
{'type': 'object', 'examples': [{'iso2': 'DE'}], 'required': ['iso2'], 'properties': {'iso2': {'type': 'string', 'example': 'DE', 'maxLength': 2, 'minLength': 2, 'description': 'ISO 3166-1 alpha-2 country code, case-insensitive. Common codes: DE (Germany), FR (France), GB (United Kingdom), US (United States), ES (Spain), IT (Italy), NL (Netherlands), IN (India), BR (Brazil), JP (Japan).'}, 'limit': {'type': 'integer', 'default': 20, 'example': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum items to return per page. Range: 1-100, default 20.'}, 'offset': {'type': 'integer', 'default': 0, 'example': 0, 'minimum': 0, 'description': 'Number of items to skip for pagination. Default 0.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['total', 'limit', 'offset', 'cities'], 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'cities': {'type': 'array', 'items': {'type': 'object', 'required': ['city', 'province', 'country', 'iso2', 'latitude', 'longitude', 'timezone', 'utcOffset', 'population'], 'properties': {'city': {'type': 'string'}, 'iso2': {'type': 'string'}, 'country': {'type': 'string'}, 'latitude': {'type': 'number'}, 'province': {'type': 'string'}, 'timezone': {'type': 'string'}, 'longitude': {'type': 'number'}, 'utcOffset': {'type': 'number'}, 'population': {'type': 'number'}}}}, 'offset': {'type': 'number'}}}
get_location_search
Search cities worldwide - Geocoding autocomplete with coordinates and timezone
Turn a place name into coordinates, an IANA timezone and a DST-aware UTC offset, across 235,000+ cities and towns in 240+ countries. Coverage reaches rural towns of a few hundred people and every administrative seat, so a birthplace outside a major metro resolves as reliably as a capital. Matching is case-insensitive, accent-insensitive and partial, so ber matches Berlin, Bern and Bergen, native scripts are transliterated, and historic names resolve to the current place, so bombay returns Mumbai and peking returns Beijing. Results are ordered by match quality first and population second, so an exactly named small town is never buried under a larger city that merely shares its opening letters. Built for birth chart location pickers, horoscope apps, event scheduling, and any feature that needs place-to-coordinates resolution.
Read only
Input schema
{'type': 'object', 'examples': [{'q': 'berlin'}], 'required': ['q'], 'properties': {'q': {'type': 'string', 'example': 'berlin', 'maxLength': 100, 'minLength': 1, 'description': 'Place to search for, written the way a person would. Accepts a bare city (berlin), a city plus country (berlin germany), a comma-qualified place (richfield, utah), a fully qualified place (richfield, utah, united states), or a historic name (bombay, peking, constantinople). Commas are optional, and a qualifier the dataset spells differently, such as USA for United States, still resolves. Matched against city name, alternate names, state or province, and country. Add the state or country whenever the name is common, since that is what separates the six Springfields, and Richfield, Utah from Richfield, Minnesota.'}, 'limit': {'type': 'integer', 'default': 10, 'example': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum items to return per page. Range: 1-50, default 10.'}, 'offset': {'type': 'integer', 'default': 0, 'example': 0, 'minimum': 0, 'description': 'Number of items to skip for pagination. Default 0.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['total', 'limit', 'offset', 'cities'], 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'cities': {'type': 'array', 'items': {'type': 'object', 'required': ['city', 'province', 'country', 'iso2', 'latitude', 'longitude', 'timezone', 'utcOffset', 'population'], 'properties': {'city': {'type': 'string'}, 'iso2': {'type': 'string'}, 'country': {'type': 'string'}, 'latitude': {'type': 'number'}, 'province': {'type': 'string'}, 'timezone': {'type': 'string'}, 'longitude': {'type': 'number'}, 'utcOffset': {'type': 'number'}, 'population': {'type': 'number'}}}}, 'offset': {'type': 'number'}}}
Changed
get_location_countries_iso2
Sept. 25, 2026, 3:03 a.m.
Changed
get_location_countries
Sept. 25, 2026, 3:03 a.m.
Changed
get_location_search
Sept. 25, 2026, 3:03 a.m.
Changed
get_location_countries_iso2
Sept. 21, 2026, 3:01 a.m.
Changed
get_location_countries
Sept. 21, 2026, 3:01 a.m.
Changed
get_location_search
Sept. 21, 2026, 3:01 a.m.
Added
get_location_countries_iso2
Sept. 17, 2026, 12:37 p.m.
Added
get_location_countries
Sept. 17, 2026, 12:37 p.m.
Added
get_location_search
Sept. 17, 2026, 12:37 p.m.