Most Strava integrations stop at the activity summary. The stream, lap and best-effort tools go underneath it — heart rate against altitude across a run, the split where the pace fell apart, whether that 5k actually was a PR — which is what makes the analysis conversation worth having. The route tools point the other way and produce something to do next, as a Google Maps link rather than a file to import.
A Java server for Strava. It reads activities and the data streams underneath them, summarises training by week, by month or year over year, and generates round-trip routes as Google Maps links.
- Your most recent activity, any activity by its ID, the last 10, or a paginated search across a date range
- The full data streams for an activity — heart rate, pace, altitude, cadence, power, GPS
- Lap splits with distance, time, speed, elevation and heart rate for each lap
- Personal best efforts on a run — 400m, 1k, 1 mile, 5k, 10k — with pace and PR ranking
- All-time statistics across rides, runs and swims, plus summaries of the last 7 days, the last 30, or a named month and year
- Two months compared directly, such as January 2025 against January 2026
- Activities filtered by sport type
- A round-trip route of the distance you ask for, handed back as a Google Maps link with no maps API key needed
- Popular Strava segments near a place, assembled into a Google Maps loop through them
- A logout that clears the stored tokens when you need to switch accounts
A Strava API application: CLIENT_ID and CLIENT_SECRET from strava.com/settings/api, written into src/main/resources/.env. Build with ./gradlew shadowJar and point your client at the resulting jar through java -jar. On first use it opens a browser for Strava authorisation; the tokens land in ~/.strava-mcp-token.json and refresh themselves when they expire.
