npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@keitaro_aigc/strava-mcp-server

v1.0.2

Published

MCP server for Strava API integration

Readme

Strava MCP Server

Strava APIとMCP(Model Context Protocol)を統合するサーバーです。

このMCPサーバーを使用することで、ClaudeなどのAIアシスタントから直接Stravaのアクティビティデータを取得・分析できます。ランニングやサイクリングの記録を会話形式で確認したり、統計情報を簡単に照会できます。

📦 対応クライアント

このMCPサーバーは以下のクライアントで使用できます:

  • Claude Desktop - Anthropic公式デスクトップアプリ
  • Cursor - AI統合コードエディタ
  • Manus - AIアシスタントプラットフォーム
  • Dify - ノーコード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 (オプション): 1ページあたりの件数(デフォルト: 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」または「My API Application」をクリック
  3. 以下の情報を入力:
    • Application Name: 任意の名前(例:「My MCP Server」)
    • Category: 適切なカテゴリを選択
    • Club: 空欄でOK
    • Website: 任意のURL(例:http://localhost
    • Authorization Callback Domain: localhost
    • Application Description: 任意の説明
  4. 利用規約に同意して「Create」をクリック

1.2 Client IDとClient Secretの確認

アプリケーションを作成すると、以下の情報が表示されます:

  • Client ID: 数字の羅列(例:123456)
  • Client Secret: 英数字の文字列(例: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にログインして「Authorize」をクリック

  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」が利用可能になっていることを確認

Windows
  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
  • Windows: %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 の開発モード(Actions/Functions)で使用する場合:

前提条件

  • ChatGPT Plus または Enterprise アカウント
  • カスタム GPT の作成権限

設定手順

  1. ChatGPT で「GPTs」→「Create 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: 動作確認

各クライアントで以下のように質問してみてください:

Claude Desktop / Cursor / Manus

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

Dify

ワークフロー内で Strava MCP ツールを呼び出し、パラメータを指定して実行。

ChatGPT

カスタム GPT 内でアクションが利用可能になっていることを確認。

Stravaのデータが表示されれば、セットアップ完了です!🎉

トラブルシューティング

エラー: "Failed to refresh access token"

  • Client ID、Client Secret、Refresh Tokenが正しいか確認
  • Stravaアプリケーションのステータスが「Active」になっているか確認

ツールが表示されない

  • 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.jsonnameを自分の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
  • Axios: 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-server
  • GitHubリポジトリ: https://github.com/groundcobra009/strava-mcp-server
  • Strava APIドキュメント: https://developers.strava.com/
  • MCP公式ドキュメント: https://modelcontextprotocol.io/

ライセンス

MIT