Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/nominatim-mcp-server

REMOTE · NOMINATIM.CASEYJHAND.COM · 2 COMPONENTS · SCANNED AUG 20

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

−19 this week 0 Trust /100

Deprecated

This server is marked deprecated in the MCP registry. The registry records this reason: Renamed to io.github.cyanheads/openstreetmap-mcp-server.

Dead

Every channel of this server has been unreachable for long enough to be marked dead. Its trust score is pinned to 0 and does not recover automatically: even once the server responds again it stays dead until it is manually reinstated.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security11
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema not yet verified: we couldn't read the endpoint's schema.Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage not yet verified: we couldn't read the endpoint's tools.Unverified
Tool Safety

Not scored yet: our latest scan of this component recorded no findings here. It fills in the next time we score it.

Capabilities0
  • Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified

Unverified: 4 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

Install

How do I install the io.github.cyanheads/nominatim-mcp-server server?

io.github.cyanheads/nominatim-mcp-server is a hosted endpoint at https://nominatim.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · nominatim.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-nominatim-mcp-server 'https://nominatim.caseyjhand.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "cyanheads-nominatim-mcp-server": {
      "url": "https://nominatim.caseyjhand.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "cyanheads-nominatim-mcp-server": {
      "type": "http",
      "url": "https://nominatim.caseyjhand.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.cyanheads-nominatim-mcp-server]
url = "https://nominatim.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-nominatim-mcp-server": {
      "type": "remote",
      "url": "https://nominatim.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-nominatim-mcp-server --url 'https://nominatim.caseyjhand.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-nominatim-mcp-server:
    url: "https://nominatim.caseyjhand.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "cyanheads-nominatim-mcp-server": {
      "Transport": "http",
      "Url": "https://nominatim.caseyjhand.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add cyanheads-nominatim-mcp-server -t streamable-http -u 'https://nominatim.caseyjhand.com/mcp'
// mcp.json
{
  "mcpServers": {
    "cyanheads-nominatim-mcp-server": {
      "type": "http",
      "url": "https://nominatim.caseyjhand.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Aug 26 −5

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 17 Aug 26 −5

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 16 Aug 26 −4

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 15 Aug 26 −5

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 13 Aug 26 −5

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 10 Aug 26 0
    • Endpoint reachability: behind authorisation → unreachable security
    • HSTS header: fail → unverified security
    • DNSSEC: pass → unverified security
    • TLS certificate: pass → unverified security
    • Transport: Transport check failed: declared streamable-http, but we couldn't connect to verify it. security
    • Authorization: Authorisation not yet verified: we couldn't confirm whether this endpoint requires it. security
    • Schema quality: Schema not yet verified: we couldn't read the endpoint's schema. functional
    • Capabilities: Capabilities not yet verified: we couldn't read the endpoint's capabilities. functional
    • Tool coverage: Tool coverage not yet verified: we couldn't read the endpoint's tools. functional
  • 8 Aug 26 −12
    • Transport: pass → fail security
    • HSTS header: pass → fail security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Aug 2026 · Probed https://nominatim.caseyjhand.com/mcp

TLS unreached
DNSSEC inconclusive

Validation of nominatim.caseyjhand.com. Inconclusive

Zone DS Keys Algorithms Outcome
nominatim.caseyjhand.com. Error no A/AAAA/CNAME RRset answered for the name
Authentication Inconclusive

We could not reach the endpoint well enough to judge its authorisation posture.

Result Inconclusive

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://nominatim.caseyjhand.com/mcp Unreachable
http (plaintext) http://nominatim.caseyjhand.com/mcp HTTPS enforced
MCP tools · 6 exposed · ~2,748 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
openstreetmap_lookup_objects ~232

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.

NameTypeReqDescription
extratagsbooleanInclude extra OSM tags (phone, website, wikidata, etc.).
languagestringPreferred language for names (BCP 47 code).
osm_idsarrayyesOSM IDs to look up, each prefixed with N (node), W (way), or R (relation). Always an array, including for a single ID: ["N240109189"], ["W50637691", "R146656"]. Up to 50 IDs per call.
NameTypeReqDescription
attributionstringyesRequired data attribution: Data © OpenStreetMap contributors, ODbL 1.0.
not_foundarrayyesOSM IDs from the request that returned no result.
resultsarrayyesAddress details for the requested OSM IDs that were found.
totalnumberyesNumber of results returned.

No examples provided.

openstreetmap_query_bbox ~543

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 the Nominatim-backed openstreetmap_search_places, openstreetmap_reverse_geocode, and openstreetmap_lookup_objects tools) does not apply here. For proximity searches centered on a point, use openstreetmap_query_nearby instead.

NameTypeReqDescription
amenitystringOSM amenity tag value shortcut (e.g., "cafe", "bench", "hospital"). Cannot be combined with tag_key/tag_value.
eastnumberyesEastern boundary longitude (maximum longitude). A value below west describes an antimeridian crossing rather than an inverted box.
element_typesarrayOSM element types to search. Ways cover most buildings and areas; nodes cover most standalone POIs. Add "relation" for complex structures.
limitintegerMaximum results to return. Applied after the Overpass query — if the area has more features, they are truncated.
northnumberyesNorthern boundary latitude (maximum 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…
southnumberyesSouthern boundary latitude (minimum latitude).
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").
timeout_secondsintegerOverpass query timeout in seconds. Increase for large bounding boxes or dense areas.
westnumberyesWestern boundary longitude (minimum longitude). A west greater than east is valid, not an error: Overpass reads it as an antimeridian-crossing box and returns the union of west..180 and -180..east.
NameTypeReqDescription
attributionstringyesRequired data attribution: Data © OpenStreetMap contributors, ODbL 1.0.
data_timestampstringOSM data freshness timestamp from the Overpass response. Absent when the endpoint reported no freshness metadata.
effectiveTagstringyesThe OSM tag filter applied (key=value, e.g. "amenity=cafe" or "leisure=park").
elementsarrayyesMatching OSM features within the bounding box, up to the limit.
nextOffsetnumberOffset to pass on the next call to retrieve the following page of features. Present only when more features remain beyond this page.
noticestringGuidance when the page came back empty. Distinguishes a query that matched nothing (try a different bounding box or tag) from an offset past the end of a non-empty result set (retry at a lower offset…
servingEndpointstringOverpass endpoint that produced this response, as origin and path. Differs from the first configured endpoint when a mirror answered after the primary failed, and names the endpoint that served a cac…
totalFoundnumberyesTotal features returned by Overpass before limit truncation.
truncatedbooleanyesTrue if results were cut at the limit. Reduce bbox area, add more specific tags, or page with offset to retrieve the rest.

No examples provided.

openstreetmap_query_nearby ~545

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 with its full OSM tag set, sorted nearest-first by distance_meters from the center point. The extratags flag is not needed here — it applies only to the Nominatim-backed openstreetmap_search_places, openstreetmap_reverse_geocode, and openstreetmap_lookup_objects tools.

NameTypeReqDescription
amenitystringOSM amenity tag value (e.g., "hospital", "pharmacy", "restaurant", "school", "atm"). Shortcut for tag_key="amenity". Cannot be combined with tag_key/tag_value.
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.
latnumberyesCenter latitude in WGS84 decimal degrees.
limitintegerMaximum results to return. Applied after the Overpass query — if the area has more features, they are truncated.
lonnumberyesCenter longitude in WGS84 decimal degrees.
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; t…
radius_metersnumberSearch radius in meters. Max 50,000m (50km). Keep under 5,000m for dense urban POI queries to avoid slow responses.
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").
timeout_secondsintegerOverpass query timeout in seconds. Increase for large radius or dense areas.
NameTypeReqDescription
attributionstringyesRequired data attribution: Data © OpenStreetMap contributors, ODbL 1.0.
data_timestampstringOSM data freshness timestamp from the Overpass response. Absent when the endpoint reported no freshness metadata.
effectiveTagstringyesThe OSM tag filter applied (key=value, e.g. "amenity=cafe" or "leisure=park").
elementsarrayyesMatching OSM features, up to the limit.
nextOffsetnumberOffset to pass on the next call to retrieve the following page of features. Present only when more features remain beyond this page.
noticestringGuidance when the page came back empty. Distinguishes a query that matched nothing (try a larger radius or different tag) from an offset past the end of a non-empty result set (retry at a lower offse…
servingEndpointstringOverpass endpoint that produced this response, as origin and path. Differs from the first configured endpoint when a mirror answered after the primary failed, and names the endpoint that served a cac…
totalFoundnumberyesTotal features returned by Overpass before limit truncation.
truncatedbooleanyesTrue if results were cut at the limit. Reduce radius, add more specific tags, or page with offset to retrieve the rest.

No examples provided.

openstreetmap_query_raw ~462

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;" Returns one page of the result set: use limit and offset to page through it, and read totalFound and truncated to see how much the query matched. Validate complex queries at overpass-turbo.eu before use. For simple "what's near X?" or "what's in this area?" queries, use openstreetmap_query_nearby or openstreetmap_query_bbox instead.

NameTypeReqDescription
limitintegerMaximum elements to return. Applied after the Overpass query — if the query matched more, they are truncated.
offsetintegerNumber of matching elements 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…
querystringyesOverpass 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, bounding how long Overpass itself spends on the query. The [timeout:N] directive in the query string takes precedence if present. The client waits for what is requested here…
NameTypeReqDescription
attributionstringyesRequired data attribution: Data © OpenStreetMap contributors, ODbL 1.0.
data_timestampstringOSM data freshness timestamp from the Overpass response. Absent when the endpoint reported no freshness metadata.
effectiveQuerystringyesThe Overpass QL string as sent to the API (after any timeout injection).
elementsarrayyesRaw Overpass API response elements for this page, up to the limit. Structure varies by query type — nodes have lat/lon, ways have nodes[], relations have members[].
nextOffsetnumberOffset to pass on the next call to retrieve the following page of elements. Present only when more elements remain beyond this page.
noticestringGuidance when the page came back empty. Distinguishes a query that matched nothing (check syntax or broaden the filter) from an offset past the end of a non-empty result set (retry at a lower offset)…
servingEndpointstringOverpass endpoint that produced this response, as origin and path. Differs from the first configured endpoint when a mirror answered after the primary failed, and names the endpoint that served a cac…
totalFoundnumberyesTotal elements returned by Overpass before limit truncation.
total_elementsnumberyesNumber of elements returned on this page. See totalFound for the full match count.
truncatedbooleanyesTrue if elements were cut at the limit. Narrow the query, or page with offset to retrieve the rest.

No examples provided.

openstreetmap_reverse_geocode ~272

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).

NameTypeReqDescription
extratagsbooleanInclude extra OSM tags when available (phone, website, opening_hours, wikidata, etc.).
languagestringPreferred language for the result (BCP 47 code or Accept-Language string).
latnumberyesLatitude in WGS84 decimal degrees.
layerstringRestrict which OSM layer is matched. Comma-separated: address, poi, railway, natural, manmade. Default: address,poi.
lonnumberyesLongitude 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.
NameTypeReqDescription
attributionstringyesRequired data attribution.
resultobjectyesThe closest matching OSM object at the given coordinates.

No examples provided.

openstreetmap_search_places ~694

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_bbox instead — Nominatim search returns best matches, not all matching objects.

NameTypeReqDescription
citystringCity name (structured query).
countrystringCountry name or ISO 3166-1 alpha-2 code (structured query).
countrycodesstringRestrict results to one or more countries. Comma-separated ISO 3166-1 alpha-2 codes (e.g., "us,ca"). Preferred over the structured country field when filtering.
countystringCounty or district (structured query).
exclude_place_idsarrayOSM refs (N/W/R + id) or Nominatim place_ids to drop from results, forwarded as the exclude_place_ids parameter. Pass the nextExcludeIds value from a prior truncated response to page toward the next-…
extratagsbooleanInclude extra OSM tags when available (e.g., phone, website, opening_hours, wikidata). Increases response size.
featureTypestringRestrict results to a geographic feature type. Automatically implies the address layer.
languagestringPreferred language for result names (BCP 47 code or Accept-Language string, e.g., "en", "de", "fr,en"). Defaults to local OSM language.
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.
postalcodestringPostal or ZIP code (structured query).
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 r…
statestringState or province (structured query).
streetstringHouse number and street name (structured query). Use with city/state/country fields. Cannot be combined with query.
NameTypeReqDescription
attributionstringyesRequired data attribution: Data © OpenStreetMap contributors, ODbL 1.0.
capnumberThe limit applied to this request.
effectiveQuerystringyesThe effective query sent to Nominatim — the free-form query string, or a reconstructed string from the provided structured address fields.
nextExcludeIdsarrayAccumulated exclude tokens (prior excludes plus this page) to pass as exclude_place_ids on the next call, retrieving the next-best matches. Each token is a stable OSM ref (N/W/R + osm_id) when the re…
noticestringGuidance for this page, covering two cases: results were capped at limit (truncated is true — keep paging with nextExcludeIds), or an exclude_place_ids paging walk is exhausted and the page came back…
resultsarrayyesGeocoding results, ordered by Nominatim relevance (importance score descending).
shownnumberNumber of results returned.
totalnumberyesNumber of results returned.
truncatedbooleanTrue if the result count equals the requested limit (Nominatim may have more).

No examples provided.

Common questions

What is the io.github.cyanheads/nominatim-mcp-server server?

io.github.cyanheads/nominatim-mcp-server is listed in the public MCP registry as io.github.cyanheads/nominatim-mcp-server. Geocode, reverse geocode, and run Overpass spatial queries on OpenStreetMap data. This page covers its hosted endpoint (https://nominatim.caseyjhand.com/mcp).

Is the io.github.cyanheads/nominatim-mcp-server server safe to use?

io.github.cyanheads/nominatim-mcp-server scores 0 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cyanheads/nominatim-mcp-server server expose?

io.github.cyanheads/nominatim-mcp-server exposes 6 tools: openstreetmap_search_places, openstreetmap_reverse_geocode, openstreetmap_lookup_objects, openstreetmap_query_nearby, openstreetmap_query_bbox, openstreetmap_query_raw. Their descriptions and schemas cost roughly 2,748 tokens of context every time the server is loaded.

Does the io.github.cyanheads/nominatim-mcp-server server require authentication?

Its publisher declares no required credentials for io.github.cyanheads/nominatim-mcp-server. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

Is the io.github.cyanheads/nominatim-mcp-server server still maintained?

io.github.cyanheads/nominatim-mcp-server is marked deprecated in the MCP registry. We last reached this channel on 9 August 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.