Strava活动数据查询服务

一个基于Model Context Protocol (MCP)的服务,提供对Strava API的访问,允许语言模型查询运动员活动数据。

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

使用说明

Strava MCP服务器

A. 模型上下文协议 (MCP)服务器,其提供对Strava API的访问。它允许语言模型从Strava API查询运动员活动数据。

可用工具

服务器公开了以下工具:

活动查询

  • get_activities(limit: int = 10):获取经过认证的运动员最近的活动
  • get_activities_by_date_range(start_date: str, end_date: str, limit: int = 30):获取特定日期范围内的活动
  • get_activity_by_id(activity_id: int):获取特定活动的详细信息
  • get_recent_activities(days: int = 7, limit: int = 10):获取过去X天的活动

日期应以ISO格式提供(YYYY-MM-DD).

活动数据格式

服务器返回具有一致字段名称和单位的活动数据:

字段 描述 单位
name 活动名称 -
sport_type 运动类型 -
start_date 开始日期和时间 ISO 8601
distance_metres 距离 米
elapsed_time_seconds 总运行时间 秒
moving_time_seconds 移动时间 秒
average_speed_mps 平均速度 米每秒
max_speed_mps 最大速度 米每秒
total_elevation_gain_metres 总高程增益 米
elev_high_metres 最高海拔 米
elev_low_metres 最低海拔 米
calories 燃烧的卡路里 kcal
start_latlng 起始坐标 [lat,lng]
end_latlng 终点坐标 [lat,lng]

认证

要使用此服务器,您需要使用Strava API进行身份验证。请按照以下步骤操作:

  1. 创建Strava API应用程序:

    • 首选 Strava API设置
    • 创建一个应用程序以获取您的客户端ID和客户端密码
    • 将授权回调域设置为 localhost
  2. 获取您的刷新令牌:

    • 使用随附的 get_strava_token.py 脚本:
    python get_strava_token.py
    
    • 按照提示授权您的应用程序
    • 该脚本将把您的令牌保存到 .env 文件
  3. 设置环境变量: 服务器需要以下环境变量:

    • STRAVA_CLIENT_ID:您的Strava API客户ID
    • STRAVA_CLIENT_SECRET:您的Strava API客户秘密
    • STRAVA_REFRESH_TOKEN:您的Strava API刷新令牌

用法

Claude桌面版

更新您的 claude_desktop_config.json (位于 ~/Library/Application\ Support/Claude/claude_desktop_config.json 在macOS和 %APPDATA%/Claude/claude_desktop_config.json 在Windows上)包括以下内容:

{
    "mcpServers": {
        "strava": {
            "command": "uvx",
            "args": [
                "strava-mcp-server"
            ],
            "env": {
                "STRAVA_CLIENT_ID": "YOUR_CLIENT_ID",
                "STRAVA_CLIENT_SECRET": "YOUR_CLIENT_SECRET",
                "STRAVA_REFRESH_TOKEN": "YOUR_REFRESH_TOKEN"
            }
        }
    }
}

克劳德·韦伯

对于Claude Web,您可以在本地运行服务器,并使用MCP扩展进行连接。

查询示例

连接后,您可以向Claude提出以下问题:

  • “我最近的活动是什么?”
  • “显示我上周的活动”
  • “在过去的一个月里,我跑得最长的是什么?”
  • “获取我最新自行车活动的详细信息”

错误处理

服务器为常见问题提供人类可读的错误消息:

  • 日期格式无效
  • API身份验证错误
  • 网络连接问题

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。