As long as you have the athlete’s id and api key you should be able to query their data. You need to add those to the .env file.
Cool. I’ll cut a PR to add them. Thanks
Hi, Marc,
I’ve got the MCP server running in Claude, but Claude is having some difficulty.
I pasted this into Claude: Analyze my last 10 cycling activities and their interval data and let me know if I should decrease, keep, or increase my FTP and why.
Every time I try this, Claude gets part of the way through the request and then a notification appears: “Claude’s response was interrupted. Please check your network connection or contact support if the issue persists.” A wait spinner appears, and eventually, the entire chat clears out, in about ~60 seconds later.
The issue does persist. It also happens every time for “Analyze and summarize my wellness data from the last 60 days”
Here’s a short video (67 seconds) of the issue: Intervals MCP server issue.mp4 - TechSmith Screencast - TechSmith Screencast
I’m on a Mac M1 Pro running Sequoia 15.4.1. Python is 3.13.0. The data coming back from Intervals looks reasonable. The json itself in “Message from server” in the logs are valid, and all have “isError”:false. Google search on Claude’s error message is not immediately helpful.
How can I help diagnose this? I can share the full log of this chat privately if you like.
Hey @AndyR, does the issue still persist? It does look like a Claude or network issue. Did you try to run it in a different network?
Python 3.13.0 could also be an issue. I wrote and tested the code using 3.10.15.
Thanks for putting this together. I had the Claude network error too, which isn’t unique to the Intervals MCP – it’s a commonly reported problem with Claude since 2 months. See this Discord thread for suggested work-arounds (they didn’t work for me)
I ended up using Cursor instead which works, which is a bummer because a paid subscription is needed to run MCPs/Agent mode.
I fetched latest, and have played with this over the last couple of days. I’m tending to agree with @ralfelfving that’s it’s a Claude issue. I am using the free Claude plan with Sonnet 3.7, so perhaps using a Pro plan works better.
The issue does persist, but it’s clearly not a network or connectivity issue. I also tried uv venv --python 3.10.15
and it had no discernable effect.
It sorta kinda seems related to the amount of data that comes back from Intervals. For example, analyzing my last 3 rides seems to work most of the time, but analyzing 4 or more rides triggers the issue every time. I do have other activities in Intervals besides rides, so more data needs to be retrieved to get the last X number of rides. Maybe it’s overrunning the context window?
Doing simpler analysis, eg. “How much time did I spend riding my bike in the last 5 rides?” does seem to work reliably, but is also not very interesting.
I’ll keep an eye on it, and thanks again for putting this out there.
Ah yeah, it could definitely be that we’re exceeding the model’s context window. I can take a look and see if I can add some guardrails to avoid the issue.
Hi, I tried to set this up as described in the readme. I am on a mac, installed uv with homebrew, installed Claude-Desktop and the claud_desktop_config.json
has the correct path. .env
file is also adjusted. When I open a new terminal, I can see that uv
is working but when I open claude I get the following error
2025-04-28T10:21:11.462Z [info] [Intervals.icu MCP Server] Initializing server...
2025-04-28T10:21:11.477Z [error] [Intervals.icu MCP Server] spawn uv ENOENT
2025-04-28T10:21:11.477Z [error] [Intervals.icu MCP Server] spawn uv ENOENT
2025-04-28T10:21:11.481Z [info] [Intervals.icu MCP Server] Server transport closed
2025-04-28T10:21:11.481Z [info] [Intervals.icu MCP Server] Client transport closed
Seems to me like something is not found? Do I also have to start some server from the repo for this to work? I am happy to provide further inside if you need any
Had the same error. Solved it by editing claude_desktop_config.json and provide the full path for uv in the “command” line. You find this by “which -a uv” in terminal.
I’ll document it in the instructions. Thanks!
Thanks. This is working great now. Thanks so much for this. It’s an awesome tool.
Hi! I can’t find the .env file mentioned in the instructions where I should put intervals API key. Where is it located? (I’m on Mac)
If you followed the instructions in step number five, the hidden .env file should be in the project’s folder. You won’t see the file unless you tell Finder to show you hidden files or use the ls -a flag in the terminal. You should be able to edit the file with any editor. Let me know if you run into any other issues.
@Marc I love the integration. Thank you for this. For the moment i am still testing the features and enhancements for me. I use a different mcp client then claude desktop but the functionality is the same. Even with the env in place it still asks me somethimes the api key or athlete id. Need to look further in too that.
Are you open for pull requests, when i am to release; an enhancement to have the mcp server schedule events or workouts and update / create training plans? I will also add the prompt i am using to make an example in the same pr.
It seems all of the responses/questions I try come with N/A data for me. Do you have a direction how to try to debug this?
Example question:
“get data for activity id 14542601913”
Response:
…
get_activity_details
Request
{
activity_id:
14542601913 }
Response
`Activity: Unnamed
ID: 14542601913
Type: Unknown
Date: Unknown
Description: N/A
Distance: 0 meters
Duration: 0 seconds
Moving Time: N/A seconds
Elevation Gain: 0 meters
Elevation Loss: N/A meters
Power Data:
Average Power: N/A watts
Weighted Avg Power: N/A watts
Training Load: N/A
FTP: N/A watts
…
Maybe the “i” is missing before activity id?
Should be something like: i14542601913
or is this not needed?