mcpField
S
Strava

Strava

ローカル
github.com/eddmannヘルスケア923 週間前に更新

Strava について

Strava のアクティビティ、アスリート、セグメント、ルートのデータ取得とトレーニング分析を行う MCP サーバーです。LLM クライアントで記録を確認したい Strava ユーザー向けで、ローカルの単一ユーザー用と HTTP の複数ユーザー用モードを備えています。

主な機能

  1. 01アクティビティの検索と分析
  2. 02アスリート統計とトレーニングゾーンの参照
  3. 03セグメントとリーダーボードの確認
  4. 04ルートの一覧表示とエクスポート
  5. 05ワークアウトの比較と類似検索
  6. 06アスリートリソースとプロンプトの提供

活用シーン

  1. 01最近のランとトレーニング指標の確認
  2. 02アクティビティの比較や類似ワークアウトの検索
  3. 03セグメント履歴とリーダーボードの確認
  4. 04Strava ルートの GPX または TCX 形式でのエクスポート

MCP 対応

アクティビティ、アスリート情報、セグメント、ルート、分析を扱う 11 個のツールに加え、アスリートプロフィールのリソースと 6 個のプロンプトテンプレートを提供します。stdio の単一アカウント運用と、ユーザーごとのセッションを持つ HTTP モードに対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"strava-mcp-eddmann": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/eddmann/strava-mcp:latest"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/eddmann/strava-mcp:latest

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/eddmann/strava-mcp:latest

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Strava MCP サーバー

Strava MCP サーバー

Strava と連携するための Model Context Protocol(MCP)サーバーです。Claude、ChatGPT、その他の LLM を通じて、アクティビティ、アスリートの統計情報、セグメント、ルートにアクセスできます。

Python 3.11+ PyPI Docker

概要

この MCP サーバーは、Strava アカウントと連携する 11 個のツールを、5 つのカテゴリに分けて提供します。

  • アクティビティ(2 個のツール) - Strava のアクティビティを検索、分析します
  • アスリート(1 個のツール) - プロフィール、統計情報、トレーニングゾーンにアクセスします
  • セグメント(3 個のツール) - セグメントの努力を調べ、追跡します
  • ルート(2 個のツール) - ルートを管理、エクスポートします
  • 分析(3 個のツール) - トレーニングの分析情報、比較、類似検索を提供します

さらに、このサーバーは次のものを提供します。

  • MCP リソース 1 個 - 継続的なコンテキストとして、統計情報とゾーンを含むアスリートのプロフィールを提供します
  • MCP プロンプト 6 個 - よくある問い合わせ用のテンプレート(トレーニング分析、セグメントのパフォーマンス、アクティビティ分析、ランニングの比較、トレーニングの概要、レースのパフォーマンス)

デプロイオプション:

  • Stdio モード:単一ユーザー向けのローカルデプロイ(例:Claude Desktop、Cursor)
  • HTTP モード:複数ユーザー向けのデプロイ(例:ChatGPT、リモート MCP デプロイ)

前提条件

  • uv(パッケージには Python 3.11 以降が必要です。Python の管理には uv を使用できます)、または
  • Docker

Strava API アプリケーションのセットアップ

インストールの前に、Strava API アプリケーションを作成する必要があります。

  1. https://www.strava.com/settings/api にアクセスします
  2. 次の設定で新しいアプリケーションを作成します。
    • アプリケーション名:任意の名前(例:My Strava MCP)
    • カテゴリ:任意のカテゴリ(例:Data Importer)
    • クラブ:空欄のままにします(任意)
    • Web サイト:任意の値を指定できます(例:http://localhost)
    • 認証コールバックドメイン:localhost を指定する必要があります
  3. 作成後、クライアント ID とクライアントシークレットを控えます
  4. 以下のセットアップ手順で、これらの認証情報を使用します

インストールとセットアップ

認証の仕組み
Stdio モード(単一ユーザー、事前設定)
  1. OAuth フロー - ブラウザーを使用して一度だけ認証します
  2. トークンの保存 - OAuth トークンは、デフォルトで ~/.strava-mcp.env に保存されます。ローカルに .env ファイルがある場合は、そちらに保存されます
  3. 自動更新 - トークンの有効期限が切れると、自動的に更新されます
  4. 永続化 - 次回以降の実行では、保存済みのトークンを再利用します
HTTP モード(複数ユーザー、オンデマンド)
  1. OAuth フロー - 初回接続時にユーザーごとに認証します(MCP OAuth → Strava OAuth)
  2. トークンの保存 - OAuth トークンはセッションストア(インメモリまたは DynamoDB)に保存されます
  3. 自動更新 - セッションごとにトークンが自動的に更新されます
  4. 永続化 - セッションは 12 時間後に有効期限が切れます(設定可能)
オプション 1:uvx を使用する
uvx mcp-strava auth

この対話型ウィザードで、stdio または http トランスポートモードの認証設定を行えます。デフォルトでは、設定は ~/.strava-mcp.env に書き込まれます。

ソースをチェックアウトして開発する場合は、以下の「ローカルソースを使用する」を参照してください。

stdio を手動で設定する場合は、Strava OAuth アプリの認証情報とトークンを記載した ~/.strava-mcp.env を作成してください。

オプション 2:Docker を使用する
# Pull the image
docker pull ghcr.io/eddmann/strava-mcp:latest

次に、認証情報を設定します。

# Create the env file first (Docker will create it as a directory if it doesn't exist)
touch strava-mcp.env

# Run the setup script
docker run -it --rm \
  -v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
  ghcr.io/eddmann/strava-mcp:latest \
  auth

この対話型ウィザードで、stdio または http トランスポートモードの認証設定を行えます。

必要な OAuth スコープ

認証プロセスでは、次のスコープが要求されます。

  • profile:read_all - アスリートのプロフィールとゾーンを読み取ります
  • activity:read_all - すべてのアクティビティデータを読み取ります
  • activity:read - アクティビティの概要を読み取ります
  • profile:write - セグメントにスターを付ける、または解除します

トランスポートモード

このサーバーは、--transport フラグで選択できる 2 つのトランスポートモードをサポートしています(デフォルトは stdio で、フラグは不要です)。

Stdio モード(デフォルト)

標準入出力を使用して、事前設定済みの単一の Strava アカウントと通信します。

  • 認証:~/.strava-mcp.env またはローカルの .env ファイルに事前設定された OAuth トークンを使用します
  • ユーザー:デプロイごとに 1 人のユーザー
  • セットアップ:strava-mcp auth を実行して、一度だけ認証します
  • トークンの保存先:デフォルトでは ~/.strava-mcp.env。開発および Docker ではローカルの .env による上書きも可能です
HTTP モード(Streamable HTTP)

ユーザーごとの OAuth フローを使用する HTTP トランスポートです。

  • 認証:ユーザーごとの OAuth フロー(MCP OAuth → Strava OAuth)
  • ユーザー:個別のセッションによる複数ユーザーのサポート
  • セットアップ:環境変数による設定
  • トークンの保存先:メモリ内、または DynamoDB のセッションストア

Claude Desktop の設定

設定ファイルに追加します。

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
uvx を使用する場合

uvx mcp-strava auth を実行した後、公開済みパッケージを起動するよう Claude Desktop を設定します。

{
  "mcpServers": {
    "strava": {
      "command": "uvx",
      "args": ["mcp-strava"]
    }
  }
}
ローカルソースを使用する場合

開発時は、ローカルのチェックアウトから実行します。

cd strava-mcp
make deps
uv run strava-mcp auth
{
  "mcpServers": {
    "strava": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/ABSOLUTE/PATH/TO/strava-mcp",
        "strava-mcp",
        "--transport",
        "stdio"
      ]
    }
  }
}
Docker を使用する場合
{
  "mcpServers": {
    "strava": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env",
        "ghcr.io/eddmann/strava-mcp:latest",
        "--transport",
        "stdio"
      ]
    }
  }
}

ChatGPT との連携と HTTP モード

HTTP モードでの実行

リモートデプロイ用に、サーバーを HTTP モードで起動します。

# Using uvx
uvx --from "mcp-strava[http]" mcp-strava --transport http

# Using local source
cd /ABSOLUTE/PATH/TO/strava-mcp
make deps
uv run strava-mcp --transport http

# Using Docker
docker run -p 8000:8000 --rm \
  -v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
  ghcr.io/eddmann/strava-mcp:latest \
  --transport http

環境変数は、uvx mcp-strava auth を使用して設定するか、ローカルのチェックアウトまたは Docker イメージから strava-mcp auth を実行して設定できます。

ngrok を使用したローカル開発

ChatGPT との連携をローカルでテストするには:

  1. サーバーを HTTP モードで起動します:

    uv run strava-mcp --transport http
    
  2. 別のターミナルで、ngrok 経由で公開します:

    ngrok http 8000
    
  3. 環境を更新します:STRAVA_MCP_BASE_URL に ngrok の URL を設定します:

    export STRAVA_MCP_BASE_URL=https://abc123.ngrok.io
    

    または、.env ファイルに追加します:

    STRAVA_MCP_BASE_URL=https://abc123.ngrok.io
    
  4. 新しいベース URL を反映するため、サーバーを再起動します。

  5. ChatGPT を設定します:MCP サーバーのエンドポイントとして、ngrok の URL(/mcp パスを含む)を使用します。

使用方法

自然言語で Claude に Strava のデータを操作するよう依頼します。サーバーは、使い始める際に役立つツール、リソース、プロンプトテンプレートを提供します。

MCP プロンプトですぐに使い始める

よく使われるクエリには、組み込みのプロンプトテンプレートを使用します(Claude のプロンプト候補から利用できます)。

  • analyze_recent_training - 過去 30 日間のトレーニングを分析する
  • segment_performance - 特定のセグメントでのパフォーマンスを分析する
  • activity_deep_dive - 特定のアクティビティを詳しく分析する
  • compare_recent_runs - 最近のランニングを比較して、進捗を確認する
  • training_summary - トレーニングの包括的な概要を表示する
  • race_performance_analysis - 特定の距離におけるレースのパフォーマンスを分析する
アクティビティ
"Show me my runs from the last 30 days"
"Get my last long run with lap splits and heart rate zones"
"Show me the comments and kudos on my half marathon race"
"Find all my marathon races from this year"
"Show me all 10km runs from the last 90 days"
アスリートのプロフィールと統計
"Show my athlete profile with year-to-date stats and training zones"

Note: アスリートのプロフィールリソース(strava://athlete/profile)は、継続的なコンテキストを自動的に提供します。

セグメント
"Show me the Box Hill segment with my effort history"
"Find running segments near Hyde Park"
"Show the leaderboard for my favorite climb segment"
ルート
"List my routes"
"Export my Richmond Park route to GPX"
トレーニング分析
"Analyze my training over the past 30 days"
"Analyze my marathon race performance this year"
"Compare my last three 10K runs"
"Find runs similar to my last tempo workout"
"Show me all my 5k races from the last year"

Note: リストを返すツールでは、デフォルトの上限(アクティビティ/セグメント/ルートは 10 件、リーダーボードは 50 件)で、カーソルベースのページネーションが使用されます。

利用可能なツール

アクティビティ(2 個のツール)
ツール説明
query_activitiesフィルタリング(距離、タイトル、レースのステータス)と、任意の追加データ(ラップ、ゾーン、ストリーム)を指定してアクティビティを検索します
get_activity_socialアクティビティへのコメントと応援を取得します
アスリート(1 個のツール)
ツール説明
get_athlete_profile任意の統計情報(最近、年初来、全期間)とトレーニングゾーンを含むアスリートのプロフィールを取得します
セグメント(3 個のツール)
ツール説明
query_segmentsセグメントを統合的に検索します(ID、スター付き、または地理的な範囲を指定した探索)
star_segmentセグメントにスターを付ける、またはスターを解除します
get_segment_leaderboardフィルタリングオプションを指定してセグメントのリーダーボードを取得します
ルート(2 個のツール)
ツール説明
query_routesルートの詳細を取得します(ID を指定した単一ルート、またはすべてのルートの一覧)
export_routeルートを GPX または TCX 形式でエクスポートします
分析(3 個のツール)
ツール説明
analyze_training期間を指定して、フィルタリング(距離、タイトル、レース状況)および集計指標を用いたトレーニング分析を行います
compare_activities2~5 件のアクティビティを並べて比較します
find_similar_activities進捗状況の追跡に役立つ事前フィルタリングオプションを指定して、参照アクティビティに類似したアクティビティを検索します

MCP リソース

リソースを利用すると、明示的なツール呼び出しを行わずに、LLM に継続的なコンテキストを提供できます。

リソース説明
strava://athlete/profile最近の統計、ゾーン、ギアを含むアスリートの完全なプロフィール

MCP プロンプト

一般的なクエリ用のプロンプトテンプレートです(Claude のプロンプト候補から利用できます)。

プロンプト説明
analyze_recent_training指定した期間の包括的なトレーニング分析
race_performance_analysis特定の距離におけるレースのパフォーマンスを分析します
segment_performanceセグメントの詳細なパフォーマンス分析
activity_deep_dive指標をすべて含む、特定のアクティビティの詳細な分析
compare_recent_runs最近のランを比較し、傾向や改善点を特定します
training_summary推奨事項を含む、包括的なトレーニングの概要

ライセンス

MIT ライセンスの詳細については、LICENSE ファイルをご覧ください。

免責事項

このプロジェクトは Strava, Inc. とは提携しておらず、同社による承認や後援も受けていません。すべての製品名、ロゴ、ブランドは、それぞれの所有者に帰属します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。