Geoapify MCP by usefulapi
Geocode, reverse-geocode, autocomplete, route and search places.
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": {
"geoapify": {
"url": "https://geoapify.usefulapi.io/mcp"
}
}
}Remote endpoints
https://geoapify.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢geoapify_geocode_search(text, limit, filter, bias, type, ...)
Forward geocoding — turn a free-form address or place name into coordinates and structured address parts. Geoapify REST: GET /v1/geocode/search.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"description": "The free-form address or place name to geocode (required)."
},
"limit": {
"description": "Max number of results to return.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"filter": {
"description": "Spatial filter, e.g. 'countrycode:de' or 'rect:lon1,lat1,lon2,lat2'.",
"type": "string"
},
"bias": {
"description": "Bias results toward a location, e.g. 'proximity:13.4,52.5'.",
"type": "string"
},
"type": {
"description": "Restrict to a location type, e.g. 'city', 'street', 'amenity', 'postcode'.",
"type": "string"
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
},
"format": {
"description": "Response format — 'json' (default) or 'geojson'.",
"type": "string"
}
},
"required": [
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢geoapify_geocode_reverse(lat, lon, limit, type, lang, ...)
Reverse geocoding — turn coordinates into the nearest address / place. Geoapify REST: GET /v1/geocode/reverse.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude (required)."
},
"lon": {
"type": "number",
"description": "Longitude (required)."
},
"limit": {
"description": "Max number of results to return.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"type": {
"description": "Restrict to a location type, e.g. 'city', 'street', 'amenity'.",
"type": "string"
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
},
"format": {
"description": "Response format — 'json' (default) or 'geojson'.",
"type": "string"
}
},
"required": [
"lat",
"lon"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢geoapify_geocode_autocomplete(text, limit, filter, bias, type, ...)
Address autocomplete — suggest completed addresses/places for a partial query, ideal for as-you-type inputs. Geoapify REST: GET /v1/geocode/autocomplete.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"description": "The partial address or place text to complete (required)."
},
"limit": {
"description": "Max number of results to return.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"filter": {
"description": "Spatial filter, e.g. 'countrycode:de' or 'rect:lon1,lat1,lon2,lat2'.",
"type": "string"
},
"bias": {
"description": "Bias results toward a location, e.g. 'proximity:13.4,52.5'.",
"type": "string"
},
"type": {
"description": "Restrict to a location type, e.g. 'city', 'street', 'amenity', 'postcode'.",
"type": "string"
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
},
"format": {
"description": "Response format — 'json' (default) or 'geojson'.",
"type": "string"
}
},
"required": [
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢geoapify_places(categories, conditions, filter, bias, name, ...)
Search for places (POIs) by category within an area, optionally filtered by name/conditions. Returns a GeoJSON FeatureCollection. Geoapify REST: GET /v2/places.
Input Schema
{
"type": "object",
"properties": {
"categories": {
"type": "string",
"minLength": 1,
"description": "Comma-separated Geoapify place categories, e.g. 'catering.restaurant,commercial' (required)."
},
"conditions": {
"description": "Comma-separated conditions, e.g. 'named,internet_access'.",
"type": "string"
},
"filter": {
"description": "Spatial filter, e.g. 'circle:13.4,52.5,1000' or 'rect:...' or 'place:<placeId>'.",
"type": "string"
},
"bias": {
"description": "Bias results toward a location, e.g. 'proximity:13.4,52.5'.",
"type": "string"
},
"name": {
"description": "Filter places by (partial) name.",
"type": "string"
},
"limit": {
"description": "Max number of results to return.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"description": "Pagination offset (skip N results).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
}
},
"required": [
"categories"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢geoapify_place_details(id, lat, lon, features, lang)
Get detailed information (and optionally geometry/features) for a place. Provide either `id` (the `place_id` returned by geoapify_places) OR both `lat` and `lon`. Geoapify REST: GET /v2/place-details.
Input Schema
{
"type": "object",
"properties": {
"id": {
"description": "The Geoapify place id (pass the `place_id` value from geoapify_places).",
"type": "string"
},
"lat": {
"description": "Latitude (use with `lon` instead of `id`).",
"type": "number"
},
"lon": {
"description": "Longitude (use with `lat` instead of `id`).",
"type": "number"
},
"features": {
"description": "Comma-separated detail feature sets, e.g. 'details,building,geometry'.",
"type": "string"
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢geoapify_routing(waypoints, mode, details, lang, units, ...)
Compute a route between waypoints for a travel mode, returning distance, time and legs. Geoapify REST: GET /v1/routing.
Input Schema
{
"type": "object",
"properties": {
"waypoints": {
"type": "string",
"minLength": 1,
"description": "Pipe-separated 'lat,lon' waypoints, e.g. '52.5,13.4|52.6,13.5' (required)."
},
"mode": {
"type": "string",
"minLength": 1,
"description": "Travel mode: drive, walk, bicycle, truck, hike, transit, etc. (required)."
},
"details": {
"description": "Comma-separated route detail sets, e.g. 'instruction_details,route_details'.",
"type": "string"
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
},
"units": {
"description": "Distance units — 'metric' or 'imperial'.",
"type": "string"
},
"format": {
"description": "Response format — 'json' (default) or 'geojson'.",
"type": "string"
}
},
"required": [
"waypoints",
"mode"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢geoapify_isoline(lat, lon, type, mode, range, ...)
Compute a reachability isoline (isochrone/isodistance) — the area reachable from a point within a time or distance budget. Geoapify REST: GET /v1/isoline.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Origin latitude (required)."
},
"lon": {
"type": "number",
"description": "Origin longitude (required)."
},
"type": {
"type": "string",
"enum": [
"time",
"distance"
],
"description": "Isoline type — 'time' (seconds) or 'distance' (meters) (required)."
},
"mode": {
"type": "string",
"minLength": 1,
"description": "Travel mode: drive, walk, bicycle, etc. (required)."
},
"range": {
"type": "number",
"description": "Budget for the isoline — seconds if type=time, meters if type=distance (required)."
},
"traffic": {
"description": "Traffic model for driving, e.g. 'free_flow' or 'approximated'.",
"type": "string"
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
}
},
"required": [
"lat",
"lon",
"type",
"mode",
"range"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢geoapify_ip_geolocation(ip, lang)
Look up the approximate location (country, city, coordinates) of an IP address. Geoapify REST: GET /v1/ipinfo.
Input Schema
{
"type": "object",
"properties": {
"ip": {
"type": "string",
"minLength": 1,
"description": "The IPv4/IPv6 address to locate (required)."
},
"lang": {
"description": "Result language as an ISO 639-1 code, e.g. 'en', 'de', 'fr'.",
"type": "string"
}
},
"required": [
"ip"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence