rbctmz_mcp-server-strava 仓库介绍
仓库概述
仓库名称: rbctmz_mcp-server-strava
仓库作者: MCP-Mirror
仓库URL: rbctmz_mcp-server-strava
仓库描述: 本仓库是原始仓库 rbctmz/mcp-server-strava 的镜像。该项目用于实现与 Strava API 的集成,并通过 Model Context Protocol (MCP) SDK 提供训练分析和个性化建议。
仓库作者: MCP-Mirror
仓库URL: rbctmz_mcp-server-strava
仓库描述: 本仓库是原始仓库 rbctmz/mcp-server-strava 的镜像。该项目用于实现与 Strava API 的集成,并通过 Model Context Protocol (MCP) SDK 提供训练分析和个性化建议。
项目功能
rbctmz_mcp-server-strava 旨在通过集成 Strava 服务,提供有关训练活动的全面分析和基于数据驱动的训练建议。主要功能包括:
- 训练分析:解析从 Strava 获取的训练数据,提供详细的活动分析。
- 个性化建议:基于用户的活动历史和当前情况,生成全面的训练建议。
- API 调用速率限制:防止超过 Strava API 的调用限制,保障性能和可用性。
- 自动更新令牌:通过自动管理和更新 Strava API 令牌,确保连接的持续性和稳定性。
系统要求
- Python:3.10 及以上版本
- 软件环境:
- Claude Desktop
- uv (建议使用)
- 其他要求:
- 需要拥有一个有效的 Strava 账户
安装步骤
请按照以下步骤进行安装和配置:
克隆仓库
首先克隆项目仓库到本地:
git clone https://github.com/rbctmz/mcp-server-strava.git
cd mcp-server-strava
使用 uv
安装
使用
uv
进行推荐安装:curl -LsSf https://astral.sh/uv/install.sh | sh
uv pip install .
或进行开发模式安装:
uv pip install -e ".[dev]"
安装 MCP SDK
确保 MCP SDK 已安装,以便与该项目顺利集成:
uv add "mcp[cli]"
配置过程
Strava API 配置
访问 Strava API 设置页面 并创建新应用。必需输入的信息包括:
- 应用名称:
MCP Strava Integration
- 类别:
Training Analysis
- 网站:
http://localhost
- 授权回调域:
localhost
环境设置
-
创建环境变量文件:
cp .env-template .env
-
使用以下命令获取访问令牌:
python scripts/auth.py
-
运行以下命令以验证设置是否正确:
mcp dev src/server.py curl -X GET "http://localhost:8000/activities"
API 和使用示例
使用此项目提供的丰富资源进行开发和集成:
资源类型和工具
类型 | 名称 | 描述 |
---|---|---|
资源 | strava://activities | 活动列表 |
资源 | strava://activities/{id} | 活动详情 |
资源 | strava://athlete/zones | 训练区间 |
资源 | strava://athlete/clubs | 运动员俱乐部 |
资源 | strava://gear/{gear_id} | 器材信息 |
工具 | analyze_activity(activity_id) | 活动分析 |
工具 |
| 训练负荷分析 |
工具 |
| 训练建议 |
代码示例
以下是一些示例代码,展示如何使用 API 和工具:
from mcp import ClientSession
# 获取活动信息
async with ClientSession() as session:
activities = await session.read_resource("strava://activities")
activity = await session.read_resource("strava://activities/12345678")
# 活动分析
result = analyze_activity(activity_id="12345678")
"""
{
"type": "Run",
"distance": 5000,
"moving_time": 1800,
"analysis": {
"pace": 5.5, # 分/公里
"effort": "Средняя"
}
}
"""
# 训练负荷分析
summary = analyze_training_load(activities)
"""
{
"activities_count": 10,
"total_distance": 50.5, # 公里
"total_time": 5.2, # 小时
"heart_rate_zones": {
"easy": 4, # 心率 < 120
"medium": 4, # 心率 120-150
"hard": 2 # 心率 > 150
}
}
"""
开发与测试
CI/CD 和安全
- 代码覆盖率:72%
- 测试通过:15 项
- 代码格式化:使用格式化工具 Ruff
GitHub Actions 检查
项目通过 CI/CD 管道进行质量和安全保证,包含:
类型 | 工具 | 描述 |
---|---|---|
Lint | ruff | 代码格式和风格检查 |
测试 | pytest | 单元测试和集成测试 |
覆盖率 | pytest-cov | 代码覆盖率报告 |
安全策略
- 通过
.env
和 GitHub Secrets 管理敏感信息 - 实现调用频率限制:每 15 分钟 100 次请求
贡献流程
我们欢迎任何形式的贡献,流程如下:
-
Fork 本仓库
-
安装依赖:
uv pip install -e ".[dev]"
-
创建新的功能分支:
git checkout -b feature/name
-
确保所有代码通过格式和风格检查:
ruff format . ruff check . pytest --cov=src
-
提交 Pull Request
支持联系方式
如果在使用中遇到任何问题,或有任何建议,请通过以下渠道联系:
- GitHub Issues: 创建 issue
- Telegram: @greg_kisel
项目许可
本项目使用 MIT 许可证。请查看许可证文件以获取更多信息。