健身数据分析服务器

提供Strava和intervals.icu的健身数据分析服务器,用于访问和分析运动活动、训练指标和健康数据。

  • by ewongz
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ewongz/strava-mcp-server

使用说明

健身数据MCP服务器

模型上下文协议(MCP)服务器,使Claude能够访问您的健身和训练数据。该项目包括Strava和intervals.icu的服务器,为分析你的运动表现、活动和训练指标提供了全面的工具和资源。

🏃‍♂️ Strava MCP服务器

访问您的Strava活动、运动员资料和基本表现统计数据。

📊 Intervals.icu MCP服务器 ⭐ 精选

高级训练分析,包括功率曲线、详细的锻炼分析、健康跟踪和全面的绩效指标。

特性


🏃‍♂️ Strava MCP服务器功能

可用工具

  • get_activities -使用筛选选项获取最近的活动
  • get_activity_details -获取有关特定活动的详细信息
  • get_athlete_stats -检索运动员的历史统计数据
  • search_activities -按日期范围和活动类型搜索活动

可用资源

  • strava://activities -最近的活动提要
  • strava://athlete -运动员个人资料信息
  • strava://stats -所有时间统计摘要

📊 Intervals.icu MCP服务器功能 ⭐

🛠️ 高级培训工具(11个工具)

  • get_activities -使用高级筛选(日期、类型、限制)列出活动
  • get_activity_details -具有可选间隔分析的详细活动数据
  • get_activity_streams -时间序列数据(功率、心率、GPS、节奏、速度)
  • search_activities -跨活动和高级过滤器的全文搜索
  • get_power_curve -运动员功率曲线分析(所有持续时间的峰值功率)
  • get_activity_power_curve -特定活动功率分析
  • get_performance_analysis -综合绩效指标(功率、人力资源、速度曲线)
  • get_best_efforts -活动的最佳努力部分和成就
  • get_wellness_data -睡眠、心率变异性、压力和健康指标
  • get_training_calendar -计划中的锻炼、比赛和训练活动
  • export_activities_csv -导出培训数据以供外部分析

📈 丰富的数据资源(5资源)

  • intervals://activities -具有详细指标的最近活动
  • intervals://athlete -完整的运动员档案和训练设置
  • intervals://performance -功率曲线、心率分析和性能指标
  • intervals://wellness -睡眠、心率变异性和健康跟踪数据
  • intervals://calendar -训练日历,包括计划的训练和比赛

🎯 高级分析功能

  • 功率分析:平均最大功率曲线、FTP跟踪、功率重量比
  • 心率分析:HR曲线、区域分布、解耦分析
  • 起搏分析:跑步速度曲线、分级调整速度、尽力
  • 区间分析:结构化锻炼分析、间歇统计、训练区
  • 健康追踪:睡眠质量、心率变异性、压力、疲劳和恢复指标
  • 训练负荷:CTL/ATL/TSB(体能/疲劳/状态),训练压力跟踪
  • 多运动支持:自行车、跑步、游泳,有特定的运动区域和指标

🎯 支持的活动类型

骑行:公路、山地、轨道、碎石、电动自行车、室内/教练 跑步:公路、小径、跑道、跑步机 游泳:开放水域游泳池 其他:铁人三项、步行、徒步、交叉训练和30多种运动类型

先决条件

  • Python 3.13+
  • 紫外线 包管理器
  • 克劳德桌面应用程序
  • 斯特拉瓦:Strava开发者账户和API访问令牌
  • 对于intervals.icu:intervals.icu帐户和API密钥

🏃‍♂️ Strava MCP服务器设置

1.获取Strava API访问权限

  1. 首选 Strava API设置
  2. 创建新应用程序:
    • 应用程序名称: fitness-mcp-server
    • 类别: Data Importer
    • 授权回调域: localhost
    • 上传任意图标图像
  3. 复制您的 访问令牌 (下一步你需要这个)

2.配置和测试Strava

# Clone the repository
git clone <repository-url>
cd fitness-mcp-server

# Install dependencies
uv sync

# Copy the example environment file
cp .env.example .env

# Edit .env and add your Strava access token
# STRAVA_ACCESS_TOKEN=your_actual_access_token_here

# Test the Strava server
uv run python run_server.py

📊 Intervals.icu MCP服务器设置 ⭐

1.获取intervals.icu API访问权限

  1. 首选 intervals.icu开发人员设置
  2. 点击 “创建API密钥”
  3. 复制API密钥
  4. 你的 运动员ID 位于您的个人资料URL中: https://intervals.icu/athletes/[YOUR_ID]

2.配置和测试间隔.icu

# Edit .env and add your intervals.icu credentials
# INTERVALS_API_KEY=your_intervals_icu_api_key_here
# INTERVALS_ATHLETE_ID=your_athlete_id_here

# Test the intervals.icu connection
python test_intervals.py

# Run the intervals.icu server
python run_intervals_server.py

⚙️ Claude桌面配置

编辑您的Claude Desktop配置文件:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

选项1:仅限intervals.icu服务器(推荐)

{
  "mcpServers": {
    "intervals": {
      "command": "uv",
      "args": ["--directory", "/path/to/fitness-mcp-server", "run", "python", "run_intervals_server.py"],
      "cwd": "/path/to/fitness-mcp-server"
    }
  }
}

选项2:两台服务器

{
  "mcpServers": {
    "strava": {
      "command": "uv",
      "args": ["--directory", "/path/to/fitness-mcp-server", "run", "python", "run_server.py"],
      "cwd": "/path/to/fitness-mcp-server"
    },
    "intervals": {
      "command": "uv",
      "args": ["--directory", "/path/to/fitness-mcp-server", "run", "python", "run_intervals_server.py"],
      "cwd": "/path/to/fitness-mcp-server"
    }
  }
}

替换 /path/to/fitness-mcp-server 带有项目目录的实际路径。

重新启动克劳德桌面

退出并重新启动Claude Desktop,使MCP服务器配置生效。

用法

配置后,您可以向Claude自然语言提问有关您的健身数据的问题。intervals.icu服务器提供比Strava更全面的分析。


🏃‍♂️ Strava服务器示例

  • “显示我最近的Strava活动”
  • “我的历史跑步统计数据是什么?”
  • “获取我上周的自行车活动”
  • “给我看看我这个月跑得最长的一次”

📊 Intervals.icu服务器示例 ⭐

基本活动查询

  • “显示我最近的培训活动”
  • “从本月开始获取我的自行车锻炼”
  • “找到我本周最难的锻炼”
  • “将1月份的活动导出为CSV”

高级性能分析

  • “显示我的自行车功率曲线”
  • “分析我上个月的心率趋势”
  • “今年我最好的20分钟力量训练是什么?”
  • “比较我最近的FTP进度”
  • “显示我的训练负荷和形态趋势”

详细的锻炼分析

  • “分析我昨天锻炼的时间间隔”
  • “获取活动ID 12345的电源数据流”
  • “显示我最后一场比赛的时间序列数据”
  • “上一次骑自行车锻炼中,我最大的努力是什么?”

健康与康复

  • “这周我的睡眠质量怎么样?”
  • “显示我上个月的HRV趋势”
  • “我的压力水平模式是什么?”
  • “根据健康数据,我的恢复情况如何?”

培训计划

  • “我本周计划了哪些锻炼?”
  • “显示我即将举行的比赛和活动”
  • “我下个月的训练日程是什么?”

高级分析

  • “分析我的功率重量比改进”
  • “显示我的自行车效率指标”
  • “比较我在不同地形上的跑步速度”
  • “我的区域分布模式是什么?”

Claude将自动使用适当的MCP工具来获取和呈现您的全面培训数据,并进行详细分析。

建筑

项目结构

fitness-mcp-servers/
├── src/
│   ├── strava_mcp/                    # Strava MCP Server
│   │   ├── server.py                  # Strava MCP server implementation
│   │   ├── models/strava_models.py    # Strava data models
│   │   └── utils/strava_client.py     # Strava API client
│   └── intervals_mcp/                 # intervals.icu MCP Server ⭐
│       ├── server.py                  # intervals.icu MCP server implementation
│       ├── models/intervals_models.py # intervals.icu data models (comprehensive)
│       └── utils/intervals_client.py  # intervals.icu API client (full-featured)
├── run_server.py                      # Strava server entry point
├── run_intervals_server.py            # intervals.icu server entry point
├── test_intervals.py                  # intervals.icu connection test
├── .env.example                       # Environment template (both services)
└── pyproject.toml                     # Project configuration

服务器之间的主要区别

功能 Strava MCP 间隔.icu MCP⭐
活动 基本列表,搜索 高级筛选,全文搜索
活动详情 摘要数据 详细指标+间隔+流
性能数据 基本统计数据 功率曲线、心率分析、速度曲线
培训分析 ❌ ✅ 训练负荷、CTL/ATL/TSB、区域
健康追踪 ❌ ✅ 睡眠、心率变异性、压力、恢复
锻炼分析 ❌ ✅ 区间、分段、结构化分析
时间序列数据 ❌ ✅ 电源、人力资源、GPS、节奏流
培训日历 ❌ ✅ 计划中的锻炼、比赛、活动
数据导出 ❌ ✅ CSV导出,包含完整指标

许可证管理

斯特拉瓦

⚠️ 重要:Strava访问令牌每6小时过期一次。为了持续使用,您可能需要:

  1. 定期手动刷新令牌,或
  2. 使用刷新令牌实现OAuth流(高级)

对于个人使用,请手动更新您的令牌 .env 文件过期时就足够了。

intervals.icu

✅ 简单:intervals.icu API密钥寿命长,不会频繁过期。个人使用更容易管理。

故障排除

常见问题

“ModuleNotFoundError:没有名为'dotenv'的模块”

  • 跑 uv sync 安装依赖项
  • 确保您正在使用 uv run python 或者只是 python 有适当的环境

“无效的API密钥”(intervals.icu)

  • 验证您的 INTERVALS_API_KEY 在 .env 文件
  • 在上查看您的API密钥https://intervals.icu/settings/developer
  • 确保您的 INTERVALS_ATHLETE_ID 匹配您的个人资料

“Strava访问令牌无效或过期”

  • 从Strava API应用程序获取新的访问令牌
  • 更新 STRAVA_ACCESS_TOKEN 在你的 .env 文件

“Claude中的MCP服务器未连接”

  • 检查中的文件路径 claude_desktop_config.json 是正确的
  • 配置更改后重新启动Claude Desktop
  • 测试服务器是否无错误运行: python test_intervals.py

调试模式

# Test intervals.icu connection
python test_intervals.py

# Run intervals.icu server directly (recommended)
python run_intervals_server.py

# Run Strava server
uv run python run_server.py

发展

添加新工具

  • 斯特拉瓦:扩展 @app.list_tools() 和 @app.call_tool() 在……里面 src/strava_mcp/server.py
  • intervals.icu:在中扩展处理程序 src/intervals_mcp/server.py (提供更全面的API)

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 添加您的更改
  4. 使用您的健身数据(Strava和/或intermediate.icu)进行测试
  5. 提交拉取请求

为什么intervals.icu? ⭐

intervals.icu提供了比Strava更全面的训练数据访问:

  • 完整的培训分析:功率曲线、训练负荷建模、健身/疲劳跟踪
  • 详细的锻炼分析:时间间隔细分、结构化培训分析、尽最大努力
  • 健康整合:睡眠、心率变异性、压力跟踪,用于全面的健康监测
  • 高级性能指标:特定运动区域、设备跟踪、天气相关性
  • 时间序列数据访问:完全访问电源、心率、GPS和传感器数据流
  • 培训计划:日历与计划锻炼和分期相结合
  • 更好的API:比Strava的API更稳定、更全面、更易于使用

对于严肃的运动员和教练来说,intervals.icu MCP服务器为AI助手提供了有意义的训练见解和表现分析所需的深度数据。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

免责声明

本项目与Strava或intervals.icu无关。它使用官方API访问您的个人健身数据。您的数据仍然是私有的,只能通过您自己的MCP服务器实例访问。始终审查每个平台的API权限和服务条款。