Token导航 LogoToken导航TokenDH.com
Training Peaks MCP logo
AI代理stdio官方级别未说明来源级核验

Training Peaks MCP

MCP Server

通过模型上下文协议(MCP)连接TrainingPeaks与Claude等AI助手,实现自然语言查询训练计划、管理日历和追踪健身趋势。

工具数

62

提示词数

0

GitHub Stars

65

资源数

0
PythonClaudeAI代理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

JamsusMaximus

提供方

JamsusMaximus

最后核验

2026/5/17 20:45

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv .venv

详细介绍

TrainingPeaks MCP服务器

通过模型上下文协议(MCP)将TrainingPeaks连接到Claude和其他AI助手。查询训练,建立结构化的时间间隔,管理你的日历,跟踪健身趋势,并通过自然对话控制你的训练。

无需API批准。 官方的Training Peaks API已通过审批,但此服务器使用任何用户都可以在几分钟内设置的安全cookie身份验证。您的cookie存储在您的系统密钥环中,除了传输到TrainingPeaks之外,从不传输到任何地方。

你能做什么

Example conversation with Claude using TrainingPeaks MCP

问你的AI助手一些事情,比如:

  • “为我打造一个4x8分钟的周二门槛训练,包括热身和放松”
  • “将我的移动会话安排在2026年4月14日16:45”
  • “比较我今年和去年的FTP进度”
  • “把上周的长途旅行复制到本周六”
  • “记录我的体重为74.5公斤,睡7.5小时”
  • “到目前为止,我的每周TSS是多少?我是否在实现ATP目标的轨道上?”
  • “显示我的比赛日历以及距离我的A比赛还有多少周”
  • “将我的FTP设置为310并更新我的电源区域”
  • 为下周一添加日历备注:休息日、旅行

工具(62)

锻炼

工具说明
tp_get_workouts列出日期范围内的锻炼(最多90天)
tp_get_workout获取单次训练的完整细节
tp_create_workout使用可选的间歇结构、自动计算的IF/TSS和可选的计划开始时间创建锻炼
tp_update_workout更新现有锻炼的任何字段,包括结构化间隔和计划开始时间
tp_delete_workout删除训练
tp_copy_workout将训练复制到新日期(保留结构和计划字段)
tp_reorder_workouts在指定日期重新安排训练
tp_pair_workout将已完成的锻炼与计划中的锻炼配对(合并为一项)
tp_unpair_workout取消训练计划(分为单独的已完成和计划中的训练)
tp_validate_structure在不创建训练的情况下验证间隔结构
tp_get_workout_comments获取对锻炼的评论
tp_add_workout_comment在训练中添加评论
tp_upload_workout_file将FIT/TCX/GPX文件上传到训练中
tp_download_workout_file下载锻炼的设备文件
tp_delete_workout_file从训练中删除附件

分析与性能

工具说明
tp_analyze_workout使用时间序列数据、区域和圈数进行详细分析
tp_get_peaks力量PR(5秒-90分钟)和跑步PR(400米马拉松)
tp_get_workout_prs在特定会话期间设置的PR
tp_get_fitnessCTL、ATL和TSB趋势(健康、疲劳、形态)
tp_get_weekly_summary综合锻炼+一周健身,总计
tp_get_atp年度训练计划-每周TSS目标、周期、比赛

运动员设置

工具说明
tp_get_athlete_settings获取FTP、阈值、区域、配置文件
tp_update_ftp更新FTP并重新计算默认电源区域
tp_update_hr_zones更新心率区域
tp_update_speed_zones更新跑步/游泳配速区
tp_update_nutrition更新每日计划卡路里
tp_get_pool_length_settings获取池长度选项

健康指标

工具说明
tp_log_metrics记录体重、心率变异性、睡眠、步数、血氧饱和度、脉搏、RMR、受伤情况
tp_get_metrics获取日期范围的健康指标
tp_get_nutrition获取日期范围内的营养数据

设备

工具说明
tp_get_equipment列出自行车和鞋子的距离
tp_create_equipment添加自行车或鞋子
tp_update_equipment更新设备详细信息,退役
tp_delete_equipment删除设备

活动和日历

工具说明
tp_get_focus_event获得具有目标的A级重点活动
tp_get_next_event获取最近的未来活动
tp_get_events列出日期范围内的事件
tp_create_event添加具有优先级(a/B/C)和CTL目标的比赛/赛事
tp_update_event更新事件详细信息
tp_delete_event删除事件
tp_create_note创建日历备注
tp_get_note按ID获取日历备忘
tp_update_note更新注释的标题、描述、日期或可见性
tp_delete_note删除日历备忘
tp_get_note_comments在注释中列出所有评论
tp_add_note_comment在备注中添加评论
tp_get_availability列表不可用/时间有限
tp_create_availability将日期标记为不可用或有限
tp_delete_availability删除可用性条目

锻炼库

工具说明
tp_get_libraries列出锻炼库文件夹
tp_get_library_items列出库中的模板
tp_get_library_item获取完整的模板详细信息,包括结构
tp_create_library创建库文件夹
tp_delete_library删除库文件夹
tp_create_library_item保存锻炼模板
tp_update_library_item编辑模板
tp_schedule_library_workout将模板安排到日历日期

参考与认证

工具说明
tp_get_workout_types列出所有带有ID的运动类型和子类型
tp_get_profile获取运动员资料
tp_auth_status检查身份验证状态
tp_list_athletes列出运动员(教练账户)
tp_refresh_auth通过浏览器cookie重新进行身份验证

______________________________________________________________________

设置选项

选项A:使用Claude代码自动设置

如果你有 克劳德代码,粘贴此提示:

Set up the TrainingPeaks MCP server from https://github.com/JamsusMaximus/trainingpeaks-mcp - clone it, create a venv, install it, then walk me through getting my TrainingPeaks cookie from my browser and run tp-mcp auth. Finally, add it to my Claude Desktop config.

Claude将负责安装,并逐步指导您完成身份验证。

选项B:手动设置

步骤1:安装

git clone https://github.com/JamsusMaximus/trainingpeaks-mcp.git
cd trainingpeaks-mcp
python3 -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -e .

第二步:身份验证

选项A:从浏览器自动提取(最简单)

如果您在浏览器中登录了TrainingPeaks:

pip install tp-mcp[browser]  # One-time: install browser support
tp-mcp auth --from-browser chrome  # Or: firefox, safari, edge, auto
macOS注意事项: 您可能会看到钥匙串或全磁盘访问的安全提示。这是正常的——浏览器Cookie是加密的,需要权限才能读取。

选项B:手动输入cookie

  1. 登录 app.trainingpeaks.com
  2. 打开DevTools(F12) -> 应用 选项卡-> Cookie
  3. 找到 Production_tpAuth 并复制其值
  4. tp-mcp auth 并在提示时粘贴

其他身份验证命令:

tp-mcp auth-status  # Check if authenticated
tp-mcp auth-clear   # Remove stored cookie

步骤3:添加到Claude桌面

运行此命令以获取配置代码段:

tp-mcp config

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows)并将其粘贴到里面 mcpServers。具有多个服务器的示例:

{
  "mcpServers": {
    "some-other-server": {
      "command": "npx",
      "args": ["some-other-mcp"]
    },
    "trainingpeaks": {
      "command": "/Users/you/trainingpeaks-mcp/.venv/bin/tp-mcp",
      "args": ["serve"]
    }
  }
}

重新启动克劳德桌面。你准备好了!

______________________________________________________________________

结构化锻炼

创建具有完整间歇结构的训练。服务器根据结构自动计算持续时间、IF和TSS:

{
  "date": "2026-03-01",
  "sport": "Bike",
  "title": "Sweet Spot Intervals",
  "structure": {
    "primaryIntensityMetric": "percentOfFtp",
    "steps": [
      {"name": "Warm Up", "duration_seconds": 600, "intensity_min": 40, "intensity_max": 55, "intensityClass": "warmUp"},
      {"type": "repetition", "reps": 4, "steps": [
        {"name": "Sweet Spot", "duration_seconds": 480, "intensity_min": 88, "intensity_max": 93, "intensityClass": "active"},
        {"name": "Recovery", "duration_seconds": 120, "intensity_min": 50, "intensity_max": 60, "intensityClass": "rest"}
      ]},
      {"name": "Cool Down", "duration_seconds": 600, "intensity_min": 40, "intensity_max": 55, "intensityClass": "coolDown"}
    ]
  }
}

LLM通过对话自然地构建这个JSON——只需说“为我构建4x8分钟的最佳休息点,休息2分钟”。

你可以使用同样的简化 structure 对象与 tp_update_workout:

{
  "workout_id": "3658666303",
  "duration_minutes": 57,
  "tss_planned": 62.3,
  "structure": {
    "primaryIntensityMetric": "percentOfThresholdHr",
    "steps": [
      {"name": "Warm-up", "duration_seconds": 900, "intensity_min": 65, "intensity_max": 80, "intensityClass": "warmUp"},
      {"type": "repetition", "name": "4x5min controlled tempo", "reps": 4, "steps": [
        {"name": "Interval", "duration_seconds": 300, "intensity_min": 89, "intensity_max": 94, "intensityClass": "active"},
        {"name": "Jog recovery", "duration_seconds": 180, "intensity_min": 65, "intensity_max": 83, "intensityClass": "rest"}
      ]},
      {"name": "Cool-down", "duration_seconds": 600, "intensity_min": 65, "intensity_max": 80, "intensityClass": "coolDown"}
    ]
  }
}

如果 duration_minutestss_planned 它们是从结构中推导出来的。如果显式传递它们,它们将覆盖派生值。

对于高级往返用例, tp_create_workouttp_update_workout 也接受本地人 structured_workout TrainingPeaks构建器格式的有效载荷。当锻炼已经具有原生结构时, tp_get_workout 返回为 structured_workout.

{
  "workout_id": "3658666303",
  "structured_workout": {
    "structure": [],
    "polyline": [],
    "primaryLengthMetric": "duration",
    "primaryIntensityMetric": "percentOfFtp",
    "primaryIntensityTargetOrRange": "range"
  }
}

使用其中之一 structurestructured_workout 在一次创建/更新调用中,而不是同时进行。

对于计划的锻炼计划, tp_create_workouttp_update_workout 接受:

  • YYYY-MM-DD 用于日历日期的全天计划
  • YYYY-MM-DDTHH:MM:SS 在该日期的计划开始时间

TrainingPeaks将计划的锻炼时间与日历日分开存储。在内部,这意味着:

  • workoutDay 在选定日期的午夜停留
  • startTimePlanned 存储计划开始时间
  • 计划结束时间来自 startTimePlanned + totalTimePlanned

计划开始时间示例:

{
  "date": "2026-04-14T16:45:00",
  "sport": "Strength",
  "title": "Core & Mobility",
  "duration_minutes": 60,
  "description": "Core stabilisation and stretching."
}

什么是MCP?

模型上下文协议 是将AI助手连接到外部数据源的开放标准。MCP服务器公开了人工智能模型可以调用的工具来获取实时数据,使克劳德等助手能够通过自然语言访问您的Training Peaks帐户。

安全

TL;DR:您的cookie在磁盘上加密,用短期OAuth令牌交换,从未显示给Claude,只发送给TrainingPeaks。服务器没有网络端口。

该服务器设计有深度防御。您的TrainingPeaks会话cookie是敏感的,它允许访问您的训练数据,因此我们会相应地处理它。

写入权限: v2.0添加了完整的日历管理(创建、更新、删除训练、事件、笔记、设备、设置)。所有突变都要经过Pydantic验证。服务器无法访问账单或付款信息。

Cookie存储

平台主存储后备
macOS系统钥匙链加密文件
WindowsWindows凭据管理器加密文件
Linux特勤局(GNOME/KDE)加密文件

你的饼干是 从不 以明文形式存储。加密文件回退使用AES-256-GCM身份验证加密,使用PBKDF2派生密钥(600000次迭代)和特定于机器的盐。

Cookie永远不会泄露给AI

人工智能助理(克劳德) 永远看不到您的cookie值多层结构确保了这一点:

  1. 返回值净化:对于包含以下内容的任何键,工具结果都会被清除 cookie, token, auth, credential, password,或 secret 在被送往克劳德之前
  2. 戴口罩的代表():The BrowserCookieResultCredentialResult 类重写 __repr__ 展示 `cookie=

` 而不是实际值

  1. 消毒异常:错误消息仅使用异常类型名称,从不使用可能包含数据的完整消息
  2. 无日志:Cookie值永远不会写入任何日志

域硬编码(无法更改)

浏览器cookie提取 访问 .trainingpeaks.com:

# From src/tp_mcp/auth/browser.py - HARDCODED, not a parameter
cj = func(domain_name=".trainingpeaks.com")

Claude无法通过工具参数修改此设置。唯一的参数是 browser (chrome/firefox/etc),而不是域名。要更改域,需要修改源代码。

无网络曝光

MCP服务器使用 仅限stdio传输 -它通过stdin/stdout与Claude Desktop通信,而不是通过网络。没有HTTP服务器,没有开放端口,没有远程访问。

开源

此服务器是完全开源的。您可以在运行之前审核每一行代码。关键安全文件:

身份验证流程

服务器使用两步身份验证过程:

  1. Cookie到OAuth令牌:您存储的cookie将被替换为短期OAuth访问令牌(1小时后过期)
  2. 自动刷新:令牌缓存在内存中,并在到期前自动刷新

这意味着:

  • 您只需通过以下方式进行一次身份验证 tp-mcp auth
  • API调用使用正确的承载令牌身份验证,而不是cookie
  • 如果您的会话cookie过期(通常在几周后),请使用 tp_refresh_auth 克劳德或逃跑 tp-mcp auth 再次

发展

pip install -e ".[dev]"
pytest tests/ -v
mypy src/
ruff check src/

许可证

麻省理工学院

目录标签

目录标签

PythonClaudeAI代理健身训练管理本地部署AI助手集成自然语言处理训练计划生成日历同步

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

62

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauthlocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP