overpass.ch
ch.overpass/overpassVersion 1.3.0Overpass API on the full planet with history, plus geocoding and elevation. Needs an account.
Status
Responds105 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 13:43 UTC
- Latency
- 105 ms
- Remotes responding
- 2 of 3
- Sign-in
- OAuth sign-in, API key, Sign-in unknown
- Hosting
- EU hosting detected (detected, not a legal statement)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://api.overpass.ch/mcpSign-in required105 msOAuth sign-in
Claude Code
This server asks for sign-in. Your client opens the sign-in when it connects.
claude mcp add --transport http overpass https://api.overpass.ch/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: overpass
Remote MCP server URL: https://api.overpass.ch/mcpCursor
{
"mcpServers": {
"overpass": {
"url": "https://api.overpass.ch/mcp"
}
}
}VS Code
code --add-mcp '{"name":"overpass","type":"http","url":"https://api.overpass.ch/mcp"}'Streamable HTTP
https://api.overpass.ch/v1/mcpResponds871 msNo sign-in
Claude Code
claude mcp add --transport http overpass https://api.overpass.ch/v1/mcp --header 'X-API-Key: <YOUR_X_API_KEY>'Replace <YOUR_X_API_KEY> before running.
Claude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: overpass
Remote MCP server URL: https://api.overpass.ch/v1/mcp
This server expects the header X-API-Key.Cursor
{
"mcpServers": {
"overpass": {
"url": "https://api.overpass.ch/v1/mcp",
"headers": {
"X-API-Key": "<YOUR_X_API_KEY>"
}
}
}
}Replace <YOUR_X_API_KEY> before running.
VS Code
code --add-mcp '{"name":"overpass","type":"http","url":"https://api.overpass.ch/v1/mcp","headers":{"X-API-Key":"<YOUR_X_API_KEY>"}}'Replace <YOUR_X_API_KEY> before running.
Streamable HTTP
https://api.overpass.ch/v1/{api_key}/mcpNot checkedClaude Code
claude mcp add --transport http overpass 'https://api.overpass.ch/v1/<YOUR_API_KEY>/mcp'Replace <YOUR_API_KEY> before running.
Claude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: overpass
Remote MCP server URL: https://api.overpass.ch/v1/<YOUR_API_KEY>/mcpReplace <YOUR_API_KEY> before running.
Cursor
{
"mcpServers": {
"overpass": {
"url": "https://api.overpass.ch/v1/<YOUR_API_KEY>/mcp"
}
}
}Replace <YOUR_API_KEY> before running.
VS Code
code --add-mcp '{"name":"overpass","type":"http","url":"https://api.overpass.ch/v1/<YOUR_API_KEY>/mcp"}'Replace <YOUR_API_KEY> before running.
Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
9 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
account_statusThe plan of the API key of this connection and its use this month: Overpass requests used and left, when the allowance starts again, running queries, elevation lookups, geocoding requests, and the date of the data. It names the products on a free plan, which is not for commercial use. It does not count as a request. | No | Yes | Yes | No |
elevation_pointsHeights above sea level in metres for a list of points, negative at sea. Switzerland and Liechtenstein: swissALTI3D, a 2 m grid of the ground (credit "© swisstopo"). Elsewhere on land: Copernicus GLO-30, a 30 m grid of the surface that includes buildings and trees. At sea: GEBCO. Each point counts as one lookup; account_status shows the plan maximum per call. | No | Yes | Yes | Yes |
elevation_profileElevation profile along a path of two or more points: distance, ascent, descent, the lowest and the highest point, and up to 100 points along the way (distance from the start, height, lat, lon). The path is sampled every 90 m unless samples or interval_m is set. Each sample counts as one lookup, up to the plan maximum per call. | No | Yes | Yes | Yes |
geocode_reverseFinds the address or place at a point (reverse geocoding). detail chooses what to return: the nearest address or object (address, the default), the street, the district, the city, the county, the state or the country that contains the point. The result has the same fields as those of geocode_search. One call counts as one geocoding request. | No | Yes | Yes | Yes |
geocode_searchFinds places, addresses and points of interest by name (geocoding). Partial text works, as for autocomplete. Each result has the name, the address, lat and lon, a bounding box (south, west, north, east), the OpenStreetMap element (osm), and for ways and relations an overpass_area_id to use in overpass_query as area(id:N). Languages: en, de, fr. One call counts as one geocoding request. | No | Yes | Yes | Yes |
overpass_examplesSearches the cookbook of overpass.ch: Overpass queries that were tested on the full planet, with explanations. Give a topic in a few words, such as "bakeries in a city", "hiking routes", "count buildings" or "changes since a date", and get the 5 closest examples with their query and a link. It does not count as a request. | No | Yes | Yes | No |
overpass_queryRuns an Overpass QL query on the full OpenStreetMap planet at overpass.ch (minutely updates) and returns the matching nodes, ways and relations with their tags.
Start the query with a settings line such as [out:json][timeout:25]; JSON is used when the query does not set [out:]. [timeout:N] stops the query after N s: at most 120 s through this tool, and the plan may allow less.
Patterns:
- Box (south,west,north,east): nwr["amenity"="cafe"](47.36,8.53,47.38,8.55); out center;
- Radius in metres around lat,lon: nwr["amenity"="pharmacy"](around:1000,47.3769,8.5417); out center;
- In a place: overpass_area_id from geocode_search, then area(id:3600051701)->.a; nwr["tourism"="hotel"](area.a); out center;
- By name (exact, local language): area["name"="Wien"]["admin_level"="4"]->.a;
- Count: out count; Tags only: out tags; At most 50: out center 50; Lines with coordinates: out geom; (large)
- Regex, any case: ["name"~"^Bahnhof",i]
- By id: node(3470507586); out; way(id:1,2,3); out tags;
- The map at a past date (Pro and Business plans): [date:"2015-01-01T00:00:00Z"] in the settings line.
The answer starts with counts and the date of the data, then one JSON object per element and line, up to max_chars characters. When it is cut, call again with offset, or narrow the query. Each call counts as one request of the plan, a cut one too. Data © OpenStreetMap contributors, ODbL. | No | Yes | Yes | Yes |
overpass_tagsChecks OpenStreetMap tags before a query: how often a key or tag is used in the world (nodes, ways, relations), the most used values of a key, and the keys and tags most often found on the same objects. Give a key ("cuisine"), a tag ("amenity=charging_station") or a few English words ("charging station", "drinking water"); words are matched to the presets of the iD editor. When overpass_query finds nothing, the tag may be rare or written another way: check it here. Counts from taginfo, updated weekly. It does not count as a request. | No | Yes | Yes | Yes |
overpass_translateTurns a sentence in English, German, French or Italian, such as "cafés with outdoor seating in Zürich" or "hotels between Bern and Thun", into an Overpass QL query, with the translator of overpass.ch. It does not run the query. The answer says how the sentence was read, gives the query, notes when the query finds more than the sentence asks for (opening hours, for example, are not part of Overpass QL), and other readings of the thing and the place. Write places as on an envelope, with their region or country ("huts above 2500 m in Wallis, Switzerland", "cafés in Springfield, Illinois"): the geocoder looks up place names around the world, and a name alone can be a village elsewhere. Check how the answer read the place; when it is not the place meant, call again with the region or country in the sentence, or with within. within keeps the places to a box (a canton, a country), and a sentence without a place, such as "cafés nearby", searches in it; near is the position of the user. One call counts as one request. | No | Yes | Yes | Yes |
Details
- Registry status
- Active
- Published
- Nov 14, 2026
- Updated
- Nov 14, 2026
- Categories
- Uncategorized
- GDPR
- Not declared