使用说明
间隔mcp
一个动态MCP(模型上下文协议)服务器 间隔icu --自行车手、跑步者和铁人三项运动员的训练分析平台。
服务器在启动时读取Intervals.icu OpenAPI规范,自动生成 144工具 (截至2026年2月),覆盖整个API,并代理对真实API的工具调用。当Intervals.icu API更改时,只需重新启动服务器即可获取新的端点-不需要更改代码。
为什么
Intervals.icu拥有丰富的API,有146个端点,涵盖活动、健康、锻炼、力量曲线、装备、日历活动等。从LLM使用它需要为每个端点手写工具定义或构建通用代理。
该服务器采用代理方法:它获取官方的OpenAPI规范,将每个操作转换为具有适当参数模式的MCP工具,并自动处理身份验证和运动员ID注入。其结果是,任何兼容MCP的客户端(Claude Code、Claude Desktop等)都可以完全访问您的Intervals.icu数据,而无需任何手动工具定义。
好处
- API全面覆盖 --所有非文件上传端点都可以作为工具使用,直接从官方规范生成
- 零维护 -API更改将在下一次重新启动时获得,无需修改代码
- 运动员ID自动注射 --The
athleteId参数在每次调用时都会自动填充,因此LLM永远不需要请求它 - 格式灵活性 --通过以下方式支持CSV、FIT或其他格式的端点
{ext}用可选的ext参数(默认为JSON) - 标签过滤 --通过包含或排除OpenAPI标签,仅公开所需的端点
- 单个二进制 --内置Go,编译成一个没有运行时依赖关系的静态二进制文件
安装
Homebrew(macOS和Linux)
brew tap derrix060/intervals-mcp https://github.com/derrix060/intervals-mcp
brew install intervals-mcp
随着 go install
需要 去 1.21或更高版本。
go install github.com/derrix060/intervals-mcp@latest
这将二进制文件放入您的 $GOPATH/bin (或 $HOME/go/bin 默认情况下)。
来源
git clone https://github.com/derrix060/intervals-mcp.git
cd intervals-mcp
go build -o intervals-mcp .
配置
服务器完全通过环境变量进行配置。
| 变量 | 必填 | 描述 |
|---|---|---|
INTERVALS_API_KEY |
是 | 您的Intervals.icu API密钥 |
INTERVALS_ATHLETE_ID |
是 | 您的运动员ID(例如。 i12345) |
INTERVALS_BASE_URL |
没有 | API基本URL(默认值: https://intervals.icu) |
INTERVALS_INCLUDE_TAGS |
否 | 要包含逗号分隔的标签(例如。 Wellness,Activities) |
INTERVALS_EXCLUDE_TAGS |
否 | 要排除的逗号分隔标签 |
INTERVALS_INCLUDE_TAGS 和 INTERVALS_EXCLUDE_TAGS 它们是相互排斥的——设置一个或两个,而不是两个。
查找您的凭据
- 登录 间隔icu
- 首选 设置>开发人员设置
- 生成API密钥-这是您的
INTERVALS_API_KEY - 您的运动员ID显示在同一页面上(格式:
i12345)--这是你的INTERVALS_ATHLETE_ID
使用Claude代码
添加到您的Claude Code MCP配置中(~/.claude/claude_desktop_config.json 或通过 claude mcp add):
{
"mcpServers": {
"intervals-icu": {
"command": "/path/to/intervals-mcp",
"env": {
"INTERVALS_API_KEY": "your-api-key",
"INTERVALS_ATHLETE_ID": "i12345"
}
}
}
}
或者使用CLI:
claude mcp add intervals-icu /path/to/intervals-mcp \
-e INTERVALS_API_KEY=your-api-key \
-e INTERVALS_ATHLETE_ID=i12345
配置后,您可以向Claude询问以下问题:
- “显示我最近的活动”
- “我目前的健身总结是什么?”
- “获取我本周的健康数据”
- “列出我即将进行的锻炼”
- “显示我过去90天的功率曲线”
使用Claude Desktop
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"intervals-icu": {
"command": "/path/to/intervals-mcp",
"env": {
"INTERVALS_API_KEY": "your-api-key",
"INTERVALS_ATHLETE_ID": "i12345"
}
}
}
}
标签过滤
若要仅公开API的一个子集,请使用标记筛选。标记对应于 Intervals.icu API文档.
仅包括健康和活动终点:
INTERVALS_INCLUDE_TAGS="Wellness,Activities"
排除与齿轮相关的端点:
INTERVALS_EXCLUDE_TAGS="Gear"
与其他Intervals.icu MCP服务器的比较
Intervals.icu还有其他几个MCP服务器。所有这些工具都是手动定义的,这意味着它们只覆盖API的一小部分,并且每当添加或修改端点时都需要更改代码。
| 项目 | 语言 | 工具 | 动态? | 上次更新 | 状态 |
|---|---|---|---|---|---|
| 这个项目 | 去 | 144 | 是 | 2026-02 | 活跃的 |
| mvilanova/间隔mcp服务器 | Python | 6 | 否 | 2025-12 | 过时 |
| 自由/生锈的间歇 | 锈蚀 | 57 | 否 | 2026-02 | 激活 |
| eddmann/间隔重症监护室mcp | Python | 48 | 否 | 2025-11 | 过时 |
| Gesteves/国内 | TypeScript | 43* | 否 | 2026-02 | 活动中 |
| patrickmichi/间隔重症监护室mcp | TypeScript | 约30 | 否 | 2026-02 | 新 |
| 乔治格雷先生/重症监护室重症监护室 | TypeScript | 12 | 否 | 2025-07 | 过时 |
| 不信任/间隔ICU MCP | TypeScript | 4 | 否 | 2025-10 | 过时 |
* domestique跨越多个平台(Intervals.icu+Whoop+TrainerRoad+CORE),因此并非所有43个工具都针对Intervals.icu。
主要区别
- API全面覆盖:最全面的硬编码服务器有57个工具。该项目公开了144个-整个API减去2个文件部署端点,这些端点对LLM工具的使用没有意义。
- 零维护:当Intervals.icu添加或更改端点时,每个硬编码服务器都会落后。该项目在启动时阅读了官方的OpenAPI规范,因此只需重新启动即可。
- 标签过滤:没有其他服务器允许您通过标签包含或排除端点组。
- 单二进制,无运行时:与Rust服务器一样,这会编译成一个二进制文件。与Python和TypeScript服务器不同,它没有解释器、虚拟环境或
node_modules管理。
运作原理
- 启动时,服务器从以下位置获取OpenAPI 3.0规范
https://intervals.icu/api/v1/docs - 使用
operationId作为工具名称 - 路径和查询参数成为具有适当JSON模式类型的工具输入属性
- 请求主体作为一个单一的
body参数 - 检测运动员ID参数,并从环境变量中自动注入
- 当LLM调用工具时,处理程序会构建一个HTTP请求,使用Basic Auth进行身份验证,并返回响应
许可证
麻省理工学院