Strava数据访问服务

一个连接Strava API的模型上下文协议(MCP)服务器,允许通过Claude等AI助手访问和分析用户的健身数据。

  • by AnkitPatel12
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ankitpatel12/stravamcp

使用说明

Strava MCP服务器

模型上下文协议(MCP)服务器,连接到Strava的API,允许您检索健身数据,并通过Claude或其他人工智能助手与之交互。

概述

该项目提供了 模型上下文协议 连接到Strava API的服务器。它使像Claude这样的人工智能助手能够访问和分析您的Strava数据,包括:

  • 活动(跑步、骑行、游泳等)
  • 运动员统计
  • 活动详细信息
  • 路线
  • 运动员个人资料信息

需求

  • Python 3.10或更高版本
  • 具有API访问权限的Strava帐户
  • Strava API凭据(客户端ID、客户端机密和刷新令牌)
  • Claude for Desktop或其他兼容MCP的AI助手
  • uv 包管理器(建议用于环境设置)

安装

选项1:使用GitHub存储库

  1. 克隆存储库:

    git clone https://github.com/yourusername/strava-mcp.git
    cd strava-mcp
    
  2. 安装所需的依赖项:

    pip install -r requirements.txt
    # Or with uv:
    uv pip install -r requirements.txt
    
  3. 创建一个 .env 使用您的Strava API证书提交文件(见下文)。

选项2:使用紫外线从头开始设置

  1. 安装 uv 包管理器:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    

    注意:安装后重新启动终端

  2. 创建并设置您的项目:

    # Create a new directory for the project
    uv init strava-mcp
    cd strava-mcp
    
    # Create virtual environment and activate it
    uv venv
    source .venv/bin/activate  # On Windows, use: .venv\Scripts\activate
    
    # Install dependencies
    uv add "mcp[cli]" httpx python-dotenv
    
  3. 下载 strava.py 从GitHub存储库中创建文件或创建自己的文件。

  4. 创建一个 .env 使用您的Strava API证书在项目目录中的文件:

    STRAVA_CLIENT_ID=your_client_id
    STRAVA_CLIENT_SECRET=your_client_secret
    STRAVA_REFRESH_TOKEN=your_refresh_token
    STRAVA_ACCESS_TOKEN=your_access_token 
    

获取Strava API证书

要使用此MCP服务器,您需要向Strava注册应用程序以获得API凭据。

步骤1:创建Strava API应用程序

  1. 登录您的Strava帐户
  2. 首选 https://www.strava.com/settings/api
  3. 创建新应用程序:
    • 输入应用程序名称(例如,“My Strava MCP”)
    • 输入一个网站(例如,您的GitHub个人资料或“http://localhost")
    • 输入描述
    • 上传图标(可选)
    • 将授权回调域设置为 localhost
  4. 创建应用程序后,您将收到 客户端ID 和 客户端密钥

第二步:授权您的申请

您需要授权您的应用程序以获取刷新令牌:

  1. 使用您的客户端ID构建授权URL:

    https://www.strava.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=http://localhost&response_type=code&scope=activity:read_all,profile:read_all,read_all
    
  2. 在浏览器中访问此URL,然后单击“授权”

  3. 您将被重定向到以下URL:

    http://localhost?state=&code=AUTHORIZATION_CODE
    
  4. 从URL中提取授权码(它是后面的值 code=)

步骤3:将授权码兑换为代币

使用授权码获取访问和刷新令牌:

curl -X POST https://www.strava.com/oauth/token \
  -F client_id=YOUR_CLIENT_ID \
  -F client_secret=YOUR_CLIENT_SECRET \
  -F code=AUTHORIZATION_CODE \
  -F grant_type=authorization_code

回复将包括 access_token 以及a refresh_token。将这些添加到您的 .env 文件。

用法

运行MCP服务器

使用以下命令运行服务器 uv:

# From within your project directory
uv run strava.py

或者直接使用Python:

python strava.py

为桌面配置Claude

  1. 打开Claude桌面版
  2. 点击右上角的个人资料图片,然后选择“设置”
  3. 导航到“实验”部分
  4. 打开“启用模型上下文协议”
  5. 点击“编辑配置”打开配置文件。默认位置为:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  6. 将Strava MCP服务器添加到配置中:
{
    "mcpServers": {
        "strava": {
            "command": "uv",
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/YOUR/strava-mcp",
                "run",
                "strava.py"
            ]
        }
    }
}

例如,如果你的项目在 /Users/username/projects/strava-mcp,您的配置将是:

{
    "mcpServers": {
        "strava": {
            "command": "uv",
            "args": [
                "--directory",
                "/Users/username/projects/strava-mcp",
                "run",
                "strava.py"
            ]
        }
    }
}

你也可以使用Python解释器的完整路径:

{
    "mcpServers": {
        "strava": {
            "command": "/usr/bin/python3",
            "args": [
                "/ABSOLUTE/PATH/TO/YOUR/strava-mcp/strava.py"
            ]
        }
    }
}
  1. 保存文件并重新启动Claude for Desktop

可用工具

Strava MCP服务器提供以下工具:

工具名称 描述 参数
ping 测试连接的简单ping端点 无
activities 列出您最近的活动 per_page:要返回的活动数(默认值:30)
page:页码(默认值:1)
activity 获取特定活动的详细信息 activity_id:活动的ID
athlete 获取您的个人资料信息 无
stats 获取你的运动员统计数据 athlete_id:运动员ID
routes 列出您保存的路线 per_page:要返回的路线数(默认值:30)
page:页码(默认值:1)

当您的MCP服务器正确连接到Claude时,您将看到一个锤子图标(🔨) 在界面中。单击此图标查看Strava MCP服务器中的可用工具。

Claude的查询示例

一旦您的MCP服务器正确配置并运行,您可以向Claude提出以下问题:

  • “我最近的活动是什么?”
  • “给我看看今年的跑步统计数据。”
  • “在过去的一个月里,我骑行时间最长的是什么?”
  • “计算我最近跑步的平均速度。”
  • “分析我过去几周的训练模式。”
  • “把我这个月的自行车表现和上个月比较一下。”
  • “徒步旅行活动使我的总海拔增加了多少?”
  • “向我展示我最近一次马拉松比赛的详细信息。”
  • “今年我跑了多少公里?”
  • “我是否一直根据我的活动历史进行训练?”

Strava API详细信息

支持的活动类型

Strava支持多种活动类型,包括:

  • 跑
  • 骑行(骑自行车)
  • 游泳
  • 徒步旅行
  • 走
  • 高山滑雪
  • 越野滑雪
  • 独木舟
  • 混合健身
  • 电动自行车骑行
  • 椭圆的
  • 手摇三轮车
  • 溜冰鞋
  • 直排轮
  • 独木舟
  • 风筝冲浪
  • 越野滑雪
  • 攀岩
  • 滚轴滑雪
  • 行
  • 滑雪板
  • 雪兔
  • 楼梯踏步机
  • 站立滑水板
  • 冲浪
  • 维罗车
  • 虚拟骑行
  • 虚拟跑步
  • 重量训练
  • 轮椅
  • 帆板运动
  • 锻炼
  • 瑜伽

API费率限制

API Strava有以下费率限制:

  • 每15分钟100个请求
  • 每天1000个请求

MCP服务器优雅地处理这些限制,并在达到限制时等待。

数据隐私

此MCP服务器仅访问您授权的Strava数据。它不会永久存储任何数据,它只是在Strava和Claude之间传递信息。您的Strava凭据仅存储在您的本地 .env 文件。

建筑

此MCP服务器:

  1. 使用OAuth2使用Strava API进行身份验证
  2. 令牌过期时自动刷新
  3. 将Strava API响应转换为适用于人工智能分析的格式
  4. 实现模型上下文协议以与AI助手通信
  5. 提供干净、一致的界面来访问您的健身数据

运作原理

当您向Claude询问有关Strava数据的问题时:

  1. Claude分析您的请求并确定使用哪种Strava工具
  2. Claude向MCP服务器发送带有适当工具名称和参数的请求
  3. MCP服务器对Strava进行必要的API调用
  4. Strava返回MCP服务器格式化并发送回Claude的数据
  5. Claude处理数据并生成回答您问题的响应

该流程允许Claude访问您的Strava数据,而无需直接访问API,也无需与Claude共享您的API证书。

故障排除

连接问题

如果您在连接Strava时遇到问题:

  1. 在中验证您的凭据 .env 文件
  2. 确保您已授予必要的权限
  3. 尝试手动刷新您的令牌
  4. 检查您的互联网连接

Strava API问题

常见的Strava API问题包括:

  • 401未经授权:您的访问令牌无效或已过期。服务器应自动刷新它,但如果不能,您可能需要获取新的刷新令牌。
  • 403禁止:您正在尝试访问您没有权限的数据。
  • 404未找到:请求的资源不存在。
  • 429请求太多:您已达到API利率限制。

错误:没有访问令牌

如果您看到此错误,则您的刷新令牌可能无效或已过期。按照“获取Strava API凭据”中的步骤获取新的刷新令牌。

错误:字符串应与模式匹配

如果您看到此错误,则表示工具名称格式不正确。确保所有工具名称都符合模式 ^[a-zA-Z0-9_-]{1,64}$ (仅限字母、数字、下划线和连字符)。不要在工具名称中使用正斜杠或特殊字符。

Claude用于桌面调试

如果Claude for Desktop无法识别您的MCP服务器:

  1. 检查配置:

    • 确保你的 claude_desktop_config.json 文件格式正确
    • 确保所有路径都是绝对路径
    • 验证代码和配置中的服务器名称是否匹配
  2. 检查日志:

    # On macOS:
    tail -f ~/Library/Logs/Claude/mcp*.log
    
    # On Windows:
    type %APPDATA%\Claude\Logs\mcp*.log
    
  3. 查看Claude更新:

    • 确保Claude for Desktop已更新到最新版本
  4. 重新启动桌面版的Claude:

    • 更改配置后,重新启动Claude for Desktop
  5. 高级日志记录:

    # To save logs to a file:
    tail -n 20 -F ~/Library/Logs/Claude/mcp*.log > strava_log_output.txt 2>&1
    
    # To both view and save logs:
    tail -n 20 -F ~/Library/Logs/Claude/mcp*.log | tee strava_log_output.txt
    
  6. 使用MCP检查器:

    # First, install the MCP CLI tools if you haven't already:
    pip install mcp[cli]
    
    # Then, run the inspector:
    mcp inspect --server-id strava
    
  7. 在调试模式下运行服务器:

    # If your server supports a debug flag:
    python strava.py --debug
    # Or:
    uv run strava.py --debug
    

安全考虑

此MCP服务器将您的Strava API凭证存储在 .env 文件。确保:

  • 保持你的 .env 文件安全,从不将其提交到公共存储库
  • 在授权API访问时查看您授予的权限
  • 使用用例所需的最小范围

许可证

MIT许可证

致谢