OpenStreetMap MCP Server

OpenStreetMap MCP server providing precision geospatial tools for LLMs via Model Context Protocol. Features geocoding, routing, nearby places

Local serverstdioPython

What is the OpenStreetMap MCP server?

OpenStreetMap MCP server providing precision geospatial tools for LLMs via Model Context Protocol. Features geocoding, routing, nearby places, neighborhood analysis, EV charging stations, and more. The openstreetmap mcp server wraps that behind the Model Context Protocol, so an assistant can use it through 14 defined tools rather than through you.

What it actually does

This is a Go OpenStreetMap MCP server. It implements the Model Context Protocol to enable LLMs to interact with geospatial data.

  • Geocoding addresses and place names to coordinates
  • Reverse geocoding coordinates to addresses
  • Finding nearby points of interest
  • Calculating routes and getting directions between locations
  • Searching for places by category within a bounding box
  • Suggesting optimal meeting points for multiple people

Its toolset

Everything the assistant can do here goes through one of these:

  • Nominatim — For geocoding operations
  • OSRM — For routing calculations
  • bbox_from_points — Create a bounding box that encompasses all given geographic coordinates
  • centroid_points — Calculate the geographic centroid (mean center) of a set of coordinates
  • enrich_emissions — Enrich route options with CO2 emissions, calorie burn, and cost estimates
  • filter_tags — Filter OSM elements by specified tags
  • geocode_address — Convert an address or place name to geographic coordinates
  • geo_distance — Calculate the distance between two geographic coordinates
  • get_map_image — Retrieve and display an OpenStreetMap image for analysis
  • osm_query_bbox — Query OpenStreetMap data within a bounding box with tag filters
  • polyline_decode — Decode an encoded polyline string into a series of geographic coordinates
  • polyline_encode — Encode a series of geographic coordinates into a polyline string

Adding it to your client

Setup follows the usual MCP pattern — install or clone the server, register it in your client's configuration file, restart the client.

Configuration

  • Go 1.24 or higher - OpenStreetMap API access (no API key required, but rate limits apply)

When to reach for it

This sits in the developer tooling group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. OpenStreetMap's toolset — Nominatim, OSRM, bbox_from_points and 11 more — is a fair guide to whether it matches your workflow. It is maintained by NERVsystems; worth a glance at recent repository activity before you build anything load-bearing on it.

We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.

Caveats

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch OpenStreetMap.
  • MCP clients confirm each tool call by default. Leave that on until you have watched what the openstreetmap mcp server does with a few real requests.

Available tools

ToolWhat it does
NominatimFor geocoding operations
OSRMFor routing calculations
bbox_from_pointsCreate a bounding box that encompasses all given geographic coordinates
centroid_pointsCalculate the geographic centroid (mean center) of a set of coordinates
enrich_emissionsEnrich route options with CO2 emissions, calorie burn, and cost estimates
filter_tagsFilter OSM elements by specified tags
geocode_addressConvert an address or place name to geographic coordinates
geo_distanceCalculate the distance between two geographic coordinates
get_map_imageRetrieve and display an OpenStreetMap image for analysis
osm_query_bboxQuery OpenStreetMap data within a bounding box with tag filters
polyline_decodeDecode an encoded polyline string into a series of geographic coordinates
polyline_encodeEncode a series of geographic coordinates into a polyline string
reverse_geocodeConvert geographic coordinates to a human-readable address
route_fetchFetch a route between two points using OSRM routing service

Configuration

  • Go 1.24 or higher - OpenStreetMap API access (no API key required, but rate limits apply)

Example prompts to try

  • Use OpenStreetMap to Nominatim.
  • Use OpenStreetMap to OSRM.
  • Use OpenStreetMap to bbox from points.

Frequently asked questions

The server uses the OSRM routing service for route fetching and OpenStreetMap API data for queries. Polyline tools are self‑contained.