Strava MCP Bridge について
Strava MCP Bridgeは、CodexやOpenCodeなどのローカルstdio MCPクライアントをStrava公式MCPにつなぐブリッジです。Apple Silicon搭載Macで認証情報をKeychainに保存し、位置情報がAIのコンテキストに入るのを防ぎます。
主な機能
- 01Strava公式MCPへの接続
- 02Keychainでの認証情報保存と更新
- 03ツール呼び出しと位置情報のフィルタリング
- 04アクティビティの全ストリームをローカル保存
- 05Codex設定とスキルのインストール
活用シーン
- 01プロジェクトへの新しいライドの同期
- 02ライド間の心拍負荷の分析
- 03トレーニングダッシュボードやグラフの更新
MCP 対応
公式のリモートStreamable HTTP MCPを、クライアント向けのローカルstdio MCPサーバーに変換します。許可リストにあるツール呼び出しのみを転送し、応答から位置情報を除外します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
strava-mcp-bridge
独自の Strava 開発者アプリを作成せずに、Codex、OpenCode、その他のローカル stdio MCP クライアントから Strava の公式 MCP を利用できます。
このブリッジは Apple Silicon 搭載の macOS 上でローカルに動作します。OAuth 認証情報は macOS Keychain に保存され、大きなアクティビティストリームはローカルファイルに保持され、 GPS/位置情報データが AI コンテキストに入る前にブロックされます。

実現できること
接続すると、ローカルのコーディングエージェントは、コピーした要約や合成データではなく、 実際のプロジェクトのワークフローの一部として Strava データを利用できます。
You: Pull my new rides since the local watermark and rebuild my training dashboard.
Codex:
3 new rides found through the official Strava MCP
full activity streams saved locally, omitted from model context
training summary and fitness chart rebuilt
no GPS, location, or polyline fields returned to the conversation
その他のタスク例:
- 「今週のライドの心拍負荷を比較してください。」
- 「このアクティビティの位置情報以外のストリームを取得して、分析を更新してください。」
- 「最新のサイクリングデータを使って、このリポジトリの PMC/TRIMP ダッシュボードを更新してください。」
このブリッジは安全な Strava 接続を提供します。エージェントはその結果をローカルの スクリプト、ノートブック、ダッシュボード、トレーニング分析コードと組み合わせて利用できます。
このプロジェクトの目的
Strava は公式 MCP コネクターを公開していますが、 現在ドキュメントに記載されている初回の認証フローは Claude クライアントを対象としています。 Codex は MCP をサポートしていますが、現時点ではこの Strava OAuth の初期設定を直接完了できません。
strava-mcp-bridge はこの問題を解決します。
- Claude Code を通じて、公式 Strava MCP の認証を一度行います。
strava-mcp-bridge bootstrapを明示的に実行します。- ブリッジは認証済みの認証情報を独自の Keychain 項目に移行します。
- ローテーションするリフレッシュトークンの連鎖を維持し、許可された MCP
リクエストを
https://mcp.strava.com/mcpに転送します。 - 通常の Codex/OpenCode の利用では、以後 Claude Code を読み込んだり呼び出したりしません。
これは Strava REST API のラッパーではなく、認証情報を共有したり、ユーザー認証を回避したりするものでもありません。
適切な方法を選ぶ
| 方法 | 独自の Strava アプリを作成しますか? | 認証情報の保管先 | Strava インターフェース | 主なトレードオフ |
|---|---|---|---|---|
| Claude の公式コネクター | いいえ | 公式クライアント | Strava 公式 MCP | Claude がすでにワークフローに合っている場合、最も簡単です |
| コミュニティ製セルフホスト型 Strava MCP | 通常は必要 | ローカル | Strava REST API | 幅広いクライアントに対応しますが、アプリと OAuth の設定は自分で管理します |
| マネージドコネクター | 通常は不要 | サードパーティサービス | プロバイダー管理の API/MCP | 設定は簡単ですが、認証情報とアクティビティデータが別のサービスを経由します |
| strava-mcp-bridge | いいえ | ローカルの macOS Keychain | Strava 公式 MCP | Claude Code による初回設定が必要。Apple Silicon 搭載の macOS のみ |
マネージドコネクターの動作はプロバイダーによって異なります。フィットネスデータを接続する前に、 データの経路と利用規約を確認してください。
適している場合/適していない場合
次のすべてに当てはまる場合、このブリッジをお使いください。
- Codex、OpenCode、またはローカル stdio MCP サーバーを実行できる別のクライアントを使用している。
- 対象となる Strava サブスクリプションを通じて、Strava の公式 MCP を利用できる。
- Strava 開発者アプリを作成して管理することを望まない。
- 認証情報をローカルで保管し、慎重なデータ管理を優先したい。
- Apple Silicon 搭載の Mac を使用している。
次のいずれかに当てはまる場合は、別の方法をお選びください。
- Claude の公式コネクターで、すでにワークフローを満たせている。
- Strava 開発者アプリを作成してもよく、一般的な REST API 統合を希望している。
- データの正本が Garmin、Intervals.icu、Apple Health、または別のシステムである。
- Linux、Windows、または Intel Mac のサポートが必要である。
- 対象となる Strava サブスクリプションを利用していない。
要件
- Apple Silicon 搭載の macOS(
darwin arm64) - Node.js 22 以降
- Xcode Command Line Tools(
xcode-select --install) - 対象となる Strava サブスクリプション
- Claude Code で Strava 公式 MCP の認証を一度正常に完了していること
このブリッジの利用に、有料の Claude サブスクリプションは必要ありません。Ollama 経由で起動した Claude Code でも認証が検証されています。重要なのは Claude Code の OAuth クライアントであり、モデルのバックエンドではありません。
インストール
npm install -g strava-mcp-bridge
同梱の Codex スキルをユーザースコープに明示的にインストールします。
strava-mcp-bridge skill install
この操作で書き込まれるのは $HOME/.agents/skills/strava-mcp-bridge のみです。Codex や MCP の設定は編集されません。代わりに、スキルを 1 つのプロジェクト内に保持するには、次を実行します。
strava-mcp-bridge skill install --project-dir /absolute/path/to/project
インストール後に新しい Codex タスクを開始し、$strava-mcp-bridge を呼び出します。既存の異なるスキルの内容が上書きされることはありません。対象を確認したうえで --force を明示的に指定した場合を除きます。
1. Strava 公式 MCP の認証を一度完了する
Claude Code に公式エンドポイントを追加します。
claude mcp add --transport http strava https://mcp.strava.com/mcp
Claude Code 内で /mcp を実行し、strava を選択して、Strava のブラウザー認証を完了します。Claude Code が必要なのはこの手順のみです。
2. ローカルブリッジをセットアップする
strava-mcp-bridge bootstrap
bootstrap は次の処理を行います。
- 必要に応じてネイティブの Keychain ヘルパーをビルドします。
- 認証済みのリフレッシュトークンチェーンをインポートして取得します。
- ブリッジ専用の認証情報を macOS Keychain に保存します。
- プロジェクトスコープの Codex MCP 設定スニペットを出力します。
- トークン値は出力しません。
生成されたスニペットを対象プロジェクトの .codex/config.toml に追加し、Codex を再起動するか、新しいタスクを開始してから、アクティビティツールを有効にする前に health を呼び出します。
トレーニング同期の設定には、次を使用します。
strava-mcp-bridge config codex \
--profile training-sync \
--stream-output-dir /absolute/path/to/your/project/strava-streams
生成されるプロファイルでは、次のツールが利用できます。
healtheligibilitylist_activitiesget_activity_streamsget_activity_performance
同梱の Codex スキル は、doctor、bootstrap、プロジェクトレベルの設定、安全なエラー処理についてエージェントを案内します。ソースのチェックアウトでは、リポジトリスキルとして利用できます。skill install コマンドを使うと、他のプロジェクトからも見つけられるようになります。
仕組み
flowchart LR
C["Codex / OpenCode"] -->|"stdio MCP"| B["strava-mcp-bridge"]
B -->|"approved JSON-RPC + Bearer token"| S["Official Strava MCP"]
B -->|"read / rotate credential"| K["macOS Keychain"]
B -->|"full non-location streams"| F["Local 0600 files"]
B -. "GPS / location blocked" .-> X["AI context"]
このブリッジは、トランスポートアダプターであると同時に、ローカルのポリシー境界でもあります。
- リモートの Streamable HTTP MCP を、ローカルの stdio MCP サーバーとして提供します。
- ツール名が明示的に許可リストに含まれていない限り、
tools/callは拒否されます。 tools/listの結果は、ローカルの許可リストに合わせてフィルタリングされます。- アクセストークンは、デフォルトで固定された公式 MCP エンドポイントにのみ送信されます。
- OAuth の更新には、固定された Strava トークンエンドポイントと MCP リソースを使用します。
- 期限切れ後は MCP セッションを再初期化し、stdio の終了時に削除します。
プライバシーのデフォルト設定
位置情報
get_activity_streams では、ストリームのリストを明示的に指定する必要があります。指定できるストリームは次のとおりです。
time, heart_rate, velocity_smooth, cadence, altitude,
distance, temp, watts, grade_smooth, moving
位置情報、GPS、ポリラインに類するストリームは、転送前に拒否されます。その他の構造化されたツール応答については、一般的な位置情報キー、座標テキスト、座標配列、ポリライン、地図、トークンに類するフィールドを再帰的に秘匿します。不透明な非 JSON テキストと非テキストのコンテンツブロックは、フェイルクローズで処理されます。
大容量ストリーム
ストリーム配列全体が MCP クライアントのコンテキストに返されることはありません。現在のユーザーが所有するディレクトリ(0700)に、通常のファイルとしてアトミックに書き込み、モードを 0600 に設定します。ツールの結果に含まれるのは、パス、ストリーム名、ポイント数、および omitted_from_context=true のみです。
デフォルトの保存場所:
~/Library/Application Support/strava-mcp-bridge/streams/
保持データのクリーンアップは、--yes を指定しない限りドライランです。
strava-mcp-bridge streams prune --older-than-days 30
strava-mcp-bridge streams prune --older-than-days 30 --yes
管理策と残存リスクの詳細については、SECURITY.md および THREAT_MODEL.md を参照してください。
認証情報のライフサイクル
ブリッジが所有するキーチェーン項目は次のとおりです。
Strava MCP Bridge Native-credentials
明示的なインポートは、受動的なコピーではなく、認証情報の所有権の移行です。 Strava のリフレッシュトークンはローテーションされるため、ブリッジが所有する運用に切り替えると、Claude Code に以前コピーされたリフレッシュトークンが無効になることがあります。Claude Code で再び接続する必要が生じた場合は、後から再認証できます。
通常の MCP 起動時には、ブリッジが所有するキーチェーン項目のみを読み込みます。Claude Code からのインポートや、Claude Code の設定変更は行いません。
キーチェーンのアクセス許可ダイアログ
bootstrap の実行中、macOS では次の異なるプロンプトが 2 つ表示されることがあります。
/usr/bin/securityがClaude Code-credentialsを読み取る場合:常に許可 ではなく 許可 を選択してください。これは明示的な一度限りのインポートです。strava-keychain-helperがブリッジ所有の項目を読み取る場合:最小権限の選択肢は 許可 です。常に許可 を選ぶと、繰り返し表示されるプロンプトを回避できますが、文書化されている同一ユーザーのヘルパーリスクを受け入れることになります。
アップグレード後にヘルパーを再ビルドすると、新しいプロンプトが表示されることがあります。
便利なコマンド
| コマンド | 用途 |
|---|---|
strava-mcp-bridge doctor | プラットフォーム、ヘルパー、認証情報を読み取り専用で確認 |
strava-mcp-bridge bootstrap | ヘルパー、認証情報、設定スニペットをセットアップ |
strava-mcp-bridge auth status --json | 機密情報を含まない認証情報のメタデータを表示 |
strava-mcp-bridge skill install | 同梱の Codex スキルをユーザースコープにインストール |
strava-mcp-bridge skill install --project-dir <path> | 1 つのプロジェクトにインストール |
strava-mcp-bridge config codex --profile minimal | 最小限の Codex 設定を表示 |
strava-mcp-bridge config codex --profile training-sync | サイクリング同期用の設定を表示 |
strava-mcp-bridge streams prune --older-than-days 30 | ストリームの保持データ削除をプレビュー |
strava-mcp-bridge auth remove | ブリッジの認証情報削除をプレビュー |
strava-mcp-bridge auth remove --yes | ブリッジが所有する認証情報のみを削除 |
エンドポイント、タイムアウト、データディレクトリ、診断のオーバーライドオプションについては、strava-mcp-bridge --help を参照してください。
アクセス権の削除
strava-mcp-bridge auth remove # dry run
strava-mcp-bridge auth remove --yes # remove local bridge credential
この操作で Claude Code の認証情報が削除されることはありません。Strava 側でアクセス権を取り消すには、Strava の接続済みアプリの設定で接続を解除してください。
現在の状況
- 実験的な
0.1.x - Apple Silicon 搭載の macOS のみ
- REST API の再実装ではなく、公式の Strava MCP
- 最初の OAuth セットアップには、引き続き Claude Code が必要です
- 標準仕様のみに基づいた動的クライアント登録の方法は、現時点では確認されていません
- 公式 MCP Registry に
io.github.millerchou/strava-mcp-bridgeとして公開 - Strava は他のクライアントへの対応を予定していると述べています
この制限は LLM モデルや単純な User-Agent チェックではなく、OAuth クライアントの登録/トークンの発行時に発生します。一般的な RFC 7591 の登録試行は、分離されたテスト中に拒否されました。
開発
npm test
npm run build:keychain-helper
npm pack --dry-run
テストではローカルのモックを使用します。Strava への接続やキーチェーンの読み取りは行いません。
リリース担当者向けの手順は RELEASING.md に記載されています。
免責事項
これは非公式のコミュニティプロジェクトです。Strava、Anthropic、OpenAI、OpenCode のメンテナーとは提携しておらず、承認も受けていません。Strava は OAuth、MCP、サブスクリプション、またはクライアントサポートの動作をいつでも変更する可能性があります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。