Location and Timezone MCP Server by RoxyAPI
City geocoding and timezone resolution for birth data, for AI agents, one API key.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"location": {
"url": "https://roxyapi.com/mcp/location"
}
}
}Remote endpoints
https://roxyapi.com/mcp/locationstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢get_location_search(q, limit, offset, compact)
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.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"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.",
"minLength": 1,
"maxLength": 100,
"example": "berlin"
},
"limit": {
"type": "integer",
"description": "Maximum items to return per page. Range: 1-50, default 10.",
"minimum": 1,
"maximum": 50,
"default": 10,
"example": 10
},
"offset": {
"type": "integer",
"description": "Number of items to skip for pagination. Default 0.",
"minimum": 0,
"default": 0,
"example": 0
},
"compact": {
"type": "boolean",
"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.",
"default": false
}
},
"required": [
"q"
],
"examples": [
{
"q": "berlin"
}
]
}Output Schema
{
"type": "object",
"properties": {
"total": {
"type": "number"
},
"limit": {
"type": "number"
},
"offset": {
"type": "number"
},
"cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"province": {
"type": "string"
},
"country": {
"type": "string"
},
"iso2": {
"type": "string"
},
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
},
"timezone": {
"type": "string"
},
"utcOffset": {
"type": "number"
},
"population": {
"type": "number"
}
},
"required": [
"city",
"province",
"country",
"iso2",
"latitude",
"longitude",
"timezone",
"utcOffset",
"population"
]
}
}
},
"required": [
"total",
"limit",
"offset",
"cities"
]
}🟢get_location_countries(limit, offset, compact)
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.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum items to return per page. Range: 1-250, default 50.",
"minimum": 1,
"maximum": 250,
"default": 50,
"example": 50
},
"offset": {
"type": "integer",
"description": "Number of items to skip for pagination. Default 0.",
"minimum": 0,
"default": 0,
"example": 0
},
"compact": {
"type": "boolean",
"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.",
"default": false
}
},
"examples": [
{}
]
}Output Schema
{
"type": "object",
"properties": {
"total": {
"type": "number"
},
"limit": {
"type": "number"
},
"offset": {
"type": "number"
},
"countries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"iso2": {
"type": "string"
},
"iso3": {
"type": "string"
},
"cityCount": {
"type": "number"
}
},
"required": [
"name",
"iso2",
"iso3",
"cityCount"
]
}
}
},
"required": [
"total",
"limit",
"offset",
"countries"
]
}🟢get_location_countries_iso2(iso2, limit, offset, compact)
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.
Input Schema
{
"type": "object",
"properties": {
"iso2": {
"type": "string",
"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).",
"minLength": 2,
"maxLength": 2,
"example": "DE"
},
"limit": {
"type": "integer",
"description": "Maximum items to return per page. Range: 1-100, default 20.",
"minimum": 1,
"maximum": 100,
"default": 20,
"example": 20
},
"offset": {
"type": "integer",
"description": "Number of items to skip for pagination. Default 0.",
"minimum": 0,
"default": 0,
"example": 0
},
"compact": {
"type": "boolean",
"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.",
"default": false
}
},
"required": [
"iso2"
],
"examples": [
{
"iso2": "DE"
}
]
}Output Schema
{
"type": "object",
"properties": {
"total": {
"type": "number"
},
"limit": {
"type": "number"
},
"offset": {
"type": "number"
},
"cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"province": {
"type": "string"
},
"country": {
"type": "string"
},
"iso2": {
"type": "string"
},
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
},
"timezone": {
"type": "string"
},
"utcOffset": {
"type": "number"
},
"population": {
"type": "number"
}
},
"required": [
"city",
"province",
"country",
"iso2",
"latitude",
"longitude",
"timezone",
"utcOffset",
"population"
]
}
}
},
"required": [
"total",
"limit",
"offset",
"cities"
]
}Community
Evidence