{"servers":[{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ljcl/intervals-mcp","description":"Remote MCP server for intervals.icu run data and analysis","repository":{"url":"https://github.com/ljcl/intervals-mcp","source":"github"},"version":"2.18.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.18.0","runtimeHint":"docker","transport":{"type":"streamable-http","url":"http://localhost:3000/mcp"},"environmentVariables":[{"description":"intervals.icu personal API key (Settings, Developer Settings)","isRequired":true,"format":"string","isSecret":true,"name":"INTERVALS_API_KEY"},{"description":"Athlete id: 0 (default, the API key's own athlete) or e.g. i12345","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney; unset or UTC follows the athlete's intervals.icu time zone (Etc/UTC pins UTC)","format":"string","name":"TZ"},{"description":"OpenRouteService API key (openrouteservice.org) for generated route suggestions; unset offers past runs only","format":"string","isSecret":true,"name":"ORS_API_KEY"},{"description":"Usual run start as lat,lng (e.g. 37.79,-122.39); unset infers it from recent GPS runs","format":"string","isSecret":true,"name":"HOME_START"},{"description":"URL of an .osm.pbf (e.g. a BBBike city or Geofabrik region) for the local OpenStreetMap index that counts road crossings in route suggestions; needs HOME_START","format":"string","name":"OSM_EXTRACT_URL"},{"description":"Shared secret (32+ characters) gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port, 1-65535 (default 3000)","format":"number","name":"PORT"},{"description":"Directory for stored routes (stitch-route, amend-route); the image uses /data, a volume in docker-compose.yml. Default ./data","format":"string","name":"DATA_DIR"},{"description":"Days a stored route not read or changed is kept, 1-3650 (default 30)","format":"number","name":"ROUTE_RETENTION_DAYS"},{"description":"Public URL, used only to warn when /mcp is exposed without MCP_AUTH_TOKEN","format":"string","name":"PUBLIC_URL"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-11-09T04:22:36.525557Z","publishedAt":"2026-11-09T04:22:36.525557Z","updatedAt":"2026-11-09T04:22:36.525557Z","isLatest":true}}}],"metadata":{"count":1}}
