Docker healthchecks now ask the server's own /health route in intervals-icu-mcp 5.7.0
2 hours ago
Version 5.7 of the Intervals.icu MCP server changes how its Docker image checks that the server is alive. HTTP servers now answer a health route of their own. It also retires a sport settings tool that stopped working when Intervals.icu removed its endpoint. Before you upgrade, check whether you mount MCP at /health, or run the container behind an init wrapper.
Ask about this presentation
Chapters
Show transcriptHide transcript
Version 5.7 of the Intervals.icu MCP server changes how its Docker image checks that the server is alive. HTTP servers now answer a health route of their own. It also retires a sport settings tool that stopped working when Intervals.icu removed its endpoint. Before you upgrade, check whether you mount MCP at /health, or run the container behind an init wrapper.
The server now has a static route at /health. On the HTTP, streamable HTTP and SSE transports, a GET request gets back status ok, as JSON. That's the whole handler. It doesn't open an MCP session, check your credentials, or call Intervals.icu. And it stays at /health whatever path you mount MCP under.
The Dockerfile changed to match. Its healthcheck now runs the healthcheck module, built only on the Python standard library. It still runs every 30 seconds, with 3 retries. Docker's timeout goes from 3 seconds to 5, and the probe allows itself 2.
The probe picks its check from the command line of the container's first process. An HTTP, streamable HTTP or SSE server gets a real request to /health, and passes only on a 200 with status ok. A stdio server keeps the old import check. And anything the probe can't recognise falls back to that import check too.
The first thing to check is wrappers. With Docker's --init flag, the first process is the init wrapper, so the probe falls back to the import check, which doesn't test HTTP. Pass a host, a port, or both to the healthcheck, as in this compose example, and it checks HTTP directly.
The second is the MCP path, because /health is now reserved. Start an HTTP server with --path set to /health, with or without a trailing slash, and it stops with this error. A stdio server doesn't use the path, so it still accepts it. If you mounted MCP at /health, move it before you upgrade.
The other change is a removal. Intervals.icu removed the API endpoint behind the apply sport settings tool, so it failed on every call. It's gone. The server now registers 69 tools, or 66 in the default safe mode. To re-zone past activities, use Update zones in the Intervals.icu activity list. Zones you set with the update tool still apply to new activities.
One limit before you upgrade. The new check proves the web server answers. It doesn't verify MCP setup, your credentials, or the Intervals.icu API. So check three things: move MCP off /health, give the healthcheck a host and port if you run HTTP behind an init wrapper, and re-zone past activities with Update zones. Then upgrade to 5.7.0, and your Docker healthcheck asks the server's own /health route.







