Strava Mcp Unofficial について
Strava Mcp Unofficialは、トレーニングや持久系活動を振り返る人向けの、MCP対応クライアント用ローカル優先Stravaデータサーバーです。GPSを既定で隠すプライバシーモードを備え、トークンと任意のSQLiteキャッシュをローカルに保存します。
主な機能
- 01アクティビティ、セグメント、ルートの取得
- 02心拍数やパワーなどのストリーム取得
- 03日次・週次トレーニング概要の生成
- 04GPSデータの既定非表示
- 05ローカルOAuthとSQLiteキャッシュ
活用シーン
- 01最近の活動と週ごとのトレーニング負荷の確認
- 02活動の心拍数、パワー、ケイデンスの調査
- 03明示的に有効化した後のGPS軌跡の確認
- 04AIエージェント接続前のStrava設定確認
MCP 対応
MCPクライアントに、Stravaのアクティビティ、ストリーム、アスリート情報、セグメント、ルート用のツール、プロンプト、リソースを公開します。既定のstdioに加え、ループバック限定のStreamable HTTPにも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y strava-mcp-unofficialSTRAVA_CLIENT_IDStrava OAuth client ID. Optional when configured with strava-mcp-server setup.STRAVA_CLIENT_SECRETシークレットStrava OAuth client secret. Prefer strava-mcp-server setup so this secret is stored in ~/.strava-mcp/config.json instead of MCP client config.STRAVA_REDIRECT_URIRedirect URI configured in the Strava Developer Dashboard. Optional when configured with strava-mcp-server setup.STRAVA_TOKEN_PATHシークレットOptional local path for OAuth tokens. Defaults to ~/.strava-mcp/tokens.json.STRAVA_PRIVACY_MODEOptional payload mode: summary, structured, or raw. Defaults to structured. raw means full Strava API payloads, not continuous 24/7 raw sensor telemetry.STRAVA_CACHEOptional SQLite cache toggle. Set to true or sqlite to enable.STRAVA_CACHE_PATHOptional local SQLite cache path. Defaults to ~/.strava-mcp/cache.sqlite.STRAVA_NO_CACHESet to true to bypass the in-memory HTTP response cache (60s TTL for GET only). POST/PUT/DELETE and 4xx/5xx responses are never cached regardless.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
29掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| response_format | enum | いいえ | markdown | json |
詳細
Strava MCP
Strava のアクティビティ、ストリーム、セグメント、ルートを AI エージェントに提供します — ローカルで。
ローカルファーストの MCP サーバー — トークンがマシンの外に出ることはありません。
⚡ Delx Wellness for Hermes を使えば、ワンコマンドでインストールできます:
npx -y delx-wellness-hermes setup— このコネクターとほかの8つを、専用の Hermes プロファイルに事前設定します。または、Claude Desktop/Cursor/ChatGPT Desktop に単独で組み込むこともできます — 詳しくは以下のインストールセクションをご覧ください。
HTTP(v2 ステートレス)
デフォルトは stdio です。オプションで Streamable HTTP を使用できます — セッション ID なし、JSON レスポンス、ループバックのみ:
npx -y strava-mcp-unofficial --http
# GET http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp (sessionless)
環境変数:STRAVA_MCP_HOST、STRAVA_MCP_PORT、STRAVA_MCP_TRANSPORT=http。
AI エージェントを Strava のアクティビティ、ルート、ストリーム、トレーニングのコンテキストに接続する、ローカルファーストの MCP サーバーです。
非公式プロジェクトです。 Strava, Inc. との提携、同社による承認またはサポートはありません。Strava はそれぞれの所有者の商標です。ご自身の Strava アカウントでのみ使用し、Strava の API 契約に従ってください。
David Mosiah が、Strava の数値をコピー&ペーストすることなく、Claude、Cursor、Hermes、OpenClaw、その他の MCP 互換エージェントを使ってトレーニング、持久力、パフォーマンスについて考える人々のために開発しました。
ローカルファーストのウェルネス MCP コネクターのレジストリ、Delx Wellness の一部です。
このコネクターがエージェントのワークフローに役立つ場合は、ぜひリポジトリにスターを付けてください。スターが増えると、ほかの AI 開発者がこのプロジェクトを見つけやすくなり、Delx がローカルファーストのウェルネス基盤を提供し続ける助けになります。
このパッケージの目的
Strava には、すべてのライド、ラン、スイム、セグメント、ルート、ストリームなど、トレーニングの長期的な記録が保存されています。しかし、そのデータは厳しいレート制限(アプリごとに200 req/15min、2k/day)が設けられたOAuth APIの背後にあり、GPSデータはデフォルトでプライバシーに配慮した扱いが必要です。
このパッケージは、OAuthの認証フローをローカルで処理し、Stravaのアプリごとの制限に合わせてリクエストを制御します。明示的に許可しない限りGPSの緯度・経度を秘匿し、Model Context Protocolを通じてStravaを公開します。MCP互換のエージェントなら、設定を一箇所追加するだけでトレーニングのコンテキストを利用できます。トークンがマシンの外に出ることはありません。
クイックスタート
最初のエージェント呼び出しまで、所要時間は約1分です。必要なのは、リダイレクトURIをhttp://127.0.0.1:3000/callbackに設定したStravaアプリ(こちらで作成)だけです。
1. アプリのクライアントIDとシークレットを貼り付けます(対話形式で入力し、~/.strava-mcp/config.jsonに0600で保存します):
npx -y strava-mcp-unofficial setup
2. Stravaを認証します。 authを実行するとブラウザーが開きます。--no-openを指定するとURLが表示されるので、自分で貼り付けられます(ヘッドレス環境で便利です)。トークンはローカルに保存され、コマンドから表示されることはありません:
$ npx -y strava-mcp-unofficial auth --no-open
Strava MCP · Authorization
Open this URL manually:
https://www.strava.com/oauth/authorize?client_id=12345&redirect_uri=http%3A%2F%2F127.0.0.1%3A3000%2Fcallback&response_type=code&approval_prompt=auto&scope=read%2Cactivity%3Aread_all%2Cprofile%3Aread_all&state=aa38f29b
Steps
1. Approve access in the browser tab that opens.
2. Strava will redirect to the local callback.
3. Tokens are saved locally; this command never prints them.
Waiting for callback...
3. 準備ができていることを確認します — doctorはStravaに問い合わせずに、スコープと設定を確認します:
$ npx -y strava-mcp-unofficial doctor
Strava MCP · Doctor
Status: READY ✓
Checks
✓ Node.js >=20
✓ Env vars
✓ Local config
✓ Automatic auth redirect
✓ Token file
✓ Token permissions
✓ Refresh token
✓ OAuth scopes
· Privacy mode
· Cache
Next steps
1. Ready. Add this MCP server to your agent and start with strava_daily_summary.
OAuth scopesに✗が表示される場合は、authを再実行し、activity:read_all profile:read_all readを許可してください。
4. 最初の呼び出しを行います — 実際のアカウントは不要です。 エージェントにstrava_demoを実行するよう依頼してください。リアルな合成ペイロード(is_demo: trueタグ付き)が返されるので、実際のデータに接続する前にプロンプトを組み込めます:
> Call strava_demo and summarize my week.
# Strava Demo
- **is_demo**: true
- **recent_sessions**: 3
- **load_classification**: moderate
- **primary_signal**: Recent Strava load is manageable; use intent and consistency as the main lever.
- **recommended_handoff**: exercise_catalog_recommend_session
完全な形で取得するには、response_format: "json"を指定して呼び出します。sampleブロックは、strava_daily_summary、strava_training_context、strava_list_activitiesの各キーをそのまま再現しています — npm run test:demo-contractはfixtures/strava-activities.mjsに対して実際のビルダーを実行し、デモに存在しないフィールドが追加されたり、フィールドが欠落したりするとビルドを失敗させます。strava_demoを実際のツールに置き換えると、同じ形でStravaのデータが入力されます。
5. MCPクライアントに組み込みます:
{
"mcpServers": {
"strava": {
"command": "npx",
"args": ["-y", "strava-mcp-unofficial"]
}
}
}
Claude Desktopでは、setup --client claudeを実行すると設定が自動で書き込まれます。Hermesについては、以下のHermes / リモート設定を参照してください。
エージェントで試す
まずは次の3つを尋ねてみてください:
Use strava_connection_status to check setup, then run strava_daily_summary.
Tell me what my training context looks like in 5 lines.
Call strava_weekly_summary with response_format=json. Find my biggest
load/intensity bottleneck and give me a next-week endurance plan.
Use the strava_activity_stream_investigator prompt for activity_id=<id>.
Don't expose GPS unless I explicitly ask for it.
データの利用可否
このパッケージは公式のStrava API v3を使用します。このREADMEでrawという場合、対応エンドポイントのStravaから返されるJSONを指し、デバイスの連続的なテレメトリを意味するものではありません。
| データ | 利用可否 | 備考 |
|---|---|---|
| アクティビティ(ラン、ライド、スイム、ウォーク、ワークアウト) | ✓ | 記録されたすべてのアクティビティ |
| アクティビティの詳細、ゾーン、スプリット | ✓ | 心拍数、パワー、ケイデンス、標高、ギア |
| アクティビティのストリーム(心拍数 / ケイデンス / ワット数 / 高度) | ✓ | アクティビティごとの毎秒のサンプル |
| GPSの緯度・経度のストリーム | オプトイン | デフォルトでは非表示。include_gps=trueまたはrawモードが必要 |
| アスリートのプロフィール、ゾーン、集計統計 | ✓ | 認証済みアスリート |
| ルート、クラブ、ギア | ✓ | サマリー/構造化モードではルートの形状情報を秘匿 |
| ライブのデバイステレメトリ/連続的な心拍数 | — | Stravaの公開APIでは公開されていません |
ツール
まずはこちらから:
strava_connection_status— Strava を呼び出す前に、ローカルの設定、スコープ、準備状況を確認しますstrava_data_inventory— Strava API を呼び出さずに、サポートされているデータ領域、スコープ、プライバシーモード、おすすめの最初の呼び出しを一覧表示します。strava_daily_summary— 今日の最新アクティビティ、週間負荷、強度の状況strava_weekly_summary— スコアカード、前週との比較、翌週のトレーニング計画
認証と診断
strava_capabilities、strava_agent_manifest、strava_privacy_audit、strava_cache_statusstrava_get_auth_url、strava_exchange_code、strava_revoke_access
アスリートとトレーニング
strava_get_athlete、strava_get_zones、strava_get_athlete_stats
アクティビティとストリーム
strava_list_activities、strava_get_activity、strava_get_activity_zonesstrava_activity_series、strava_get_activity_streams— GPS の緯度/経度を取得するには、include_gps=trueまたはrawモードが必要です
ルートとコンテキスト
strava_list_routes、strava_get_route、strava_list_clubs、strava_get_gear
プロンプト
strava_daily_training_director— 実用的な毎日のトレーニング概要strava_weekly_endurance_review— 週ごとの比較と翌週の持久力トレーニング計画strava_activity_stream_investigator— ストリームを使って特定のアクティビティを調査します(GPS 対応)
それぞれ timezone(IANA、デフォルトは UTC)を指定できます。
リソース
strava://capabilities、strava://agent-manifeststrava://athletestrava://latest/activitystrava://summary/daily、strava://summary/weekly
プライバシーとセキュリティ
- OAuth トークンは
~/.strava-mcp/tokens.jsonに0600の権限で保存され、ツールから返されることはありません。 - 書き込み/アップロードのスコープはデフォルトでは要求されません。設計上、読み取り専用です。
summaryおよびstructuredモードでは GPS の緯度/経度とルートのジオメトリが再帰的に削除されます。ストリームの呼び出しでinclude_gps=trueを明示するか、rawモードを指定した場合にのみ含まれます。structuredモードでは、それ以外の上流の生理学的記録全体と、将来追加される Strava のフィールドが保持されます。- アクティビティの
after/beforeフィルターは、タイムゾーン付きの ISO 日時から Strava のエポック秒に変換する際も瞬時点としての意味を保持します。無効な範囲は HTTP 呼び出しの前にエラーになります。 rawモードが明示的に要求されない限り、ルートのジオメトリも非表示になります。- MCP クライアントがアクセストークンやリフレッシュトークンを参照することはありません。
- これは医療上の助言ではありません。このサーバーは、診断やトレーニング処方ではなく、個人向け AI ワークフローのために、ユーザーが許可したデータを提供します。
設定
setup を実行すると、これらの大半が ~/.strava-mcp/config.json(0600)に書き込まれます。環境変数による手動の上書きにも対応しています。
STRAVA_CLIENT_ID=…
STRAVA_CLIENT_SECRET=…
STRAVA_REDIRECT_URI=http://127.0.0.1:3000/callback
# Optional
STRAVA_SCOPES="read activity:read_all profile:read_all"
STRAVA_PRIVACY_MODE=structured # summary | structured | raw
STRAVA_CACHE=sqlite # optional read-through cache
Hermes/リモート設定
npx -y strava-mcp-unofficial setup --client hermes --no-auth
npx -y strava-mcp-unofficial auth # run locally if browser auth is needed
npx -y strava-mcp-unofficial doctor --client hermes
hermes mcp test strava
Hermes では通常、Strava ツールに次のプレフィックスが付けられます。
mcp_strava_strava_agent_manifestmcp_strava_strava_connection_statusmcp_strava_strava_daily_summarymcp_strava_strava_weekly_summarymcp_strava_strava_get_activity_streams
Hermes の設定変更後は、/reload-mcp または hermes mcp test strava を使用してください。通常のデータアクセスでは、ゲートウェイを再起動する必要はありません。
ブラウザー OAuth を Hermes とは別のマシンで行う必要がある場合は、ローカルで auth を実行し、~/.strava-mcp/tokens.json を chmod 600 でサーバーにコピーしてください。アクティビティ履歴とストリームを利用するには、トークンに activity:read_all profile:read_all read が含まれている必要があります。
要件
- Node.js 20+
- リダイレクト URI
http://127.0.0.1:3000/callbackが設定された Strava アプリ
これらのスコープが必要な理由:
read— 公開プロフィール、ルート、公開 Strava リソースactivity:read_all— アプリから参照できる非公開アクティビティを含む、あなたのアクティビティprofile:read_all— 認証済みアスリートのより詳細なプロフィールフィールド
書き込みスコープはデフォルトでは要求されません。
開発
git clone https://github.com/davidmosiah/strava-mcp.git
cd strava-mcp
npm install
npm test
npm run build
MCP Inspector でテストします:
npx @modelcontextprotocol/inspector node dist/index.js
リンク
- npm: https://www.npmjs.com/package/strava-mcp-unofficial
- ドキュメントサイト: https://wellness.delx.ai/connectors/strava
- 旧ドキュメント: https://stravamcp.vercel.app/
- GitHub Pages ミラー: https://davidmosiah.github.io/strava-mcp/
- Delx Wellness レジストリ: https://github.com/davidmosiah/delx-wellness
- コネクター品質基準: https://github.com/davidmosiah/delx-wellness/blob/main/docs/connector-quality-standard.md
- Strava API ドキュメント: https://developers.strava.com/docs/reference/
- Strava 認証ドキュメント: https://developers.strava.com/docs/authentication/
関連項目
Delx Wellness のコネクターライブラリ全体:
| プロバイダー | パッケージ | リポジトリ |
|---|---|---|
| WHOOP | whoop-mcp-unofficial | whoop-mcp |
| Oura | oura-mcp-unofficial | ouramcp |
| Garmin | garmin-mcp-unofficial | garminmcp |
| Strava | strava-mcp-unofficial | strava-mcp |
| Fitbit | fitbit-mcp-unofficial | fitbitmcp |
| Withings | withings-mcp-unofficial | withingsmcp |
| Apple Health | apple-health-mcp-unofficial | apple-health-mcp |
| Polar | polar-mcp-unofficial | polarmcp |
| Nourish(栄養) | wellness-nourish | wellness-nourish |
Hermes のワンコマンドセットアップ — 上記のすべてのコネクターに加え、ウェルネススキルとオンボーディングを事前設定します:delx-wellness-hermes。
📧 お問い合わせとサポート
- 📨 [email protected] — 一般的な質問、インテグレーションのサポート、パートナーシップ
- 🐛 バグ報告/機能リクエスト — GitHub Issues
- 🐦 最新情報 — X の @delx369
- 🌐 サイト — wellness.delx.ai
ライセンス
MIT — LICENSE を参照してください。
免責事項
このソフトウェアは現状有姿で提供されます。医療機器ではなく、医療上の助言を提供するものでもありません。また、診断、治療、トレーニングの処方に使用しないでください。医療やトレーニングに関する懸念がある場合は、必ず資格を持つ専門家に相談してください。
スキルまたは MCP
同じパッケージに、2つの使い方があります。MCP は stdio/HTTP でツールを登録します。スキルを使うと、クライアントに MCP がない場合でも、CLI 経由で同じツールを操作できます:
npx -y strava-mcp-unofficial call strava_connection_status --json '{}'
skill/SKILL.md をエージェントのスキルディレクトリにコピーしてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。