mcpField
I
intervals-icu-mcp

intervals-icu-mcp

本地服务
github.com/hhopke健康医疗1123 天前更新

关于 intervals-icu-mcp

intervals-icu-mcp 将 Intervals.icu 训练数据和分析能力开放给 MCP 客户端,适合需要查看或管理训练活动、恢复指标及计划的运动者。它覆盖读写操作,并提供资源、提示词以及可配置的删除防护。

主要功能

  1. 01查询和管理训练活动
  2. 02分析训练流、间歇和表现曲线
  3. 03读取 HRV、睡眠与恢复指标
  4. 04管理日历、训练计划和装备
  5. 05提供训练分析提示词与资源
  6. 06配置删除操作防护模式

适用场景

  1. 01查看近期活动和训练表现
  2. 02检查 HRV、睡眠及恢复趋势
  3. 03规划日历中的训练和比赛
  4. 04创建训练内容并维护装备记录

MCP 相关

MCP 服务通过 stdio 提供 69 个工具、4 个资源和 9 个提示词,涵盖 Intervals.icu 的活动、健康指标、日历、训练库等数据。也支持 HTTP 和 SSE 传输以供远程部署。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"hhopke-intervals-icu": {
"command": "uvx",
"args": [
"intervals-icu-mcp"
],
"env": {
"INTERVALS_ICU_API_KEY": "<INTERVALS_ICU_API_KEY>",
"INTERVALS_ICU_ATHLETE_ID": "<INTERVALS_ICU_ATHLETE_ID>"
}
}
}
}
启动命令uvx intervals-icu-mcp
需要配置的环境变量
INTERVALS_ICU_API_KEY密钥Your Intervals.icu API key (from Settings → Developer)
INTERVALS_ICU_ATHLETE_IDYour Intervals.icu athlete ID (e.g. i12345)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiintervals-icu-mcp5.7.1

工具

67

收录的工具列表 · 更新于 1 周前

参数类型必填说明
limitinteger否获取的活动数量
days_backinteger否回溯的天数
athlete_idany否运动员 ID(管理多个运动员的教练使用)

详细介绍

Intervals.icu MCP 服务

intervals-icu-mcp 演示

用于集成 Intervals.icu 的 Model Context Protocol(MCP)服务。通过 Claude、ChatGPT 和其他大模型访问训练数据、健康指标和表现分析。

最初基于 eddmann/intervals-icu-mcp(采用 MIT 许可)。本项目是独立的后续项目,修复了大量错误并加入了新功能,详情请参阅 CHANGELOG.md。

测试 intervals-icu-mcp MCP 服务 许可证:MIT Docker 赞助

概览

共 69 个工具,涵盖活动、活动分析、活动消息、运动员资料、健康状况、赛事/日历、表现曲线、训练计划库、装备、运动设置和自定义项目;此外还有 4 个 MCP 资源(运动员资料、训练计划语法、赛事类别、自定义项目架构)和 9 个 MCP 提示词(训练分析、恢复检查、每周规划等)。各类别的详细分类请参阅可用工具。

快速开始

在 Cursor 中安装

或者,只需 30 秒即可在 Claude Desktop 中完成设置:

  1. 获取你的 API 密钥和运动员 ID
  2. 将以下内容添加到 Claude Desktop 配置中:
{
  "mcpServers": {
    "intervals-icu": {
      "command": "uvx",
      "args": ["intervals-icu-mcp"],
      "env": {
        "INTERVALS_ICU_API_KEY": "your-api-key-here",
        "INTERVALS_ICU_ATHLETE_ID": "i123456"
      }
    }
  }
}
  1. 重启 Claude,然后提问 “显示我过去 7 天的活动。”

想使用 Claude Code、Cursor 或 ChatGPT?请参阅客户端配置。想从源代码运行或使用 Docker?请参阅安装与设置。

前置条件

安装 uv——它能通过一个工具处理 Python、依赖项和执行。在 macOS/Linux 上运行 curl -LsSf https://astral.sh/uv/install.sh | sh(或运行 brew install uv;Homebrew 已不再为 Intel Mac 安装),在 Windows 上运行 powershell -c "irm https://astral.sh/uv/install.ps1 | iex"。之后,uvx 会自动获取 Python 和软件包。如果 MCP 客户端找不到 uvx,请将 command 设置为 which uvx 输出的完整路径。也支持使用 Docker 作为替代方案。

Intervals.icu API 密钥设置

安装前,请获取 Intervals.icu API 密钥:

  1. 前往 https://intervals.icu/settings → Developer → Create API Key。
  2. 复制密钥,并从个人资料 URL 中记下你的运动员 ID(格式:i123456)。

安装与设置

如果使用推荐的设置,则无需单独安装任何内容。 uvx(随 uv 一起提供)会在 MCP 客户端首次启动时自动下载并缓存 intervals-icu-mcp 软件包——只需将客户端配置中的配置片段粘贴到客户端即可完成设置。

替代方案:从源代码安装 — 适用于开发或本地修改
git clone https://github.com/hhopke/intervals-icu-mcp.git
cd intervals-icu-mcp
uv sync
uv run intervals-icu-mcp-auth  # interactive credential setup; or create .env manually:
#   INTERVALS_ICU_API_KEY=your_api_key_here
#   INTERVALS_ICU_ATHLETE_ID=i123456

然后将 MCP 客户端指向此代码库——请参阅下方各客户端中的 从源代码安装 配置片段。

替代方案:Docker
docker build -t intervals-icu-mcp .

# Interactive credential setup (creates intervals-icu-mcp.env in the current directory):
touch intervals-icu-mcp.env  # pre-create the file so Docker mounts it as a file, not a dir
docker run -it --rm \
  -v "$(pwd)/intervals-icu-mcp.env:/app/.env" \
  --entrypoint= intervals-icu-mcp:latest \
  python -m intervals_icu_mcp.scripts.setup_auth

或者手动创建 intervals-icu-mcp.env(格式与上面的 .env 相同)。

然后将 MCP 客户端指向 Docker 镜像——请参阅下方各客户端中的 Docker 配置片段。

客户端配置

此服务通过 stdio 使用 MCP,可与任何兼容的客户端配合使用。点击客户端名称可展开。如果你按照快速开始(uvx)操作,请使用第一个配置块;如果使用了上面的源代码或 Docker 替代方案,请使用同一折叠区域中的对应配置。

Claude Desktop

将以下内容添加到配置文件中:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "intervals-icu": {
      "command": "uvx",
      "args": ["intervals-icu-mcp"],
      "env": {
        "INTERVALS_ICU_API_KEY": "your-api-key-here",
        "INTERVALS_ICU_ATHLETE_ID": "i123456"
      }
    }
  }
}

从源代码安装(需要执行 git clone + uv sync + uv run intervals-icu-mcp-auth):

{
  "mcpServers": {
    "intervals-icu": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/intervals-icu-mcp", "intervals-icu-mcp"]
    }
  }
}

Docker:

{
  "mcpServers": {
    "intervals-icu": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-v", "/ABSOLUTE/PATH/TO/intervals-icu-mcp.env:/app/.env", "intervals-icu-mcp:latest"]
    }
  }
}
Claude Code

将此服务注册为用户级 MCP 服务:

claude mcp add intervals-icu --scope user \
  --env INTERVALS_ICU_API_KEY=your-key \
  --env INTERVALS_ICU_ATHLETE_ID=i123456 \
  -- uvx intervals-icu-mcp

然后在任意 Claude Code 会话中运行 /mcp,确认 intervals-icu 已连接。

Cursor

添加到 ~/.cursor/mcp.json(或项目本地的 .cursor/mcp.json):

{
  "mcpServers": {
    "intervals-icu": {
      "command": "uvx",
      "args": ["intervals-icu-mcp"],
      "env": {
        "INTERVALS_ICU_API_KEY": "your-api-key-here",
        "INTERVALS_ICU_ATHLETE_ID": "i123456"
      }
    }
  }
}

重启 Cursor,然后打开 设置 → MCP,确认列表中已显示此服务。

ChatGPT — 需要付费套餐、开发者模式和可公开访问的 URL (端到端演练尚未验证)

ChatGPT 的自定义 MCP 连接器流程需要通过 HTTP 运行服务并使用隧道将其公开,然后在 ChatGPT 的开发者模式设置中注册 URL。完整演练、套餐等级要求和安全说明,请参阅 docs/chatgpt-connector.md。

使用方法

用自然语言让 Claude 与你的 Intervals.icu 数据交互。以下是一些入门提示词:

"Show me my activities from the last 30 days"
"Am I overtraining? Check my CTL, ATL, and TSB"
"How's my recovery this week? Show HRV and sleep trends"
"Create a sweet spot cycling workout for tomorrow"
"What's my 20-minute power and FTP?"

按类别整理的完整示例提示词目录,请参阅 docs/examples.md。

可用工具

69 个工具、4 个资源和 9 个提示词模板。以下为一行摘要,完整参考请见 docs/tools.md。

类别工具数摘要
活动13查询、搜索、更新、删除和下载活动
活动分析8数据流、区间、最佳成绩、直方图
活动消息2读取和发布活动备注、评论及教练反馈
运动员5可访问的运动员、个人资料和运动员备注、CTL/ATL/TSB 分析、体能图表时间序列
健康状况3HRV、睡眠、恢复指标
赛事 / 日历12计划训练、比赛、备注、ATP 周期化(支持批量操作)
表现 / 曲线3带区间的功率、心率和配速曲线
训练计划库8浏览、创建和删除文件夹及训练计划;创建(含批量创建)、更新和删除训练计划库中的训练
装备管理6跟踪装备和维护提醒
运动设置4FTP、FTHR、配速阈值和区间
自定义项目5用户自定义项:自定义图表、字段、区间、仪表板面板

删除安全模式

破坏性工具受可选环境变量 INTERVALS_ICU_DELETE_MODE(safe / full / none,默认值为 safe)控制。这是模型无法访问的服务端限制,因此无法调用未注册的工具。完整模式表、响应结构和 TZ 缓冲区的设计依据,请参阅 docs/tools.md。

远程部署(HTTP / SSE)

默认情况下,服务通过 stdio 运行,这是适用于 Claude Desktop、Claude Code 和 Cursor 等本地客户端的传输方式。HTTP 和 SSE 传输方式可用于远程或托管场景。

⚠️ MCP 没有内置身份验证——切勿在没有隧道(Tailscale、Cloudflare Tunnel)或带身份验证的反向代理的情况下,将 HTTP 模式的服务暴露在不可信网络中。

传输标志和完整安全模型请参阅 docs/remote-deployment.md。

文档

反馈

你是如何使用这个项目的? 你常用哪些工具、提示词是什么样的、哪些地方会妨碍你——这些比我自己的猜测更能影响项目路线图。

展示与分享 · 问答 · 想法 · 综合讨论 — 也可以针对可复现的错误提交问题。

贡献

非常欢迎贡献,任何贡献都不嫌小——无论是修正拼写错误、改进参数说明、添加测试,还是开发全新工具。无需具备 Python 或 MCP 专业知识。请参阅 CONTRIBUTING.md;简而言之,提交 PR 前请运行 make can-release。适合新手的问题是一个轻松的起点。

赞助

本项目采用 MIT License 免费提供,我利用业余时间维护。如果它对你有帮助,GitHub Sponsors 可以支持项目持续开发——完全自愿;反馈或 PR 也同样有帮助。

许可证

MIT License — 详情请参阅 LICENSE 文件。

免责声明

本项目与 Intervals.icu 无关联,也未获得其认可或赞助。所有产品名称、徽标和品牌均为其各自所有者的财产。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。