
Isochrone
io.github.capanPublished by GitHub account capanv0.1.4Updated Oct 24, 2026
Berlin pedestrian isochrones: streets reachable on foot in N minutes (walk/stroller/wheelchair).
Overview
Answers Berlin pedestrian reachability questions — which streets you can walk, push a stroller, or roll a wheelchair to within N minutes.
- What you can do
- Exposes a single tool, reachable_area, that takes an origin, a time budget in minutes, and a mobility profile (walk, stroller, or wheelchair), plus an optional target to check whether it can be reached in time. It queries a Berlin street-network isochrone API and returns a prose summary with a map link rather than raw coordinates. Reachability is computed over the street graph, so results follow actual walkable streets instead of a filled polygon.
- When to use it
- Useful when you want an assistant to answer everyday Berlin questions such as how far you can get on foot in 15 minutes from an address, or whether a specific destination is reachable with a stroller or wheelchair. It is city-specific, so it is only worth adding for Berlin locations.
- Requirements
- Runs locally over stdio, typically started with npx from the isochrone-mcp npm package, so Node.js and network access to the hosted API are needed. No accounts, API keys, environment variables, or headers are declared.
Installation
In SourceWeft
- Open Isochrone in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
isochrone
Live: iso.huseyincapan.dev
Click anywhere on the map and see the street network you can actually reach on foot within 15 minutes — coloured by arrival time, with mobility profiles that account for stairs and unpaved paths.
OSM data → PostGIS + pgRouting → Express → Leaflet.
[Same corner, same 15 minutes, drawn two ways: the reachable street network against the hull drawn around it]Why not a polygon?
Every isochrone map I could find answers with a filled polygon. That is wrong unless you are a pigeon: a polygon claims you can reach the middle of a block, cross a rail cutting, walk through a building. On the corner above, the same 15 minutes gives you 107.6 km of reachable streets; the hull drawn around them covers 3.28 km² and claims 30.4 km of street the walk cannot actually reach. This map draws the network.
How it works
pgr_drivingDistance walks the street graph from the vertex nearest your click
until the time budget runs out, and returns every reachable edge with its
arrival time. Those edges are grouped into 10 equal time bands and drawn
directly.
Edge cost is length / speed in seconds, computed per request from the
selected profile, so a profile is a few numbers rather than a schema change:
These factors are estimates, not measurements — see Known gaps.
Where should I live?
Answer a short questionnaire weighting seven everyday layers (dining, green space, playgrounds, groceries, health, kindergartens, schools) and the whole Berlin map re-ranks to show where your weighted 15-minute city actually is, as walk, bike or wheelchair.
The trick is that nothing is routed at question time: 21 full-city reachability surfaces (7 layers × 3 profiles, ~134,000 grid cells each) are precomputed offline, so re-ranking the city is one aggregate query. Stroller is deliberately absent here: its speed factors are uncalibrated estimates and must not be published as if measured.
Ask Claude about it (MCP)
The isochrone-mcp package lets
any MCP client answer reachability questions against this API:
One tool, reachable_area: origin + minutes + profile, optional target
("can I get there in time?"). Returns a prose summary and a map link, not
coordinate soup. Details in mcp/.
Known gaps
- Graph islands. The vertex nearest a click can sit on a disconnected
fragment —
52.515,13.400reaches 13 nodes. Fix is a one-timepgr_connectedComponentstable for the vertex lookup to join against. - Calibration. The speeds above are guesses. Google's Isochrones API
(Preview) supports
WALKand returns GeoJSON, so thewalkprofile could be calibrated against it. It has no stroller/wheelchair mode, so those stay unvalidated. - Stranded origins render as a tiny blob rather than saying "unreachable with this profile".
Running it yourself
Dev setup, deployment, city import and the ops notes live in docs/OPERATIONS.md.
Source: README.md at commit 776e893
Tools
0Version history
1- v0.1.4LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts