{"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":"0.2.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:0.2.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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-09-25T23:40:44.993093Z","publishedAt":"2026-09-25T23:40:44.993093Z","updatedAt":"2026-09-25T23:40:44.993093Z","isLatest":false}}},{"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":"1.0.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:1.0.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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-09-26T00:47:33.337384Z","publishedAt":"2026-09-26T00:47:33.337384Z","updatedAt":"2026-09-26T00:47:33.337384Z","isLatest":false}}},{"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":"1.0.1","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:1.0.1","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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-09-26T01:18:55.628136Z","publishedAt":"2026-09-26T01:18:55.628136Z","updatedAt":"2026-09-26T01:18:55.628136Z","isLatest":false}}},{"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.0.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.0.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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-09-26T01:38:44.406481Z","publishedAt":"2026-09-26T01:38:44.406481Z","updatedAt":"2026-09-26T01:38:44.406481Z","isLatest":false}}},{"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.1.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.1.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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-09-26T22:09:41.435322Z","publishedAt":"2026-09-26T22:09:41.435322Z","updatedAt":"2026-09-26T22:09:41.435322Z","isLatest":false}}},{"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.1.1","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.1.1","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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-09-27T00:20:08.416446Z","publishedAt":"2026-09-27T00:20:08.416446Z","updatedAt":"2026-09-27T00:20:08.416446Z","isLatest":false}}},{"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.2.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.2.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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-10-05T03:59:57.198776Z","publishedAt":"2026-10-05T03:59:57.198776Z","updatedAt":"2026-10-05T03:59:57.198776Z","isLatest":false}}},{"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.3.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.3.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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-10-05T12:11:07.528991Z","publishedAt":"2026-10-05T12:11:07.528991Z","updatedAt":"2026-10-05T12:11:07.528991Z","isLatest":false}}},{"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.4.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.4.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; default 0 means the API key's own athlete","format":"string","name":"INTERVALS_ATHLETE_ID"},{"description":"IANA time zone for local dates, e.g. Australia/Sydney","format":"string","name":"TZ"},{"description":"Shared secret gating /mcp and detailed /health (recommended when internet-facing)","format":"string","isSecret":true,"name":"MCP_AUTH_TOKEN"},{"description":"Server port (default 3000)","format":"number","name":"PORT"},{"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-10-09T06:42:36.627126Z","publishedAt":"2026-10-09T06:42:36.627126Z","updatedAt":"2026-10-09T06:42:36.627126Z","isLatest":false}}},{"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.5.1","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.5.1","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":"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":"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-10-09T21:46:17.336303Z","publishedAt":"2026-10-09T21:46:17.336303Z","updatedAt":"2026-10-09T21:46:17.336303Z","isLatest":false}}},{"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.6.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.6.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":"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":"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-10-10T02:13:38.812428Z","publishedAt":"2026-10-10T02:13:38.812428Z","updatedAt":"2026-10-10T02:13:38.812428Z","isLatest":false}}},{"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.7.0","websiteUrl":"https://github.com/ljcl/intervals-mcp#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/ljcl/intervals-mcp:2.7.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":"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":"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-10-10T03:36:28.972414Z","publishedAt":"2026-10-10T03:36:28.972414Z","updatedAt":"2026-10-10T03:36:28.972414Z","isLatest":true}}}],"metadata":{"count":12}}
