groundcobra009/strava-mcp-server
If you are the rightful owner of strava-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Strava MCP Server integrates Strava API with Model Context Protocol to provide enhanced functionalities for managing athlete data.
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アプリケーションの作成
- Strava API設定ページにアクセス
- 「Create App」または「My API Application」をクリック
- 以下の情報を入力:
- Application Name: 任意の名前(例:「My MCP Server」)
- Category: 適切なカテゴリを選択
- Club: 空欄でOK
- Website: 任意のURL(例:
http://localhost) - Authorization Callback Domain:
localhost - Application Description: 任意の説明
- 利用規約に同意して「Create」をクリック
1.2 Client IDとClient Secretの確認
アプリケーションを作成すると、以下の情報が表示されます:
- Client ID: 数字の羅列(例:123456)
- Client Secret: 英数字の文字列(例:abc123def456)
これらをメモしておいてください。
1.3 Refresh Tokenの取得
- 以下の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
-
Stravaにログインして「Authorize」をクリック
-
リダイレクト後のURL(
http://localhost/?...)のアドレスバーからcodeパラメータの値をコピー- 例:
http://localhost/?code=abc123xyz789の場合、abc123xyz789をコピー
- 例:
-
ターミナルで以下のコマンドを実行(各値を実際の値に置き換える):
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
- レスポンスに含まれる
refresh_tokenの値をメモ:
{
"access_token": "...",
"refresh_token": "abc123...", ← この値をメモ
"expires_at": 1234567890
}
ステップ2: Claude Desktopでの設定
Claude Desktopの設定ファイル(claude_desktop_config.json)に以下を追加:
macOS
- Claude Desktopの設定ファイルを開く:
open ~/Library/Application\ Support/Claude/claude_desktop_config.json
- 以下の内容を追加(既存の設定がある場合は
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"
}
}
}
}
-
Claude Desktopを再起動
-
Claude Desktopの右下に🔨マークが表示され、「strava」が利用可能になっていることを確認
Windows
- Claude Desktopの設定ファイルを開く:
notepad %APPDATA%\Claude\claude_desktop_config.json
-
macOSと同じJSON設定を追加
-
各値を実際の値に置き換え
-
Claude Desktopを再起動
-
🔨マークで「strava」が利用可能になっていることを確認
ステップ2-B: Cursor での設定
Cursor エディタで使用する場合:
設定ファイルの場所
- macOS/Linux:
~/.cursor/mcp.json - Windows:
%APPDATA%\Cursor\User\mcp.json
設定手順
- 設定ファイルを作成または編集:
# macOS/Linux
mkdir -p ~/.cursor
nano ~/.cursor/mcp.json
# Windows
mkdir %APPDATA%\Cursor\User
notepad %APPDATA%\Cursor\User\mcp.json
- 以下の内容を追加:
{
"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"
}
}
}
}
-
各値を実際の認証情報に置き換え
-
Cursor を再起動
-
Cursor の AI チャットで MCP ツールが利用可能になっていることを確認
ステップ2-C: Manus での設定
Manus で使用する場合:
設定手順
-
Manus の設定画面を開く
-
MCP サーバー設定セクションに移動
-
新しいサーバーを追加:
{
"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"
}
}
-
設定を保存
-
Manus を再起動してツールを有効化
ステップ2-D: Dify での設定
Dify プラットフォームで使用する場合:
セルフホスト版の場合
- 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"
- MCP サーバーをカスタムツールとして登録:
{
"tool_name": "strava_mcp",
"command": "npx -y @keitaro_aigc/strava-mcp-server",
"type": "mcp"
}
- Docker コンテナを再起動:
docker-compose down
docker-compose up -d
クラウド版の場合
-
Dify のワークスペース設定を開く
-
「カスタムツール」セクションに移動
-
新しい MCP ツールを追加し、エンドポイント情報を設定
注意: クラウド版では MCP サーバーを別途ホスティングする必要がある場合があります。
ステップ2-E: ChatGPT(開発モード)での設定
ChatGPT の開発モード(Actions/Functions)で使用する場合:
前提条件
- ChatGPT Plus または Enterprise アカウント
- カスタム GPT の作成権限
設定手順
-
ChatGPT で「GPTs」→「Create a GPT」を選択
-
「Configure」タブで Actions を追加
-
MCP サーバーを API エンドポイントとしてホスティング(例:Vercel、AWS Lambda など)
-
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
- 環境変数を 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リポジトリURLauthor: 作者情報
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.jsonのnameを自分の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+: 実行環境
貪献
プルリクエストやイシューの報告を歓迎します!
- このリポジトリをFork
- 新しいブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - ブランチをPush (
git push origin feature/amazing-feature) - 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