Intervals.icu MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Intervals.icu MCPShow my most recent workout"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Intervals.icu MCP
Minimal local stdio MCP server for Intervals.icu, generated from the official OpenAPI spec. Exposes every API operation as an MCP tool. Works with Claude Desktop, mcphost (Ollama / OpenRouter), Cline, and any other MCP client that speaks stdio; this repo is fully self-contained.
Files
|____spec/intervals-openapi-spec.json # the Intervals.ICU API spec
|____README.md # that's me!
|____config.js.example # example config.js file
|____package.json # npm package dependency file
|____mcp-stdio.mjs # the MCP serverRelated MCP server: intervals-icu-mcp
Requirements
Node.js ≥ 18
An Intervals.icu API key — get it from https://intervals.icu/settings (bottom of the page, "Developer settings")
Install
Clone the repo and store it anywhere on your machine. Edit config.js.example and set the correct value of INTERVALS_TOKEN (your Intervals.icu API key), save it as config.js.
npm installTest it
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node mcp-stdio.mjs | python3 -mjson.tool | grep "name\"" | headYou should see on stderr:
[intervals-mcp] ready · 147 tools loaded
"name": "updateLastSeenMessageId",
"name": "updateMessage",
"name": "deleteMessage",
"name": "showWorkout",
"name": "updateWorkout",
"name": "deleteWorkout",
"name": "getRecord",
"name": "updateWellness",
"name": "updateWellnessBulk",
"name": "uploadWellness",Press Ctrl-C to exit. The server is now ready to be driven by an MCP client.
Claude Desktop
Edit Claude Desktop config file (create it if missing):
MacOS -
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux -
~/.config/Claude/claude_desktop_config.jsonWindows -
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"intervals-icu": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/local/mcp-stdio.mjs"],
"env": { "INTERVALS_TOKEN": "your_api_key_here" }
}
}
}Restart Claude Desktop. The Intervals.icu tools are now available.
Ollama / OpenRouter (via mcphost)
mcphost is a small CLI that bridges any MCP server to Ollama or OpenRouter models.
To use it with Ollama, prefer
qwen2.5models.
# install
go install github.com/mark3labs/mcphost@latest
# config: ~/.config/mcphost.intervals.json
{
"mcpServers": {
"intervals-icu": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/local/mcp-stdio.mjs"],
"env": { "INTERVALS_TOKEN": "your_api_key_here" }
}
}
}
# run with Ollama
mcphost -m ollama:qwen2.5 --config ~/.config/mcphost.intervals.json
# or OpenRouter
mcphost -m openrouter:anthropic/claude-3.5-sonnetIf you rather a Desktop app instead of CLI, you can use Tome, which offers pretty straightforward configuration for adding MCP servers.
Authentication
Intervals.icu uses HTTP Basic auth. The server sends:
Authorization: Basic base64("API_KEY:${INTERVALS_TOKEN}")This matches the official curl -u "API_KEY:TOKEN" style. If your token already contains a colon (e.g. myuser:mytoken), it is used verbatim.
Troubleshooting
INTERVALS_TOKEN env var is not set— export it or set it onconfig.jsas shown above.HTTP 401— token is wrong or expired. Regenerate at https://intervals.icu/settings.Tool not found in Claude — restart Claude Desktop fully after editing the config file.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fm4tt0s/intervals.icu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server