← Back to search

io.github.cyanheads/nominatim-mcp-server

cyanheads streamable_http Scanned 24d ago

Geocoding, reverse geocoding, and spatial queries via OpenStreetMap Nominatim and Overpass

B
87.4 / 100

Versions

0.1.3latest
first seen Jun 5, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 6

openstreetmap_search_places
annotations: verified low

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

city string state string county string postalcode string
readOnlyHint true openWorldHint true idempotentHint true
openstreetmap_query_bbox
annotations: verified low

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

readOnlyHint true openWorldHint true idempotentHint true
openstreetmap_query_nearby
annotations: verified low

Find 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), sorted nearest-first by distance_meters, with nodes covering standalone POIs and ways covering buildings and areas.

lat number lon number
readOnlyHint true openWorldHint true idempotentHint true
openstreetmap_query_raw
annotations: verified low

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

input object
readOnlyHint true openWorldHint true idempotentHint true
openstreetmap_reverse_geocode
annotations: verified low

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

lat number lon number input object output object osm_type enum place_id number
readOnlyHint true openWorldHint true idempotentHint true
openstreetmap_lookup_objects
annotations: verified low

Fetch the Nominatim address record for up to 50 known OSM objects by ID, each prefixed N (node), W (way), or R (relation), e.g. "N240109189". Use it for IDs already in hand from openstreetmap_query_nearby or openstreetmap_query_bbox; it returns only objects named in osm_ids, listing any that resolve to nothing under not_found, and cannot select by tag, so discover objects with those tools or openstreetmap_query_raw first.

lat number lon number type string input object output object category string language string osm_type enum place_id number display_name string
readOnlyHint true openWorldHint true idempotentHint true

Permissions 3

network medium
Server uses network capabilities via: fetch()
shell high
Server uses shell capabilities via: child_process, spawn(), spawnSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 22

info
Tool 'openstreetmap_query_bbox' annotations are consistent annotation_checker · 80%
info
Tool 'openstreetmap_query_nearby' annotations are consistent annotation_checker · 80%
info
Tool 'openstreetmap_query_raw' annotations are consistent annotation_checker · 80%
info
Tool 'openstreetmap_reverse_geocode' annotations are consistent annotation_checker · 80%
info
Tool 'openstreetmap_lookup_objects' annotations are consistent annotation_checker · 80%
info
Tool 'openstreetmap_search_places' annotations are consistent annotation_checker · 80%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
package.json metadata manifest_parser · 100%
info
Tool: openstreetmap_query_bbox manifest_parser · 75%
info
Tool: openstreetmap_query_nearby manifest_parser · 75%
info
Tool: openstreetmap_query_raw manifest_parser · 75%
info
Tool: openstreetmap_reverse_geocode manifest_parser · 75%
info
Tool: openstreetmap_lookup_objects manifest_parser · 75%
info
Tool: openstreetmap_search_places manifest_parser · 75%
info
Required env vars (4) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 11 components sbom_generator · 100%
high
Hardcoded Password found in cyanheads-openstreetmap-mcp-server-f702bd3/framework-skills/api-utils/references/security.md secret_scanner · 65%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%