Hosted MCP server · #145 most used on Smithery

openstreetmap-mcp-server

cyanheads/openstreetmap-mcp-server

Geocode, reverse geocode, and run Overpass spatial queries on OpenStreetMap data.

Uses
3.7k
Tools
6
Runs
Hosted
Listed
4mo ago

Get started

Add it to your agent

npx -y @smithery/cli@latest install cyanheads/openstreetmap-mcp-server --client claude

Swap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.

What it can do

6 tools

openstreetmap_geocode12 paramsConvert a place name or address to geographic coordinates and structured place data via Nominatim/OpenStreetMap. Accepts either a free-fo…

Convert a place name or address to geographic coordinates and structured place data via Nominatim/OpenStreetMap. Accepts either a free-form query string (e.g., "Space Needle Seattle") or structured address fields (street, city, state, etc.) — the two modes are mutually exclusive. Returns results ordered by Nominatim relevance (importance score). Use countrycodes to restrict results to specific countries. For exhaustive POI lists in an area, use openstreetmap_query_nearby or openstreetmap_query_b

ParameterTypeDescription
citystringCity name (structured query).
layerstringFilter by data layer. Comma-separated values: address, poi, railway, natural, manmade. Default: no restriction.
limitintegerMaximum results to return. Nominatim may return fewer when additional results do not sufficiently match. Max 40.
querystringFree-form search string (e.g., "Space Needle Seattle" or "1600 Pennsylvania Ave NW, Washington DC"). Cannot be combined with structured address fields. Keep the query to a POI name plus its city or re
statestringState or province (structured query).
countystringCounty or district (structured query).
streetstringHouse number and street name (structured query). Use with city/state/country fields. Cannot be combined with query.
countrystringCountry name or ISO 3166-1 alpha-2 code (structured query).
languagestringPreferred language for result names (BCP 47 code or Accept-Language string, e.g., "en", "de", "fr,en"). Defaults to local OSM language.
extratagsbooleanInclude extra OSM tags when available (e.g., phone, website, opening_hours, wikidata). Increases response size.
postalcodestringPostal or ZIP code (structured query).
featureTypestringRestrict results to a geographic feature type. Automatically implies the address layer.
openstreetmap_reverse6 paramsConvert latitude/longitude coordinates to the nearest address or place name via Nominatim/OpenStreetMap. Returns the closest matching OSM…

Convert latitude/longitude coordinates to the nearest address or place name via Nominatim/OpenStreetMap. Returns the closest matching OSM object at the given coordinates. Note: Nominatim finds the nearest indexed OSM object — in dense areas this may differ from the address at the exact coordinate. Use zoom=18 for building-level accuracy, lower zoom values for coarser resolution (e.g., zoom=10 for city-level).

ParameterTypeDescription
latnumberLatitude in WGS84 decimal degrees.
lonnumberLongitude in WGS84 decimal degrees.
zoomintegerAddress detail level, roughly corresponding to map zoom. 18=building, 16=street, 14=neighbourhood, 12=town, 10=city, 8=county, 5=state, 3=country.
layerstringRestrict which OSM layer is matched. Comma-separated: address, poi, railway, natural, manmade. Default: address,poi.
languagestringPreferred language for the result (BCP 47 code or Accept-Language string).
extratagsbooleanInclude extra OSM tags when available (phone, website, opening_hours, wikidata, etc.).
openstreetmap_lookup3 paramsFetch address details for one or more known OSM objects by their IDs via Nominatim. Each ID must be prefixed with N (node), W (way), or R…

Fetch address details for one or more known OSM objects by their IDs via Nominatim. Each ID must be prefixed with N (node), W (way), or R (relation), e.g., "N240109189", "W50637691", "R146656". Up to 50 IDs per call. Use when an OSM ID is already known from a prior openstreetmap_query_nearby or openstreetmap_query_bbox result — this is more efficient than a geocoding round trip to get the full Nominatim address record.

ParameterTypeDescription
osm_idsOne or more OSM IDs, each prefixed with N (node), W (way), or R (relation). E.g., "N240109189", ["W50637691", "R146656"]. Up to 50 IDs per call.
languagestringPreferred language for names (BCP 47 code).
extratagsbooleanInclude extra OSM tags (phone, website, wikidata, etc.).
openstreetmap_query_nearby10 paramsFind OSM features within a radius around a geographic point via the Overpass API. The primary tool for "what's near X?" spatial queries. …

Find OSM features within a radius around a geographic point via the Overpass API. The primary tool for "what's near X?" spatial queries. Use amenity for common POI types (hospital, pharmacy, restaurant, cafe, school, atm, etc.) or tag_key + tag_value for other OSM categories (leisure=park, shop=supermarket, natural=peak). Exactly one of amenity or tag_key/tag_value must be provided. Results include all element types specified (nodes cover standalone POIs, ways cover buildings and areas), each wi

ParameterTypeDescription
latnumberCenter latitude in WGS84 decimal degrees.
lonnumberCenter longitude in WGS84 decimal degrees.
limitintegerMaximum results to return. Applied after the Overpass query — if the area has more features, they are truncated.
offsetintegerNumber of matching features to skip before applying limit, for paging through a large result set. Features are distance-sorted before paging, so higher offsets return progressively farther matches; th
amenitystringOSM amenity tag value (e.g., "hospital", "pharmacy", "restaurant", "school", "atm"). Shortcut for tag_key="amenity". Cannot be combined with tag_key/tag_value.
tag_keystringOSM tag key for non-amenity queries (e.g., "leisure", "shop", "highway", "natural"). Use with tag_value. Cannot be combined with amenity.
tag_valuestringOSM tag value paired with tag_key (e.g., "park", "supermarket", "primary", "peak").
element_typesarrayOSM element types to search. Ways cover most buildings and areas; nodes cover most standalone POIs. Add "relation" for complex structures like large campuses.
radius_metersnumberSearch radius in meters. Max 50,000m (50km). Keep under 5,000m for dense urban POI queries to avoid slow responses.
timeout_secondsintegerOverpass query timeout in seconds. Increase for large radius or dense areas.
openstreetmap_query_bbox11 paramsFind OSM features within a rectangular geographic area (bounding box) via the Overpass API. Useful for area surveys where you want everyt…

Find OSM features within a rectangular geographic area (bounding box) via the Overpass API. Useful for area surveys where you want everything in a region, not proximity searches. Use amenity for common POI types (hospital, pharmacy, cafe, school, etc.) or tag_key + tag_value for other OSM categories (leisure=park, shop=supermarket, natural=peak). Exactly one of amenity or tag_key/tag_value must be provided. Every feature includes its full OSM tag set; the extratags flag (used by geocode/reverse/

ParameterTypeDescription
eastnumberEastern boundary longitude (maximum longitude).
westnumberWestern boundary longitude (minimum longitude).
limitintegerMaximum results to return. Applied after the Overpass query — if the area has more features, they are truncated.
northnumberNorthern boundary latitude (maximum latitude).
southnumberSouthern boundary latitude (minimum latitude).
offsetintegerNumber of matching features to skip before applying limit, for paging through a large result set. The full match set is fetched and cached ~10 minutes keyed by the query, so re-paging at a new offset
amenitystringOSM amenity tag value shortcut (e.g., "cafe", "bench", "hospital"). Cannot be combined with tag_key/tag_value.
tag_keystringOSM tag key for non-amenity queries (e.g., "leisure", "shop", "natural"). Use with tag_value. Cannot be combined with amenity.
tag_valuestringOSM tag value paired with tag_key (e.g., "park", "supermarket", "peak").
element_typesarrayOSM element types to search. Ways cover most buildings and areas; nodes cover most standalone POIs. Add "relation" for complex structures.
timeout_secondsintegerOverpass query timeout in seconds. Increase for large bounding boxes or dense areas.
openstreetmap_query_raw2 paramsExecute a raw Overpass QL query for advanced spatial queries that the convenience tools do not cover. Use for multi-type queries, union q…

Execute a raw Overpass QL query for advanced spatial queries that the convenience tools do not cover. Use for multi-type queries, union queries, relation membership, historical queries, or any operation requiring full Overpass QL expressiveness. The query must include [out:json]. Example: "[out:json][timeout:15];node[\"natural\"=\"peak\"](47.5,-122.5,47.7,-122.2);out body;" Validate complex queries at overpass-turbo.eu before use. For simple "what's near X?" or "what's in this area?" queries, us

ParameterTypeDescription
querystringOverpass QL query string. Must include [out:json]. The server sets the endpoint and User-Agent; do not include those. Example: "[out:json][timeout:15];node[\"natural\"=\"peak\"](47.5,-122.5,47.7,-122.
timeout_secondsintegerQuery timeout in seconds. The [timeout:N] directive in the query string takes precedence if present. Max 180s.