Geodb Cities MCP Server
Provides tools to query and retrieve geographic data for cities and regions, utilizing Wikidata identifiers and relations to provide details like location coordinates, population, and elevation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Geodb Cities MCP Server find cities within 100km of Paris with a population over 500,000"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Geodb Cities MCP Server
用于访问 Geodb Cities API 的 MCP 服务器。
🚀 使用 EMCP 平台快速体验
EMCP 是一个强大的 MCP 服务器管理平台,让您无需手动配置即可快速使用各种 MCP 服务器!
快速开始:
🌐 访问 EMCP 平台
📝 注册并登录账号
🎯 进入 MCP 广场,浏览所有可用的 MCP 服务器
🔍 搜索或找到本服务器(
bach-geodb_cities)🎉 点击 "安装 MCP" 按钮
✅ 完成!即可在您的应用中使用
EMCP 平台优势:
✨ 零配置:无需手动编辑配置文件
🎨 可视化管理:图形界面轻松管理所有 MCP 服务器
🔐 安全可靠:统一管理 API 密钥和认证信息
🚀 一键安装:MCP 广场提供丰富的服务器选择
📊 使用统计:实时查看服务调用情况
立即访问 EMCP 平台 开始您的 MCP 之旅!
Related MCP server: City By Api Ninjas MCP Server
简介
这是一个 MCP 服务器,用于访问 Geodb Cities API。
PyPI 包名:
bach-geodb_cities版本: 1.0.0
传输协议: stdio
安装
从 PyPI 安装:
pip install bach-geodb_cities从源码安装:
pip install -e .运行
方式 1: 使用 uvx(推荐,无需安装)
# 运行(uvx 会自动安装并运行)
uvx --from bach-geodb_cities bach_geodb_cities
# 或指定版本
uvx --from bach-geodb_cities@latest bach_geodb_cities方式 2: 直接运行(开发模式)
python server.py方式 3: 安装后作为命令运行
# 安装
pip install bach-geodb_cities
# 运行(命令名使用下划线)
bach_geodb_cities配置
API 认证
此 API 需要认证。请设置环境变量:
export API_KEY="your_api_key_here"环境变量
变量名 | 说明 | 必需 |
| API 密钥 | 是 |
| 不适用 | 否 |
| 不适用 | 否 |
在 Cursor 中使用
编辑 Cursor MCP 配置文件 ~/.cursor/mcp.json:
{
"mcpServers": {
"bach-geodb_cities": {
"command": "uvx",
"args": ["--from", "bach-geodb_cities", "bach_geodb_cities"],
"env": {
"API_KEY": "your_api_key_here"
}
}
}
}在 Claude Desktop 中使用
编辑 Claude Desktop 配置文件 claude_desktop_config.json:
{
"mcpServers": {
"bach-geodb_cities": {
"command": "uvx",
"args": ["--from", "bach-geodb_cities", "bach_geodb_cities"],
"env": {
"API_KEY": "your_api_key_here"
}
}
}
}可用工具
此服务器提供以下工具:
place_distance
Gets this place's distance to the given place.
端点: GET /v1/geo/places/{placeId}/distance
参数:
distanceUnit(string): The unit of distance: KM | MI [default]toPlaceId(string): The distance to this placeplaceId(string) 必需: Example value:
place_time
Get this place's current time in ISO-8601 format: HHmmss.SSSZ
端点: GET /v1/geo/places/{placeId}/time
参数:
placeId(string) 必需: Example value:
place_date_time
Get this place's current date-time in ISO-6801 format: yyyyMMdd'T'HHmmssZ
端点: GET /v1/geo/places/{placeId}/dateTime
参数:
placeId(string) 必需: Example value:
place_located_in
Get the details for the containing populated place (e.g., its county or other administrative division), including location coordinates, population, and elevation above sea-level (if available). Currently, this data is highly dependent on whether the Wikidata locatedIn relation is properly defined. If you see an issue, please propose a change to the corresponding Wikidata entry.
端点: GET /v1/geo/places/{placeId}/locatedIn
参数:
placeId(string) 必需: Example value:
place_details
Get the details for a specific place, including location coordinates, population, and elevation above sea-level (if available).
端点: GET /v1/geo/places/{placeId}
参数:
languageCode(string): Display results in this languageasciiMode(string): Example value:placeId(string) 必需: Example value:
city_located_in
Get the details for the containing populated place (e.g., its county or other administrative division), including location coordinates, population, and elevation above sea-level (if available). Currently, this data is highly dependent on whether the Wikidata locatedIn relation is properly defined. If you see an issue, please propose a change to the corresponding Wikidata entry.
端点: GET /v1/geo/cities/{cityId}/locatedIn
参数:
cityId(string) 必需: Example value: Q65
places_near_location
Get places near the given location, filtering by optional criteria.
端点: GET /v1/geo/locations/{locationid}/nearbyPlaces
参数:
types(string): Only places for these types (comma-delimited): ADM2 | CITY | ISLANDradius(string) 必需: The location radius within which to find placesdistanceUnit(string): The unit of distance to use: MI | KMcountryIds(string): Only places in these countries (comma-delimited country codes or WikiData ids)excludedCountryIds(string): Only places NOT in these countries (comma-delimited country codes or WikiData ids)timeZoneIds(string): Only places in these time-zonesminPopulation(number): Only places having at least this populationmaxPopulation(number): Only places having no more than this populationnamePrefix(string): Only places whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any places marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = countryCode | elevation | name | populationlocationid(string) 必需: Only cities near this location. Latitude/longitude in ISO-6709 format: ±DD.DDDD±DDD.DDDD
places_near_place
Get places near the given place, filtering by optional criteria.
端点: GET /v1/geo/places/{placeId}/nearbyPlaces
参数:
types(string): Only places for these types (comma-delimited): ADM2 | CITY | ISLANDradius(number) 必需: The location radius within which to find placesdistanceUnit(string): The unit of distance to use: MI | KMcountryIds(string): Only places in these countries (comma-delimited country codes or WikiData ids)excludedCountryIds(string): Only places NOT in these countries (comma-delimited country codes or WikiData ids)timeZoneIds(string): Only places in these time-zonesminPopulation(number): Only places having at least this populationmaxPopulation(number): Only places having no more than this populationnamePrefix(string): Only places whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any places marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONEoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = countryCode | elevation | name | populationplaceId(string) 必需: Example value:
country_places
Get the places in the given country.
端点: GET /v1/geo/countries/{countryId}/places
参数:
types(string): Only cities for these types (comma-delimited): ADM2 | CITY | ISLANDtimeZoneIds(string): Only places in these time-zonesminPopulation(number): Only places having at least this populationmaxPopulation(number): Only places having no more than this populationnamePrefix(string): Only places whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any cities marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = elevation | name | populationcountryId(string) 必需: Example value: US
country_region_divisions
Get the administrative divisions in the given region.
端点: GET /v1/geo/countries/{countryid}/regions/{regioncode}/adminDivisions
参数:
minPopulation(number): Only cities having at least this populationmaxPopulation(number): Only divisions having no more than this populationnamePrefix(string): Only divisions whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any cities marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = elevation | name | populationcountryid(string) 必需: An ISO-3166 country code or WikiData idregioncode(string) 必需: An ISO-3166 or FIPS region code
admin_division_details
Get the details for a specific administrative division, including location coordinates, population, and elevation above sea-level (if available).
端点: GET /v1/geo/adminDivisions/{divisionId}
参数:
languageCode(string): Display results in this languageasciiMode(string): Example value:divisionId(string) 必需: Example value: Q104994
cities_near_division
Get cities near the given administrative division, filtering by optional criteria.
端点: GET /v1/geo/adminDivisions/{divisionId}/nearbyCities
参数:
types(string): Only cities for these types (comma-delimited): CITY | ADM2radius(number) 必需: The location radius within which to find citiesdistanceUnit(string): The unit of distance to use: MI | KMcountryIds(string): Only cities in these countries (comma-delimited country codes or WikiData ids)excludedCountryIds(string): Only cities NOT in these countries (comma-delimited country codes or WikiData ids)timeZoneIds(string): Only cities in these time-zonesminPopulation(number): Only cities having at least this populationmaxPopulation(number): Only cities having no more than this populationnamePrefix(string): Only cities whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any cities marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = countryCode | elevation | name | populationdivisionId(string) 必需: Example value: Q104994
admin_divisions
Find administrative divisions, filtering by optional criteria. If no criteria are set, you will get back all known divisions with a population of at least 1000
端点: GET /v1/geo/adminDivisions
参数:
location(string): Only divisions near this location. Latitude/longitude in ISO-6709 format: ±DD.DDDD±DDD.DDDDradius(number): The location radius within which to find divisionsdistanceUnit(string): The unit of distance to use: MI | KMcountryIds(string): Only divisions in these countries (comma-delimited country codes or WikiData ids)excludedCountryIds(string): Only divisions NOT in these countries (comma-delimited country codes or WikiData ids)timeZoneIds(string): Only divisions in these time-zonesminPopulation(number): Only divisions having at least this populationmaxPopulation(number): Only divisions having no more than this populationnamePrefix(string): Only divisions whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any divisions marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = countryCode | elevation | name | population
country_region_places
Get the places in the given region.
端点: GET /v1/geo/countries/{countryid}/regions/{regionId}/places
参数:
types(string): Only cities for these types (comma-delimited): ADM2 | CITY | ISLANDtimeZoneIds(string): Only places in these time-zonesminPopulation(number): Only places having at least this populationmaxPopulation(number): Only places having no more than this populationnamePrefix(string): Only places whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any cities marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = elevation | name | populationcountryid(string) 必需: An ISO-3166 country code or WikiData idregionId(string) 必需: Example value: CA
places
Find places, filtering by optional criteria. If no criteria are set, you will get back all known places.
端点: GET /v1/geo/places
参数:
types(string): Only places for these types (comma-delimited): ADM2 | CITY | ISLANDlocation(string): Only places near this location. Latitude/longitude in ISO-6709 format: ±DD.DDDD±DDD.DDDDradius(number): The location radius within which to find placesdistanceUnit(string): The unit of distance to use: MI | KMcountryIds(string): Only places in these countries (comma-delimited country codes or WikiData ids)excludedCountryIds(string): Only places NOT in these countries (comma-delimited country codes or WikiData ids)timeZoneIds(string): Only places in these time-zonesminPopulation(number): Only places having at least this populationmaxPopulation(number): Only places having no more than this populationnamePrefix(string): Only places whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:includeDeleted(string): Whether to include any places marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElanguageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:limit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = countryCode | elevation | name | population
time_zone
Get the time-zone current time in ISO-6801 format: HHmmss.SSSZ
端点: GET /v1/locale/timezones/{zoneid}
参数:
zoneid(string) 必需: The time-zone id
admin_divisions_near_location
Get administrative divisions near the given location, filtering by optional criteria.
端点: GET /v1/geo/locations/{locationid}/nearbyDivisions
参数:
radius(string) 必需: The location radius within which to find divisionsdistanceUnit(string): The unit of distance to use: MI | KMcountryIds(string): Only divisions in these countries (comma-delimited country codes or WikiData ids)excludedCountryIds(string): Only divisions NOT in these countries (comma-delimited country codes or WikiData ids)timeZoneIds(string): Only divisions in these time-zonesminPopulation(number): Only divisions having at least this populationmaxPopulation(number): Only divisions having no more than this populationnamePrefix(string): Only divisions whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any divisions marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = countryCode | elevation | name | populationlocationid(string) 必需: Only divisions near this location. Latitude/longitude in ISO-6709 format: ±DD.DDDD±DDD.DDDD
admin_divisions_near_division
Get divisions near the given administrative division, filtering by optional criteria.
端点: GET /v1/geo/adminDivisions/{divisionId}/nearbyDivisions
参数:
radius(number) 必需: The location radius within which to find divisionsdistanceUnit(string): The unit of distance to use: MI | KMcountryIds(string): Only divisions in these countries (comma-delimited country codes or WikiData ids)excludedCountryIds(string): Only divisions NOT in these countries (comma-delimited country codes or WikiData ids)timeZoneIds(string): Only divisions in these time-zonesminPopulation(number): Only divisions having at least this populationmaxPopulation(number): Only divisions having no more than this populationnamePrefix(string): Only divisions whose names start with this prefix. If languageCode is set, the prefix will be matched on the name as it appears in that language.namePrefixDefaultLangResults(string): Example value:languageCode(string): Display results in this languageasciiMode(string): Example value:hateoasMode(string): Example value:includeDeleted(string): Whether to include any divisions marked deleted: ALL | SINCE_YESTERDAY | SINCE_LAST_WEEK | NONElimit(number): The maximum number of results to retrieveoffset(number): The zero-ary offset into the resultssort(string): How to sort the results. Format: ±SORT_FIELD,±SORT_FIELD where SORT_FIELD = countryCode | elevation | name | populationdivisionId(string) 必需: Example value: Q104994
技术栈
传输协议: stdio
HTTP 客户端: httpx
许可证
MIT License - 详见 LICENSE 文件。
开发
此服务器由 API-to-MCP 工具生成。
版本: 1.0.0
Available Tools
18 toolsadmin_division_detailsB
Get the details for a specific administrative division, including location coordinates, population, and elevation above sea-level (if available).
Inputs: divisionId (required), languageCode, asciiMode.
admin_divisionsB
Find administrative divisions, filtering by optional criteria. If no criteria are set, you will get back all known divisions with a population of at least 1000
Inputs: location, radius, distanceUnit, countryIds, +13 more.
admin_divisions_near_divisionC
Get divisions near the given administrative division, filtering by optional criteria.
Inputs: radius (required), divisionId (required), distanceUnit, countryIds, +13 more.
admin_divisions_near_locationC
Get administrative divisions near the given location, filtering by optional criteria.
Inputs: radius (required), locationid (required), distanceUnit, countryIds, +13 more.
cities_near_divisionC
Get cities near the given administrative division, filtering by optional criteria.
Inputs: radius (required), divisionId (required), types, distanceUnit, +14 more.
city_located_inB
Get the details for the containing populated place (e.g., its county or other administrative division), including location coordinates, population, and elevation above sea-level (if available). Currently, this data is highly dependent on whether the Wikidata locatedIn relation is properly defined. If you see an issue, please propose a change to the corresponding Wikidata entry.
Inputs: cityId (required).
country_placesB
Get the places in the given country.
Inputs: countryId (required), types, timeZoneIds, minPopulation, +10 more.
country_region_divisionsC
Get the administrative divisions in the given region.
Inputs: countryid (required), regioncode (required), minPopulation, maxPopulation, +9 more.
country_region_placesC
Get the places in the given region.
Inputs: countryid (required), regionId (required), types, timeZoneIds, +11 more.
place_date_timeB
Get this place's current date-time in ISO-6801 format: yyyyMMdd'T'HHmmssZ
Inputs: placeId (required).
place_detailsB
Get the details for a specific place, including location coordinates, population, and elevation above sea-level (if available).
Inputs: placeId (required), languageCode, asciiMode.
place_distanceC
Gets this place's distance to the given place.
Inputs: placeId (required), distanceUnit, toPlaceId.
place_located_inA
Get the details for the containing populated place (e.g., its county or other administrative division), including location coordinates, population, and elevation above sea-level (if available). Currently, this data is highly dependent on whether the Wikidata locatedIn relation is properly defined. If you see an issue, please propose a change to the corresponding Wikidata entry.
Inputs: placeId (required).
placesC
Find places, filtering by optional criteria. If no criteria are set, you will get back all known places.
Inputs: types, location, radius, distanceUnit, +14 more.
places_near_locationC
Get places near the given location, filtering by optional criteria.
Inputs: radius (required), locationid (required), types, distanceUnit, +14 more.
places_near_placeC
Get places near the given place, filtering by optional criteria.
Inputs: radius (required), placeId (required), types, distanceUnit, +13 more.
place_timeB
Get this place's current time in ISO-8601 format: HHmmss.SSSZ
Inputs: placeId (required).
time_zoneC
Get the time-zone current time in ISO-6801 format: HHmmss.SSSZ
Inputs: zoneid (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 18 tools
There is significant overlap between tools like 'city_located_in' and 'place_located_in' which serve similar purposes for different entity types, and 'place_time' vs 'place_date_time' vs 'time_zone' which all handle time-related queries with subtle distinctions. However, most tools have clear primary functions (e.g., 'admin_divisions_near_location' vs 'places_near_location') that help differentiate them.
The naming follows a consistent snake_case pattern throughout with clear verb_noun or noun_verb_noun structures (e.g., 'admin_divisions_near_location', 'place_details'). Minor inconsistencies exist like 'place_date_time' using an incorrect ISO standard reference (6801 instead of 8601) and 'time_zone' being more terse than others, but overall the pattern is predictable.
With 18 tools, the count is slightly high but reasonable for a geographic database server covering administrative divisions, cities, places, and time data. It provides comprehensive query capabilities without being overwhelmingly large, though some consolidation might improve coherence.
The tool set offers complete coverage for querying geographic entities (places, cities, administrative divisions) with details, proximity searches, containment relationships, and time information. There are no obvious gaps—agents can retrieve, filter, and relate geographic data effectively across the domain.
Maintenance
Related MCP Connectors
Search and explore a global travel points-of-interest catalog (cities, countries, POIs).
Free GeoNames MCP: countries, cities, POIs, distance & nearby. Remote HTTP + agent token signup.
Routing, geocoding, places, matrix and map tools for location-aware AI workflows.
City geocoding and timezone resolution for birth data, for AI agents, one API key.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables exploration of geographical data including countries, cities, states/provinces, and regions through a SQLite database. Supports searches by name, location coordinates, currency, and regional groupings with comprehensive statistical queries.157-
- AlicenseCqualityDmaintenanceProvides access to the City By Api Ninjas API to retrieve detailed city information worldwide. Users can search and filter results by name, country, population range, and geographic coordinates.1MIT
- AlicenseNot gradedqualityBmaintenanceProvides complete world location data (countries, states, cities) as an MCP server for AI assistants, enabling search and retrieval of geographic information through 11 tools and 5 resources.1,399 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying country, state, and city data through the CountryStateCity API, accessible via natural language.298 npmMIT