osm-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| USER_AGENT | No | Required by Nominatim policy | osm-mcp/0.1.0 (...) |
| CACHE_MAXSIZE | No | TTL cache sizing | 2048 |
| OSRM_BASE_URL | No | Routing upstream | https://router.project-osrm.org |
| CACHE_TTL_SECONDS | No | TTL cache sizing | 86400 |
| OVERPASS_BASE_URL | No | POI upstream | https://overpass-api.de |
| NOMINATIM_BASE_URL | No | Geocoding upstream | https://nominatim.openstreetmap.org |
| HTTP_TIMEOUT_SECONDS | No | Upstream call timeout | 15.0 |
| RATE_LIMIT_MIN_INTERVAL_SECONDS | No | Per-host request spacing | 1.0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Health-check tool. Returns Example: ping() -> {"status": "ok"} |
| geocodeA | Forward geocode a place name to a WGS84 coordinate (decimal degrees). Units: latitude/longitude in decimal degrees. Example: geocode(query="KL Sentral") -> GeoPoint(lat=3.1355, lon=101.7044) |
| reverse_geocodeA | Reverse geocode a coordinate to a human-readable address. Units: lat/lon in decimal degrees; returns a display-name string. Example: reverse_geocode(lat=3.15, lon=101.71) -> "Bukit Bintang, ..." |
| isochroneA | Reachable-area polygon within a travel-time budget. Units: lat/lon in decimal degrees; |
| poisA | Points of interest within Units: lat/lon decimal degrees; |
| bbox_summaryA | Counts of key amenities inside a bounding box (a light density helper). Units: all coordinates decimal degrees. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool targets a distinct spatial operation: forward and reverse geocoding are clearly opposed, while isochrone, pois, and bbox_summary are differentiated by query shape (travel budget, radius, bounding box) and return type. There is no real overlap that would cause an agent to select the wrong tool confidently.
All names are lowercase snake_case, which helps, but the convention is mixed: geocode/reverse_geocode/ping are verb-like, while isochrone, pois, and bbox_summary are noun-like descriptors. The pattern is readable but not consistently verb_noun.
Six tools is a well-scoped size for an OSM-focused server. Each tool covers a distinct geospatial need without redundancy, and the set does not feel either thin or bloated.
The server covers core geospatial workflows: geocoding, reverse geocoding, reachability, POI lookup, and area density summaries. It lacks advanced routing or direct OSM element retrieval, but these are not core to the apparent purpose and can be worked around.