使用说明
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存储库
-
克隆存储库:
git clone https://github.com/yourusername/strava-mcp.git cd strava-mcp -
安装所需的依赖项:
pip install -r requirements.txt # Or with uv: uv pip install -r requirements.txt -
创建一个
.env使用您的Strava API证书提交文件(见下文)。
选项2:使用紫外线从头开始设置
-
安装
uv包管理器:curl -LsSf https://astral.sh/uv/install.sh | sh注意:安装后重新启动终端
-
创建并设置您的项目:
# 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 -
下载
strava.py从GitHub存储库中创建文件或创建自己的文件。 -
创建一个
.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应用程序
- 登录您的Strava帐户
- 首选 https://www.strava.com/settings/api
- 创建新应用程序:
- 输入应用程序名称(例如,“My Strava MCP”)
- 输入一个网站(例如,您的GitHub个人资料或“http://localhost")
- 输入描述
- 上传图标(可选)
- 将授权回调域设置为
localhost
- 创建应用程序后,您将收到 客户端ID 和 客户端密钥
第二步:授权您的申请
您需要授权您的应用程序以获取刷新令牌:
-
使用您的客户端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 -
在浏览器中访问此URL,然后单击“授权”
-
您将被重定向到以下URL:
http://localhost?state=&code=AUTHORIZATION_CODE -
从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
- 打开Claude桌面版
- 点击右上角的个人资料图片,然后选择“设置”
- 导航到“实验”部分
- 打开“启用模型上下文协议”
- 点击“编辑配置”打开配置文件。默认位置为:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- 将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"
]
}
}
}
- 保存文件并重新启动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服务器:
- 使用OAuth2使用Strava API进行身份验证
- 令牌过期时自动刷新
- 将Strava API响应转换为适用于人工智能分析的格式
- 实现模型上下文协议以与AI助手通信
- 提供干净、一致的界面来访问您的健身数据
运作原理
当您向Claude询问有关Strava数据的问题时:
- Claude分析您的请求并确定使用哪种Strava工具
- Claude向MCP服务器发送带有适当工具名称和参数的请求
- MCP服务器对Strava进行必要的API调用
- Strava返回MCP服务器格式化并发送回Claude的数据
- Claude处理数据并生成回答您问题的响应
该流程允许Claude访问您的Strava数据,而无需直接访问API,也无需与Claude共享您的API证书。
故障排除
连接问题
如果您在连接Strava时遇到问题:
- 在中验证您的凭据
.env文件 - 确保您已授予必要的权限
- 尝试手动刷新您的令牌
- 检查您的互联网连接
Strava API问题
常见的Strava API问题包括:
- 401未经授权:您的访问令牌无效或已过期。服务器应自动刷新它,但如果不能,您可能需要获取新的刷新令牌。
- 403禁止:您正在尝试访问您没有权限的数据。
- 404未找到:请求的资源不存在。
- 429请求太多:您已达到API利率限制。
错误:没有访问令牌
如果您看到此错误,则您的刷新令牌可能无效或已过期。按照“获取Strava API凭据”中的步骤获取新的刷新令牌。
错误:字符串应与模式匹配
如果您看到此错误,则表示工具名称格式不正确。确保所有工具名称都符合模式 ^[a-zA-Z0-9_-]{1,64}$ (仅限字母、数字、下划线和连字符)。不要在工具名称中使用正斜杠或特殊字符。
Claude用于桌面调试
如果Claude for Desktop无法识别您的MCP服务器:
-
检查配置:
- 确保你的
claude_desktop_config.json文件格式正确 - 确保所有路径都是绝对路径
- 验证代码和配置中的服务器名称是否匹配
- 确保你的
-
检查日志:
# On macOS: tail -f ~/Library/Logs/Claude/mcp*.log # On Windows: type %APPDATA%\Claude\Logs\mcp*.log -
查看Claude更新:
- 确保Claude for Desktop已更新到最新版本
-
重新启动桌面版的Claude:
- 更改配置后,重新启动Claude for Desktop
-
高级日志记录:
# 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 -
使用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 -
在调试模式下运行服务器:
# If your server supports a debug flag: python strava.py --debug # Or: uv run strava.py --debug
安全考虑
此MCP服务器将您的Strava API凭证存储在 .env 文件。确保:
- 保持你的
.env文件安全,从不将其提交到公共存储库 - 在授权API访问时查看您授予的权限
- 使用用例所需的最小范围