I have to clarify myself.
I fetch the tiles from https://tile.openstreetmap.org
I just built an interface that allows Claude to display them on its web app.
I didn’t create any duplicate library or any other kind of library what so ever.
OpenStreetMap (OSM) data is free for everyone to use. Our tile servers are not: they are funded by donations and sponsorship, and capacity is limited. To protect the service for mappers and the wider community,
LLMs are not part of our community.
Many HTTP clients and Software Development Kits (SDK) use a generic User-Agent header (e.g. okhttp/x.y, Go-http-client/1.1, python-requests/x.y, Java/1.8, curl/x.y). Traffic that uses these defaults will be blocked because we cannot identify or contact the actual application.
You’re helping LLMs to misuse the OSMF infrastructure.
We have already bad experience with Nominatim and Overpass misusage.
Displaying the map inside the chat interface is a minor evil. It’s just an iframe with Leaflet open. It’s like opening a link like this in a browser: osm.org/#map=19/56.7890/12.1234. It’s not clear why MCPs do this, because agents already know how to do it.
And here’s the fact that in MCP you provide a geocode-place tool that runs on top of Nominatim, which is much more sensitive to abuse… Well this is a direct violation of the rules: Update Nominatim usage policy by lonvia · Pull Request #170 · openstreetmap/owg-website · GitHub (for the sake of fairness, there is a delay between requests in this MCP, however, other rules are still violated)
Hell, agents can do this even without MCP, just by calling: nominatim.osm.org/search?format=jsonv2&q=London
And that’s all. Well, this is clearly not a thing that can be called an OpenStreetMapS MCP. (trademark compliance fight dogs, where are you? :)