Skip to main content

openstreetmap-mcp-server

io.github.cyanheads/openstreetmap-mcp-serverVersion 0.7.2

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

Status

Responds261 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:48 UTC
Latency
261 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://openstreetmap.caseyjhand.com/mcpResponds261 ms
No sign-in

Claude Code

claude mcp add --transport http openstreetmap-mcp-server https://openstreetmap.caseyjhand.com/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: openstreetmap-mcp-server
Remote MCP server URL: https://openstreetmap.caseyjhand.com/mcp

Cursor

{
  "mcpServers": {
    "openstreetmap-mcp-server": {
      "url": "https://openstreetmap.caseyjhand.com/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"openstreetmap-mcp-server","type":"http","url":"https://openstreetmap.caseyjhand.com/mcp"}'
Streamable HTTP
npm: @cyanheads/openstreetmap-mcp-server 0.7.2
Package only

npm (npx)

claude mcp add openstreetmap-mcp-server -- npx -y @cyanheads/openstreetmap-mcp-server@0.7.2
Streamable HTTP
npm: @cyanheads/openstreetmap-mcp-server 0.7.2
Package only

npm (npx)

claude mcp add openstreetmap-mcp-server -- npx -y @cyanheads/openstreetmap-mcp-server@0.7.2

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

6 tools

Tools of openstreetmap-mcp-server
Read-only
Idempotent
Open world
openstreetmap_lookup_objectsFetch the Nominatim address record for known OSM objects by ID, 50 per call with any more returned under deferred_ids, each N (node), W (way), or R (relation) plus the id, e.g. "N240109189", or the object's openstreetmap.org path or URL. Use it for IDs already in hand from openstreetmap_query_nearby or openstreetmap_query_bbox; it returns only objects named in osm_ids and lists those with no Nominatim record under not_found (Nominatim skips unnamed and non-place objects, so such an ID may still exist). It cannot select by tag, so discover objects with those tools or openstreetmap_query_raw first.Not declaredYesYesYes
openstreetmap_query_bboxFind OSM features inside an area via the Overpass API, for surveys of everything in a region (openstreetmap_query_nearby covers proximity to a point). Scope with the four corner fields south, west, north, east, or with within and a single OSM boundary ref such as a city relation or a park way, which searches the boundary polygon itself instead of an overcovering box; never both. Filter with amenity, or with tag_key plus an optional tag_value, ANDing up to five more filters; every feature returns with its full OSM tag set (no extratags flag here) or the keys tag_keys lists.Not declaredYesYesYes
openstreetmap_query_nearbyFind OSM features within a radius of a point via the Overpass API, the tool for "what is near X?" questions. Filter with amenity, or with tag_key plus an optional tag_value, ANDing up to five more filters; every feature returns with its full OSM tag set (no extratags flag here) or the keys tag_keys lists, sorted nearest-first by distance_meters. An area containing the point, such as the park or city it lies in, matches at 0 m whatever the radius.Not declaredYesYesYes
openstreetmap_query_rawRun an arbitrary Overpass QL query for anything the convenience tools cannot express: multi-type or union queries, relation membership, historical queries, regex tag matching. The query must include [out:json], e.g. "[out:json][timeout:15];node[\"natural\"=\"peak\"](47.5,-122.5,47.7,-122.2);out body;"; scope to an OSM boundary with rel(<id>);map_to_area->.a; or way(<id>);map_to_area->.a; then (area.a) on each statement (the 2400000000 way-area offset is gone since Overpass 0.7.57; openstreetmap_query_bbox takes the same scope as within, without QL). The response is one page: page with limit and offset, read totalFound and truncated for the whole match, and an element over max_element_bytes arrives with its members, nodes or geometry array withheld whole and withheldNotice saying how to fetch it back. For plain "near X" or "in this area" questions use openstreetmap_query_nearby or openstreetmap_query_bbox.Not declaredYesYesYes
openstreetmap_reverse_geocodeConvert a latitude/longitude pair to the nearest address or named place via Nominatim. The result is the closest indexed OSM object at the requested zoom (18 building, 10 city), which in dense areas can be a neighbouring feature rather than the one containing the coordinate; proximity and layer pick it, never an OSM attribute tag, so find features by tag with openstreetmap_query_nearby, openstreetmap_query_bbox, or openstreetmap_query_raw.Not declaredYesYesYes
openstreetmap_search_placesGeocode a place name or address to coordinates and structured place data via Nominatim. Send either a free-form query or the structured address fields (street, city, county, state, country, postalcode), never both; results are the best-ranked matches, not every matching object, and matching never uses an OSM attribute tag, so filter or enumerate by tag with openstreetmap_query_nearby, openstreetmap_query_bbox, or openstreetmap_query_raw.Not declaredYesYesYes

Details

Registry status
Active
Published
Nov 11, 2026
Updated
Nov 11, 2026
Website
Not given
Categories (suggested)
Search and webSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing