Strava活动数据集成服务器

整合Strava API与MCP协议的服务器,支持从AI助手直接获取和分析Strava运动数据,适用于跑步、骑行等活动的数据查询和统计。

  • by groundcobra009
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 groundcobra009/strava-mcp-server

使用说明

Strava MCP服务器

Strava API和MCP(Model Context Protocol)的规格化距离的幂函数。

这MCP通过使用服务器Claude等的AI直接从助手Strava中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。可以用对话形式确认跑步和骑自行车的记录,也可以简单地查询统计信息。

📦 支持的客户端

这MCP服务器可供以下客户端使用:

  • ✅ Claude桌面版 - Anthropic官方桌面应用程序
  • ✅ 光标 - AI统一代码编辑器
  • ✅ 马努斯 - AI辅助平台
  • ✅ 迪菲 -不编码AI应用程序平台
  • ⚠️ ChatGPT(开发模式) - Custom GPT Actions 经过(需要HTTP包装)

安装

npm从安装

npm install -g @keitaro_aigc/strava-mcp-server

或项目本地:

npm install @keitaro_aigc/strava-mcp-server

从源构建

git clone https://github.com/yourusername/strava-mcp-server.git
cd strava-mcp-server
npm install
npm run build

主要功能

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

1. get_activities -获取活动列表

获取最近的跑步、骑自行车、游泳等活动一览表。

  • 参数:
    • page (可选):页码(默认值:1)
    • per_page (可选):每页计数(默认值:30,最大值:200)
  • 可获取的信息:活动名称、距离、时间、平均速度、获得海拔等

2. get_activity -获取特定活动的详细信息

指定的活动ID的明细栏样式中定义的设置。

  • 参数:
    • activity_id (必需):活动的ID
  • 可获取的信息:详细统计、中断时间、心率、功率数据等

3. get_athlete -获取运动员简介

获取被认证的运动员(自己)的简介信息。

  • 可获取的信息:姓名、体重、所在地、性别等

4. get_athlete_stats -获取统计信息

获取运动员的累计统计信息或最近的统计信息。

  • 参数:
    • athlete_id (必需):运动员的ID
  • 可获取的信息:累计距离、累计时间、最近4周的统计、今年的统计等

安装,安装

前提条件

  • Node.js 18已安装以上内容
  • Strava拥有账户
  • Claude Desktop或MCP已安装支持的客户端

第1步:Strava API认证信息

Strava API要使用,请创建应用程序API必须获取凭据。

1.1 Strava创建应用程序

  1. Strava API设置页面访问
  2. 「Create App」或单击“我的API应用程序”
  3. 输入以下信息:
    • 应用程序名称:任何名称(例如“我的MCP Server”)
    • 类别:选择适当的类别
    • 俱乐部:空白OK
    • 网站:任意URL(例如:http://localhost)
    • 授权回调域: localhost
    • 应用描述:任何说明
  4. 接受使用条款并单击“创建”

1.2 Client ID和Client Secret确认

创建应用程序时,将显示以下信息:

  • 客户端ID:数字罗列(例如123456)
  • 客户端密钥:字母数字字符串(例如:abc123def456)

请把这些记下来。

1.3 Refresh Token获取

  1. 以下URL请在浏览器中打开(YOUR_CLIENT_ID实际的Client ID):
https://www.strava.com/oauth/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=http://localhost&approval_prompt=force&scope=activity:read_all
  1. Strava登录并单击“授权”

  2. 重定向后的URL(http://localhost/?...),模板名称将采用不同的格式code复制参数值

    • 例:http://localhost/?code=abc123xyz789在工作空间的边缘abc123xyz789复制
  3. 在终端处执行以下命令(将每个值替换为实际值):

curl -X POST https://www.strava.com/oauth/token \
  -d client_id=YOUR_CLIENT_ID \
  -d client_secret=YOUR_CLIENT_SECRET \
  -d code=YOUR_CODE \
  -d grant_type=authorization_code
  1. 包含在响应中refresh_token的值:
{
  "access_token": "...",
  "refresh_token": "abc123...",  ← この値をメモ
  "expires_at": 1234567890
}

第2步:Claude Desktop中的设置

Claude Desktop的配置文件(claude_desktop_config.json)中添加以下内容:

macOS

  1. Claude Desktop打开配置文件:
open ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. 添加以下内容(如果有现有设置mcpServers添加到节):
{
  "mcpServers": {
    "strava": {
      "command": "npx",
      "args": ["-y", "@keitaro_aigc/strava-mcp-server"],
      "env": {
        "STRAVA_CLIENT_ID": "your_client_id",
        "STRAVA_CLIENT_SECRET": "your_client_secret",
        "STRAVA_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}
  1. Claude Desktop重新启动

  2. Claude Desktop右下角🔨显示标记「strava」确认可用

视窗
  1. Claude Desktop打开配置文件:
notepad %APPDATA%\Claude\claude_desktop_config.json
  1. macOS相同的JSON添加设置

  2. 将每个值替换为实际值

  3. Claude Desktop重新启动

  4. 🔨确认标记中的“strava”可用

步骤2-B: Cursor 中的设置

Cursor 在编辑器中使用:

配置文件位置

  • macOS/Linux: ~/.cursor/mcp.json
  • 视窗: %APPDATA%\Cursor\User\mcp.json

设定手顺

  1. 创建或编辑配置文件:
# macOS/Linux
mkdir -p ~/.cursor
nano ~/.cursor/mcp.json

# Windows
mkdir %APPDATA%\Cursor\User
notepad %APPDATA%\Cursor\User\mcp.json
  1. 添加以下内容:
{
  "mcpServers": {
    "strava": {
      "command": "npx",
      "args": ["-y", "@keitaro_aigc/strava-mcp-server"],
      "env": {
        "STRAVA_CLIENT_ID": "your_client_id",
        "STRAVA_CLIENT_SECRET": "your_client_secret",
        "STRAVA_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}
  1. 将每个值替换为实际凭据

  2. Cursor 重新启动

  3. Cursor 的,之AI 聊天MCP 确保工具可用

步骤2-C: Manus 中的设置

Manus 使用时:

设定手顺

  1. Manus 打开设置画面

  2. MCP 转到服务器设置部分

  3. 添加新服务器:

{
  "name": "strava",
  "command": "npx",
  "args": ["-y", "@keitaro_aigc/strava-mcp-server"],
  "env": {
    "STRAVA_CLIENT_ID": "your_client_id",
    "STRAVA_CLIENT_SECRET": "your_client_secret",
    "STRAVA_REFRESH_TOKEN": "your_refresh_token"
  }
}
  1. 保存设置

  2. Manus 重新启动并启用工具

步骤2-D: Dify 中的设置

Dify 在平台上:

对于自主机版本

  1. Dify 的,之 docker-compose.yml 添加环境变量:
services:
  api:
    environment:
      # 既存の環境変数...
      STRAVA_CLIENT_ID: "your_client_id"
      STRAVA_CLIENT_SECRET: "your_client_secret"
      STRAVA_REFRESH_TOKEN: "your_refresh_token"
  1. MCP 将服务器注册为自定义工具:
{
  "tool_name": "strava_mcp",
  "command": "npx -y @keitaro_aigc/strava-mcp-server",
  "type": "mcp"
}
  1. Docker 重新启动容器:
docker-compose down
docker-compose up -d

对于云版本

  1. Dify 打开工作区设置

  2. 转到“自定义工具”部分

  3. 新的MCP 添加工具并设置端点信息

注意:在云版中MCP 服务器可能需要单独托管。

步骤2-E: ChatGPT(开发模式)中的设置

ChatGPT 在的开发模式中使用:

前提条件

  • ChatGPT Plus 或Enterprise 账户
  • 定制GPT 创建权限

设定手顺

  1. ChatGPT 在中选择GPTs→创建a GPT

  2. 「Configure」在工作空间的边缘Actions 添加

  3. MCP 打开服务器API 作为端点托管(例如:Vercel、AWS Lambda 的下界

  4. OpenAPI 定义架构:

openapi: 3.0.0
info:
  title: Strava MCP Server
  version: 1.0.0
servers:
  - url: https://your-deployment-url.com
paths:
  /get_activities:
    post:
      summary: Get athlete activities
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                page:
                  type: integer
                per_page:
                  type: integer
      responses:
        '200':
          description: Success
  /get_activity:
    post:
      summary: Get specific activity
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                activity_id:
                  type: integer
              required:
                - activity_id
      responses:
        '200':
          description: Success
  1. 单击功能区上Actions 的设置中添加

注意: ChatGPT 中所述的工具,调整墙的布局和几何形状MCP 服务器HTTP 我需要一个喇叭。直接的STDIO 不支持连接。

步骤3:动作确认

每个客户机都可以问:

克劳德桌面/光标/手动

最近のアクティビティを5件教えて

迪菲

在工作流中Strava MCP 调用工具,指定参数后运行。

ChatGPT

定制GPT 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。

Strava的数据显示的话,设置就完成了!🎉

故障排除

エラー:“刷新访问令牌失败”

  • Client ID、Client Secret、Refresh Token确认是否正确
  • Strava确认应用程序的状态是否为“活动”

未显示工具

  • Claude Desktop完全重新启动(退出菜单并重新启动)
  • 在动态输入提示中单击JSON确认格式是否正确(逗号位置、闭合括号等)

"command not found" 错误

  • Node.js 18确认是否安装了以上内容:node -v
  • npm确认是否正确安装:npm -v

使用本地开发构建

npm从源代码构建而不是通过:

1.克隆和构建存储库

git clone https://github.com/groundcobra009/strava-mcp-server.git
cd strava-mcp-server
npm install
npm run build

2. Claude Desktop配置(本地构建版)

macOS

{
  "mcpServers": {
    "strava": {
      "command": "node",
      "args": ["/Users/keitaro/🏀|TRAE/20251028strava-mcp/dist/index.js"],
      "env": {
        "STRAVA_CLIENT_ID": "your_client_id",
        "STRAVA_CLIENT_SECRET": "your_client_secret",
        "STRAVA_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}

Windows(本地版本)

{
  "mcpServers": {
    "strava": {
      "command": "node",
      "args": ["C:\\path\\to\\strava-mcp-server\\dist\\index.js"],
      "env": {
        "STRAVA_CLIENT_ID": "your_client_id",
        "STRAVA_CLIENT_SECRET": "your_client_secret",
        "STRAVA_REFRESH_TOKEN": "your_refresh_token"
      }
    }
  }
}

注意: C:\\path\\to\\strava-mcp-server\\的部分替换为实际克隆的目录路径。

3.环境变量的设置(用于本地开发)

在本地开发中.env也可以使用文件:

cp .env.example .env
# .envファイルを編集して認証情報を設定

npm发布程序(面向开发人员)

将此软件包npm发布到:

1. npm创建和登录帐户

# npmアカウントがない場合は作成
npm adduser

# すでにアカウントがある場合はログイン
npm login

2. package.json确认的设置

  • name:包名称(如果有作用域) @username/package-name)
  • version:版本号(语义版本化)
  • repository: GitHub仓库URL
  • author:作者情报

3.构建和测试

# ビルド
npm run build

# パッケージ内容を確認
npm pack --dry-run

4. npm公开

# スコープ付きパッケージの場合は公開アクセスを設定
npm publish --access public

# 通常のパッケージの場合
npm publish

5.版本更新(下一次以后)

# パッチバージョンアップ(1.0.0 -> 1.0.1)
npm version patch

# マイナーバージョンアップ(1.0.0 -> 1.1.0)
npm version minor

# メジャーバージョンアップ(1.0.0 -> 2.0.0)
npm version major

# 再公開
npm publish --access public

注意事项

  • package.json的,之name自己的npm请使用用户名进行作用域化(例如:@yourusername/strava-mcp-server)
  • repository的,之URL实际的GitHub仓库URL重新启动交互渲染
  • 无法删除已发布的版本(仅在24小时内可用)
  • .npmignore中排除了源代码和不需要的文件

使用例

基本用法

Claude Desktop或者其他MCP在对应的客户机中,用以下自然的对话Strava可访问数据:

示例1:检查最近的活动

あなた: 「最近のランニング記録を10件見せて」

Claude: get_activitiesツールを使用して、最近のアクティビティ10件を取得します...
        
        1. 朝ラン - 5.2km, 26分15秒, 平均ペース 5:03/km
        2. 夜ラン - 10.5km, 52分30秒, 平均ペース 5:00/km
        ...

示例2:详细分析特定活动

あなた: 「昨日のランニング(ID: 12345678)の詳細を教えて」

Claude: get_activityツールで詳細を取得します...
        
        アクティビティ: モーニングラン
        距離: 10.5km
        タイム: 52分30秒
        平均ペース: 5:00/km
        獲得標高: 85m
        平均心拍数: 152bpm
        最大心拍数: 172bpm

示例3:确认统计信息

あなた: 「今月の走行距離の合計は?」

Claude: get_athlete_statsツールで統計情報を取得します...
        
        今年の累計:
        - 総距離: 245.8km
        - 総時間: 20時間35分
        - アクティビティ数: 28回
        
        最近4週間:
        - 総距離: 82.3km
        - 総時間: 6時間52分

示例4:确认简档信息

あなた: 「私のStravaプロフィールを見せて」

Claude: get_athleteツールでプロフィール情報を取得します...
        
        名前: Taro Yamada
        所在地: Tokyo, Japan
        体重: 65kg
        登録日: 2020年1月15日

应用方法

数据分析

あなた: 「先月と今月のランニング距離を比較して、改善点を教えて」

Claude: 統計データを取得して分析します...

培训计划

あなた: 「最近のペースの傾向から、来週のトレーニングメニューを提案して」

Claude: アクティビティデータを分析してトレーニングプランを提案します...

动机管理

あなた: 「今年の目標1000kmに対して、現在の進捗率と達成見込みは?」

Claude: 累計統計から進捗を計算します...

开发人员信息

本地开发

在开发模式(监视模式)下编辑代码时:

# ウォッチモードで自動ビルド
npm run dev

# 別ターミナルでテスト実行
node dist/index.js

项目结构

.
├── src/
│   └── index.ts          # メインのMCPサーバー実装
├── dist/                  # TypeScriptビルド出力(自動生成)
├── package.json          # npmパッケージ設定
├── tsconfig.json         # TypeScript設定
├── .env.example          # 環境変数テンプレート
├── .gitignore           # Git除外ファイル
├── .npmignore           # npm公開除外ファイル
├── LICENSE              # MITライセンス
└── README.md            # ドキュメント

使用技术

  • TypeScript 5.3+:型安全代码
  • MCP SDK 0.5+: Model Context Protocol公式SDK
  • 阿西奥斯: HTTP请求库
  • Dotenv。:环境变数管理
  • Node.js 18+:実行环境

貪献

欢迎普鲁特和伊修的报告!

  1. 将显示Fork
  2. 创建新分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add amazing feature')
  4. 分公司Push (git push origin feature/amazing-feature)
  5. Pull Request创建

链接

  • npm包装: https://www.npmjs.com/package/@keitaro-aigc/strava mcp服务器
  • GitHub仓库: https://github.com/groundcobra009/strava-mcp-server
  • Strava API文档: https://developers.strava.com/
  • MCP正式文档: https://modelcontextprotocol.io/

许可证

麻省理工学院