The Intervals.icu MCP Server enables integration with the Intervals.icu API to retrieve and manage athlete fitness data. With this server, you can:
Retrieve activity lists: Fetch activities with optional filters (date range, limit, etc.)
View activity details: Get comprehensive information about specific activities
Access activity intervals: Obtain detailed metrics (power, heart rate, cadence) for each interval
Fetch wellness data: Retrieve health and recovery information
List upcoming events: View scheduled workouts, races, and other events
View event details: Get specific information about individual events
The server integrates seamlessly with Claude Desktop for convenient querying of your athletic data.
Intervals.icu MCP Server
Model Context Protocol (MCP) server for connecting Claude and ChatGPT with the Intervals.icu API. It provides tools for authentication and data retrieval for activities, events, and wellness data.
If you find the Model Context Protocol (MCP) server useful, please consider supporting its continued development with a donation.
Requirements
Python 3.12 or higher
httpx
python-dotenv
Related MCP server: Education Data MCP Server
Setup
1. Install uv (recommended)
2. Clone this repository
3. Create and activate a virtual environment
4. Sync project dependencies
5. Set up environment variables
Make a copy of .env.example and name it .env by running the following command:
Then edit the .env file and set your Intervals.icu athlete id and API key:
Getting your Intervals.icu API Key
Log in to your Intervals.icu account
Go to Settings > API
Generate a new API key
Finding your Athlete ID
Your athlete ID is typically visible in the URL when you're logged into Intervals.icu. It looks like:
https://intervals.icu/athlete/i12345/...wherei12345is your athlete ID
Updating
This project is actively developed, with new features and fixes added regularly. To stay up to date, follow these steps:
1. Pull the latest changes from main
⚠️ Make sure you don’t have uncommitted changes before running this command.
2. Update Python dependencies
Activate your virtual environment and sync dependencies:
Troubleshooting
If Claude Desktop fails due to configuration changes, follow these steps:
Delete the existing entry in claude_desktop_config.json.
Reconfigure Claude Desktop from the intervals_mcp_server directory:
Usage with Claude
1. Configure Claude Desktop
To use this server with Claude Desktop, you need to add it to your Claude Desktop configuration.
Run the following from the
intervals_mcp_serverdirectory to configure Claude Desktop:
If you open your Claude Desktop App configuration file
claude_desktop_config.json, it should look like this:
Where /path/to/ is the path to the intervals-mcp-server code folder in your system.
If you observe the following error messages when you open Claude Desktop, include the full path to uv in the command key in the claude_desktop_config.json configuration file. You can get the full path by running which uv in the terminal.
Restart Claude Desktop.
2. Use the MCP server with Claude
Once the server is running and Claude Desktop is configured, you can use the following tools to ask questions about your past and future activities, events, and wellness data.
get_activities: Retrieve a list of activitiesget_activity_details: Get detailed information for a specific activityget_activity_intervals: Get detailed interval data for a specific activityget_wellness_data: Fetch wellness dataget_events: Retrieve upcoming events (workouts, races, etc.)get_event_by_id: Get detailed information for a specific event
Usage with ChatGPT
ChatGPT’s beta MCP connectors can also talk to this server over the SSE transport.
Start the server in SSE mode so it exposes the
/sseand/messages/endpoints:export FASTMCP_HOST=127.0.0.1 FASTMCP_PORT=8765 MCP_TRANSPORT=sse FASTMCP_LOG_LEVEL=INFO python src/intervals_mcp_server/server.pyThe startup log prints the full URLs (for example
http://127.0.0.1:8765/sse). ChatGPT needs that public URL, so forward the port with a tool such asngrok http 8765if you are not exposing the server directly.In ChatGPT, open Settings → Features → Custom MCP Connectors and click Add. Fill in:
Name:
Intervals.icuMCP Server URL:
https://<your-public-host>/sseAuthentication: leave as No authentication unless you have protected your tunnel.
You can reuse the same
ngrok http 8765tunnel URL here; just ensure it forwards to the host/port you exported above.Save the connector and open a new chat. ChatGPT will keep the SSE connection open and POST follow-up requests to the
/messages/endpoint announced by the server. If you restart the MCP server or tunnel, rerun the SSE command and update the connector URL if it changes.
Development and testing
Install development dependencies and run the test suite with:
Running the server locally
To start the server manually (useful when developing or testing), run:
License
The GNU General Public License v3.0