Strava MCP Server
Enables AI assistants to directly access and analyze Strava activity data, including runs, rides, and swims, through natural language queries.
README
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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.