Back to MCP directory
publicPublicdnsLocal runtime

strava-mcp

该项目是一个基于TypeScript的Strava API桥接服务,通过MCP标准将Strava的运动数据功能暴露为LLM可调用的工具,支持活动统计、路线导出、心率分析等多种运动数据交互功能。

article

README

🚀 Strava API 函数文档

本项目提供了一系列与 Strava API 交互的函数,可用于获取活动详细信息、活动统计数据以及用户心率区间设置等,帮助开发者更好地利用 Strava 的数据。

🚀 快速开始

你可以根据需求调用不同的函数,如获取指定活动的详细信息、活动详细统计信息或用户的心率区间设置。调用时需注意权限要求和输入参数的正确性。

📚 详细文档

get-activity

功能描述

获取指定活动 ID 的详细信息。

语法

get-activity <activity_id>

描述

此函数返回指定活动的所有可用数据。需要有效的访问令牌,并且必须满足适当的权限。

输入参数

| 参数 | 详情 | |------|------| | <activity_id> | 指定活动的唯一标识符。 |

输出格式

返回 JSON 格式的数据,包含以下字段: | 属性 | 详情 | |------|------| | id | 活动 ID。 | | name | 活动名称。 | | description | 活动描述(可选)。 | | distance | 活动距离。 | | elapsed_time | 活动总用时。 | | moving_time | 活动中实际运动的时间。 | | average_speed | 平均速度。 | | max_speed | 最高速度。 | | elevation_gain | 总海拔升高。 | | start_latlng | 起点经纬度坐标。 | | end_latlng | 终点经纬度坐标。 | | map_summary | 活动地图摘要。 | | notes | 活动备注(可选)。 |

示例请求

{
  "activity_id": 1234567890
}

示例响应片段

{
  "id": 1234567890,
  "name": "Morning Ride",
  "description": null,
  "distance": 34.5,
  "elapsed_time": "02:30:15",
  "moving_time": "02:25:45",
  "average_speed": 16.7,
  "max_speed": 35.2,
  "elevation_gain": 89.3,
  "start_latlng": [37.7749, -122.4189],
  "end_latlng": [37.7749, -122.4189],
  "map_summary": "...",
  "notes": null
}

注意事项

⚠️ 重要提示

  • 需要 activity:read 权限。
  • 活动数据可能因隐私设置而有所不同。

错误信息

  • 缺少或无效令牌:401 Unauthorized。
  • 活动未找到:404 Not Found。

get-activity-details

功能描述

获取指定活动 ID 的详细统计信息,包括心率、功率、速度和海拔数据。

语法

get-activity-details <activity_id>

描述

此函数返回与活动相关的所有详细统计数据。需要有效的访问令牌,并且必须满足适当的权限。

输入参数

| 参数 | 详情 | |------|------| | <activity_id> | 指定活动的唯一标识符。 |

输出格式

返回 JSON 格式的数据,包含以下字段: | 属性 | 详情 | |------|------| | id | 活动 ID。 | | name | 活动名称。 | | distance | 活动距离。 | | elapsed_time | 活动总用时。 | | moving_time | 活动中实际运动的时间。 | | average_speed | 平均速度。 | | max_speed | 最高速度。 | | elevation_gain | 总海拔升高。 | | average_heart_rate | 平均心率。 | | max_heart_rate | 最高心率。 | | average_power | 平均功率。 | | max_power | 最大功率。 |

示例请求

{
  "activity_id": 1234567890
}

示例响应片段

{
  "id": 1234567890,
  "name": "Morning Ride",
  "distance": 34.5,
  "elapsed_time": "02:30:15",
  "moving_time": "02:25:45",
  "average_speed": 16.7,
  "max_speed": 35.2,
  "elevation_gain": 89.3,
  "average_heart_rate": 120,
  "max_heart_rate": 180,
  "average_power": 250,
  "max_power": 300
}

注意事项

⚠️ 重要提示

  • 需要 activity:read 权限。
  • 活动数据可能因隐私设置而有所不同。

错误信息

  • 缺少或无效令牌:401 Unauthorized。
  • 活动未找到:404 Not Found。

get-athlete-zones

功能描述

获取用户的当前心率区间设置。

语法

get-athlete-zones

描述

此函数返回与用户相关的心率区间配置。需要有效的访问令牌,并且必须满足适当的权限。

输入参数

无输入参数。

输出格式

返回 JSON 格式的数据,包含以下字段: | 属性 | 详情 | |------|------| | id | 区间 ID。 | | name | 区间名称。 | | min_bpm | 区间下限(心率每分钟跳动次数)。 | | max_bpm | 区间上限(心率每分钟跳动次数)。 |

示例响应片段

[
  {
    "id": 1,
    "name": "Zone 1: Active Recovery",
    "min_bpm": 50,
    "max_bpm": 60
  },
  {
    "id": 2,
    "name": "Zone 2: Steady State",
    "min_bpm": 61,
    "max_bpm": 70
  },
  {
    "id": 3,
    "name": "Zone 3: Threshold",
    "min_bpm": 71,
    "max_bpm": 80
  }
]

注意事项

⚠️ 重要提示

需要 profile:read 权限。

错误信息

  • 缺少或无效令牌:401 Unauthorized。
  • 权限不足:403 Forbidden。

🤝 贡献

如果对本文档有任何疑问或建议,请访问 Strava 开发者文档

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client