
Strava MCP Serverでアクティビティーにアドバイスをもらおう
ども、大瀧です。最近趣味のロードバイクで多摩や埼玉西部のヒルクライムスポットに登りに行っています。
Stravaというランニングやサイクリングで有名なスマートフォンアプリに行程記録を貯めているのですが、StravaにはAPIがあり、LLMからAPIを呼び出すStrava MCP Serverがあることを知ったので、本ブログではStrava MCP ServerをClaude DesktopおよびClaude Codeでセットアップした様子をご紹介します。
Strava MCP Serverのセットアップ
- 動作確認環境: macOS 15.5(24F74)
- Node.js: バージョン v20.15.0
Strava MCP Serverの実装はGitHubでいくつか見かけるのですが、今回はある程度スター数を持っている以下のリポジトリのコードを利用します。
READMEの指示に従い、MCP Serverをビルド、パスを控えておきます。
% git clone https://github.com/r-huijts/strava-mcp.git
% cd strava-mcp
% npm install
% npm run build
% readlink -f dist/server.js
/Users/xxxxxxx/Repos/strava-mcp/dist/server.js
%
続いて、Strava APIのOAuth2認証を通します。環境変数にStravaのMy APIアプリケーションのページでクライアントIDとクライアントシークレット(日本語画面ではクライアントシートと表示される項目)をセットします。
export STRAVA_CLIENT_ID=XXXXXX
export STRAVA_CLIENT_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
認証スクリプトを実行し、クライアントIDとシークレットを再度コピー&ペーストで入力します。
% npx tsx scripts/setup-auth.ts
--- Strava API Token Setup ---
Enter your Strava Application Client ID: XXXXXX
Enter your Strava Application Client Secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Step 1: Authorize Application
Please visit the following URL in your browser:
https://www.strava.com/oauth/authorize?client_id=XXXXXX&response_type=code&redirect_uri=http://localhost&approval_prompt=force&scope=profile:read_all,activity:read_all,activity:read,profile:write
After authorizing, Strava will redirect you to http://localhost.
Copy the 'code' value from the URL in your browser's address bar.
(e.g., http://localhost/?state=&code=THIS_PART&scope=...)
Paste the authorization code here:
ここまで進んだら表示されているURLにWebブラウザからアクセスし、以下のアクセス認可を実行します。
「許可する」をクリックするとWebブラウザのエラーが表示されます。
エラーは気にせず、アドレス欄の code=
に続く認可コードをコピーし、ターミナルに貼り付けます。
Paste the authorization code here: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Step 2: Exchanging code for tokens...
✅ Successfully obtained tokens!
Access Token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Refresh Token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Access Token Expires At: 7/8/2025, 3:27:47 AM
Do you want to save these tokens to your .env file? (yes/no): yes
✅ Tokens successfully saved to .env file.
ℹ️ Client ID and Secret also saved/updated in .env.
これでOKです。Strava APIの設定が正しくセットされているかは、以下のスクリプトを実行してテストできます。
% npx tsx test-strava-api.ts
[TEST] Attempting to load .env file from: /Users/otaki.ryuta/Repos/strava-mcp/.env
[TEST] Using token: 6b8f4...23a15
--- Testing /athlete Endpoint ---
Using token: 6b8f4...23a15
✅ Request to /athlete successful: 200
Athlete Data: {
"id": XXXXXXXX,
"username": "taki_pone",
:
(略)
良さそうですね。
Claude for Desktopで利用する
- 動作確認環境: Claude for Mac 0.11.6 (0aa9ce)
claude_desktop_config.json
ファイルにStrava MCP Serverを追記します。
{
"mcpServers": {
"strava-mcp-local": {
"command": "/usr/local/bin/node",
"args": [
"/Users/xxxxxxx/Repos/strava-mcp/dist/server.js"
]
}
}
}
これでClaude for Desktopを起動するとMCPのTool一覧が見えるはずです。
あとはプロンプトでいろいろ聞いてみましょう。手始めにStravaのアクティビティー一覧をサマリしてもらいます。
最後にサマリーコメントをつけてくれるのが気が利いている感じがしてよいですね。いろいろ洞察や分析をお願いしてみたくなってきます。この履歴を元にオススメのヒルクライムスポットを聞いてみます。
おっ、地球のアイコンなのでWeb検索から候補を引いてくれてますね。有名どころをおさえている、良さそうなリストです。
筑波山とヤビツ峠をオススメされました。さらにアクティビティー履歴をふまえた近い難易度のスポットを聞いてみます。
上司のtake3000さんのホーム、赤城山をレコメンドされたので詳細を聞こうとしたところでコンテキストを使いきりました。
Stravaにも組み込みのAIサマリー機能がありますが、過去のアクティビティーなど引っ張ってくるデータをプロンプトで指定してコメントを出せるのは便利ですね。
Claude Codeで利用する
- 動作確認環境: 1.0.43 (Claude Code)
Claude Codeでももちろん利用できます。以下のファイルにClaude for Desktopと同様にMCPサーバーを追加します。
{
:
"projects": {
"/Users/xxxxxxx": {
"mcpServers": {
"strava-mcp-local": {
"command": "/usr/local/bin/node",
"args": [
"/Users/xxxxxxxx/Repos/strava-mcp/dist/server.js"
]
}
},
:
では、ターミナルからClaude Codeを実行して聞いてみましょう。
% claude
> show my strava activities
⏺ I'll fetch your recent Strava activities for you.
⏺ strava-mcp-local:get-recent-activities (MCP)(perPage: 10)
⎿ 🏃 多摩源流(小菅村)ライド (ID: XXXXXXXXXXX) — 73747.5m on 7/5/2025
⎿ 🏃 朝のライド (ID: XXXXXXXXXXX) — 31173.1m on 7/4/2025
⎿ 🏃 朝のライド (ID: XXXXXXXXXXX) — 30005.9m on 7/1/2025
⎿ 🏃 埼玉 定峰峠ヒルクライム1st→奥武蔵グリーンライン (ID: XXXXXXXXXXX) — 62628.7m on 6/28/2025
⎿ 🏃 奥武蔵グリーンライン ヒルクライム2nd 飯能→秩父 (ID: XXXXXXXXXXX) — 53921.4m on 6/22/2025
⎿ 🏃 強羅→箱根湯本ダウンヒル (ID: XXXXXXXXXXX) — 8559.4m on 6/20/2025
⎿ 🏃 元箱根→強羅ダウンヒル (ID: XXXXXXXXXXX) — 10023.7m on 6/20/2025
⎿ 🏃 箱根峠 朝ライド (ID: XXXXXXXXXXX) — 19632.5m on 6/20/2025
⎿ 🏃 箱根旧東海道ヒルクライム1st (ID: XXXXXXXXXXX) — 16347.9m on 6/19/2025
⎿ 🏃 奥武蔵グリーンラインヒルクライム1st 東峠→顔振峠 (ID: XXXXXXXXXXX) — 41245.6m on 6/14/2025
⏺ Here are your 10 most recent Strava activities:
1. 多摩源流(小菅村)ライド - 73.7km on July 5, 2025
2. 朝のライド - 31.2km on July 4, 2025
3. 朝のライド - 30.0km on July 1, 2025
4. 埼玉 定峰峠ヒルクライム1st→奥武蔵グリーンライン - 62.6km on June 28, 2025
5. 奥武蔵グリーンライン ヒルクライム2nd 飯能→秩父 - 53.9km on June 22, 2025
6. 強羅→箱根湯本ダウンヒル - 8.6km on June 20, 2025
7. 元箱根→強羅ダウンヒル - 10.0km on June 20, 2025
8. 箱根峠 朝ライド - 19.6km on June 20, 2025
9. 箱根旧東海道ヒルクライム1st - 16.3km on June 19, 2025
10. 奥武蔵グリーンラインヒルクライム1st 東峠→顔振峠 - 41.2km on June 14, 2025
なぜかレスポンスは走るアイコンでリストされましたが、Claude for Desktopと同様にデータが取れてますね。
> アクティビティー履歴を元に、次にオススメのヒルクライムスポットを教えて
⏺ あなたの最近のアクティビティを見ると、関東エリアのヒルクライムを中心に楽しまれていますね。履歴を基に、次におすすめのヒルクラ
イムスポットをご提案します:
未走破のおすすめヒルクライムスポット
1. 榛名山(榛名湖) - 群馬県
- 距離:約15km、標高差:約1,000m
- 箱根や奥武蔵の経験があれば挑戦しやすい名峰
2. ヤビツ峠 - 神奈川県
- 距離:約12km、標高差:約700m
- 箱根の次のステップとして人気の定番コース
3. 大垂水峠 - 東京・神奈川県境
- 距離:約8km、標高差:約400m
- 都心からアクセス良好、朝ライドにも最適
4. 碓氷峠(旧道) - 群馬・長野県境
- 距離:約10km、標高差:約600m
- 多摩源流の長距離経験を活かせるコース
5. 乗鞍エコーライン - 長野県
- 距離:約20km、標高差:約1,200m
- 73kmの長距離実績があれば挑戦可能な本格派
奥武蔵グリーンラインを複回走破されているので、次は群馬方面の榛名山か、神奈川のヤビツ峠がおすすめです!
>
こちらも同様にオススメを聞くことができました!
まとめ
Strava MCP ServerでLLMからランニングやサイクリングのデータを参照し、サマリーやレコメンドを得る様子をご紹介しました。趣味の世界もLLMで広げていけると楽しいですね。