Strava API服务器

一个全面的模型上下文协议(MCP)服务器,提供对Strava API v3的完整访问,适用于将Strava数据与Claude Desktop和其他MCP兼容客户端集成。

  • by Anway-Kapoor
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 anway-kapoor/strava-mcp

使用说明

Strava MCP服务器⚡

全面 模型上下文协议(MCP) 提供完全访问权限的服务器 Strava API v3非常适合将Strava数据与Claude Desktop和其他MCP兼容客户端集成。

✨ 特性

🏃‍♂️ 活动

  • 创建和更新手动活动
  • 检索详细的活动信息
  • 访问评论、荣誉、圈数和动力区
  • 使用高级参数搜索和过滤活动
  • 上传GPX/TCX文件

👤 运动员

  • 获取经过认证的运动员资料和统计数据
  • 访问培训区域和设置
  • 更新运动员档案信息
  • 检索运动员俱乐部会员资格

🏆 俱乐部

  • 浏览俱乐部详情和活动
  • 访问成员列表和管理员
  • 获取俱乐部特定活动订阅源

🎯 路段和路线

  • 探索特定领域的细分市场
  • 访问星级细分市场和排行榜
  • 获得细分市场的努力和成就
  • 检索路线详细信息和导出格式

🔧 附加功能

  • 40多个API终点 全面覆盖Strava API v3
  • OAuth 2.0身份验证 具有自动令牌管理功能
  • 线程安全操作 用于可靠的并发访问
  • 全面的错误处理 详细记录
  • 符合MCP标准 工具和资源分类

🚀 快速开始

先决条件

  • Python 3.8或更高版本
  • Strava开发者账户
  • Claude Desktop或其他MCP客户端

安装

  1. 克隆存储库

    git clone https://github.com/yourusername/strava-mcp.git
    cd strava-mcp
    
  2. 创建虚拟环境

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装依赖项

    pip install -r requirements.txt
    
  4. 设置Strava API证书

    • 首选 Strava开发商
    • 创建新应用程序
    • 将授权回调域设置为: localhost
    • 将授权回调URL设置为: http://localhost:8080
    • 注意你的 Client ID 和 Client Secret
  5. 完成设置(推荐-所有用户)

    python setup_complete.py
    

    这个脚本将:

    • 指导您完成OAuth设置
    • 将令牌保存到 .env 文件
    • 自动更新您的Claude Desktop配置

    特定用例的替代设置:

    # For server deployments (no Claude Desktop):
    python -m mcp_server.oauth_setup
    
    # For token refresh only (when tokens expire):
    python update_claude_config.py
    
  6. 配置Claude桌面(如果没有自动更新) 添加到您的 claude_desktop_config.json:

    {
      "mcpServers": {
        "strava-mcp": {
          "command": "path/to/your/strava-mcp/start_mcp_server.bat",
          "cwd": "path/to/your/strava-mcp"
        }
      }
    }
    

🔧 用法

手动令牌刷新

当您的令牌过期时,请刷新它们:

# Refresh tokens and update Claude Desktop config
python update_claude_config.py

# Or just refresh tokens in .env file
python refresh_tokens.py

可用工具和资源

🛠️ 工具 (写入操作)

  • create_strava_activity -创建手动活动
  • update_strava_activity -更新现有活动
  • update_athlete_profile -更新运动员信息
  • star_strava_segment -星/星段
  • upload_activity_file -上传GPX/TCX文件
  • search_activities -高级活动搜索
  • explore_segments_in_area -按位置查找细分市场
  • get_segment_leaderboard -获取细分市场排名
  • get_activity_stream_data -获取活动流数据

📊 资源 (读取操作)

  • 活动详情、评论、荣誉、圈数、区域
  • 运动员简介、统计数据、区域、俱乐部
  • 俱乐部详情、活动、会员
  • 装备信息和使用统计数据
  • 路线详细信息和导出格式
  • 细分信息和努力
  • 流数据(GPS、功率、心率)

🔐 认证

此服务器使用 OAuth 2.0 手动刷新令牌:

  • 环境变量中的安全令牌存储
  • 线程安全令牌管理
  • 自动更新Claude桌面配置
  • 手动刷新功能,实现完全控制

📁 项目结构

strava-mcp/
├── mcp_server/
│   ├── __init__.py
│   ├── __main__.py          # MCP server entry point
│   ├── server.py            # FastMCP server with tools/resources
│   ├── api.py              # Complete Strava API v3 wrapper
│   ├── auth.py             # OAuth 2.0 authentication manager
│   └── oauth_setup.py      # Initial OAuth setup utility
├── requirements.txt         # Python dependencies
├── refresh_tokens.py       # Manual token refresh utility
├── update_claude_config.py # Claude Desktop config updater
├── start_mcp_server.bat   # Server startup script (Windows)
├── start_mcp_server.sh    # Server startup script (Unix/Linux)
└── README.md              # This file

🤝 贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📄 许可证

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

🙏 致谢

⭐ 星这个回购!

如果你觉得这个项目有用,请考虑给它一颗星!它帮助其他人发现这个工具。