Intervals.icu MCP Server について
Intervals.icu MCP Server は、Claude と ChatGPT を Intervals.icu API に接続し、アクティビティ、イベント、ウェルネスデータ、パワーカーブ、カスタムアイテムを扱えるようにするサーバーです。トレーニングデータを AI アシスタントで分析したいアスリートやコーチを対象としています。
主な機能
- 01アクティビティの一覧、詳細、インターバル、ストリームの取得
- 02選手のベストパワーカーブの取得
- 03ウェルネスデータの取得
- 04カレンダーイベントの作成・更新・削除
- 05カスタムアイテムの管理
活用シーン
- 01AI アシスタントによる直近のトレーニングアクティビティとインターバルの分析
- 02今後のワークアウトやレースイベントの確認
- 03指定した日付範囲のイベントの一括削除
MCP 対応
本プロジェクトは MCP サーバーであり、Claude Desktop などの MCP クライアントに、アクティビティ、イベント、ウェルネスデータ、カスタムアイテムに関するツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Intervals.icu MCP サーバー
Claude と ChatGPT を Intervals.icu API に接続するための Model Context Protocol(MCP)サーバーです。アクティビティ、イベント、ウェルネスデータ、パワーカーブ、カスタムアイテムの認証とデータ取得のためのツールを提供します。
Model Context Protocol(MCP)サーバーがお役に立ちましたら、開発の継続へのご支援として、寄付をご検討ください。
要件
- Python 3.12 以上
- Model Context Protocol(MCP)Python SDK
- httpx
- python-dotenv
セットアップ
1. uv をインストールする(推奨)
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows(PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
インストール後、uv のフルパスを確認してください。後で Claude Desktop を設定するときに必要になります。
where.exe uv
# Example output: C:\Users\<USERNAME>\.local\bin\uv.exe
2. このリポジトリをクローンする
git clone https://github.com/mvilanova/intervals-mcp-server.git
cd intervals-mcp-server
3. 仮想環境を作成して有効化する
# Create virtual environment with Python 3.12
uv venv --python 3.12
# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate
4. プロジェクトの依存関係を同期する
uv sync
5. 環境変数を設定する
次のコマンドを実行して、.env.example のコピーを作成し、.env という名前を付けます。
macOS/Linux:
cp .env.example .env
Windows(PowerShell):
Copy-Item .env.example .env
次に .env ファイルを編集し、Intervals.icu のアスリート ID と API キーを設定します。
API_KEY=your_intervals_api_key_here
ATHLETE_ID=your_athlete_id_here
Intervals.icu API キーの取得
- Intervals.icu アカウントにログインします
- [Settings]>[API]に移動します
- 新しい API キーを生成します
アスリート ID の確認
アスリート ID は通常、Intervals.icu にログインしているときに URL で確認できます。次のような形式です。
https://intervals.icu/athlete/i12345/...のi12345がアスリート ID です
更新
このプロジェクトは積極的に開発されており、新機能や修正が定期的に追加されています。最新の状態を保つには、次の手順に従ってください。
1. main から最新の変更を取得する
⚠️ このコマンドを実行する前に、コミットしていない変更がないことを確認してください。
macOS/Linux:
git checkout main && git pull
Windows(PowerShell):
git checkout main; git pull
2. Python の依存関係を更新する
仮想環境を有効化し、依存関係を同期します。
macOS/Linux:
source .venv/bin/activate
uv sync
Windows(PowerShell):
.venv\Scripts\activate
uv sync
トラブルシューティング
設定変更が原因で Claude Desktop が動作しない場合は、次の手順に従ってください。
claude_desktop_config.jsonにある既存のIntervals.icuエントリーを削除します。intervals-mcp-serverディレクトリから Claude Desktop を再設定します。
macOS/Linux:
mcp install src/intervals_mcp_server/server.py --name "Intervals.icu" --with-editable . --env-file .env
Windows: Windows の設定セクションの説明に従って、エントリーを手動で追加し直します。
よくあるエラー
spawn uv ENOENT — Claude Desktop が uv 実行ファイルを見つけられません。command フィールドには uv のフルパスを指定してください。which uv(macOS/Linux)または where.exe uv(Windows)を実行すると確認できます。
Windows での spawn /Users/... ENOENT — 設定ファイルに macOS/Linux 形式のパスが含まれています。以下のWindows の設定セクションの説明に従って、バックスラッシュを使った正しい Windows パスに置き換えてください。
Windows Store 版のインストール:設定変更が反映されない — 編集している設定ファイルが間違っている可能性があります。Microsoft Store からインストールした Claude Desktop は、AppData\Roaming\Claude\ ではなく AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json を読み込みます。
Claude での使用方法
1. Claude Desktop を設定する
このサーバーを Claude Desktop で使用するには、Claude Desktop の設定に追加する必要があります。
macOS/Linux
intervals-mcp-serverディレクトリから次のコマンドを実行し、Claude Desktop を設定します。
mcp install src/intervals_mcp_server/server.py --name "Intervals.icu" --with-editable . --env-file .env
- Claude Desktop アプリの設定ファイル
claude_desktop_config.jsonを開くと、次のようになっています。
{
"mcpServers": {
"Intervals.icu": {
"command": "/Users/<USERNAME>/.local/bin/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with-editable",
"/path/to/intervals-mcp-server",
"mcp",
"run",
"/path/to/intervals-mcp-server/src/intervals_mcp_server/server.py"
],
"env": {
"INTERVALS_API_BASE_URL": "https://intervals.icu/api/v1",
"ATHLETE_ID": "<YOUR_ATHLETE_ID>",
"API_KEY": "<YOUR_API_KEY>",
"LOG_LEVEL": "INFO"
}
}
}
}
/path/to/ は、お使いのシステムにある intervals-mcp-server コードフォルダーのパスです。
Windows
mcp install コマンドは、環境や権限の問題により Windows で失敗する場合があります。その場合は、Claude Desktop を手動で設定してください。
-
Claude Desktop の設定ファイルを探します。Claude Desktop を Microsoft Store からインストールした場合、設定ファイルは次の場所にあります。
C:\Users\<USERNAME>\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json標準のインストーラーからインストールした場合は、次の場所にある可能性があります。
C:\Users\<USERNAME>\AppData\Roaming\Claude\claude_desktop_config.jsonファイルまたはフォルダーが存在しない場合は、作成してください。
-
claude_desktop_config.jsonに次のエントリーを追加し、プレースホルダーを実際の値に置き換えます。
{
"mcpServers": {
"Intervals.icu": {
"command": "C:\\Users\\<USERNAME>\\.local\\bin\\uv.exe",
"args": [
"run",
"--with",
"mcp[cli]",
"--with-editable",
"C:\\path\\to\\intervals-mcp-server",
"mcp",
"run",
"C:\\path\\to\\intervals-mcp-server\\src\\intervals_mcp_server\\server.py"
],
"env": {
"INTERVALS_API_BASE_URL": "https://intervals.icu/api/v1",
"ATHLETE_ID": "<YOUR_ATHLETE_ID>",
"API_KEY": "<YOUR_API_KEY>",
"LOG_LEVEL": "INFO"
}
}
}
}
- JSON 内のすべての Windows パスには、二重のバックスラッシュ(
\\)を使用してください。 uv.exeの完全なパスを確認するには、PowerShell でwhere.exe uvを実行してください。- クローンしたリポジトリの完全なパスを確認するには、
intervals-mcp-serverフォルダー内でpwdを実行してください。
Windows Store からインストールした場合の注意: Microsoft Store からインストールした Claude Desktop は、設定を
AppData\Local\Packages\...内にサンドボックス化します。AppData\Roaming\Claude\claude_desktop_config.jsonを編集しても反映されません。正しいファイルを編集してください。
- Claude Desktop を再起動します。
2. Claude で MCP サーバーを使用する
サーバーが起動し、Claude Desktop の設定が完了したら、次のツールを使って、過去および今後のアクティビティ、イベント、ウェルネスデータについて質問できます。
get_activities:アクティビティの一覧を取得しますget_activity_details:特定のアクティビティの詳細情報を取得しますget_activity_intervals:特定のアクティビティの詳細なインターバルデータを取得しますget_activity_streams:特定のアクティビティの生データストリーム(パワー、心拍数など)を取得しますget_athlete_power_curves:選択した時間と期間における最高パワー出力の曲線を取得しますget_wellness_data:ウェルネスデータを取得しますget_events:今後のイベント(ワークアウト、レースなど)を取得しますget_event_by_id:特定のイベントの詳細情報を取得しますadd_or_update_event:イベント(ワークアウト、レース、メモなど)を作成または更新しますdelete_event:特定のイベントを削除しますdelete_events_by_date_range:指定した日付範囲内のイベントを削除しますget_custom_items:アスリートのカスタム項目(チャート、カスタムフィールド、ゾーンなど)を取得しますget_custom_item_by_id:特定のカスタム項目の詳細情報を取得しますcreate_custom_item:アスリートの新しいカスタム項目を作成しますupdate_custom_item:既存のカスタム項目を更新しますdelete_custom_item:カスタム項目を削除します
ChatGPT での使用
ChatGPT のベータ版 MCP コネクターからも、SSE トランスポート経由でこのサーバーに接続できます。
-
SSE モードでサーバーを起動し、
/sseと/messages/エンドポイントを公開します。export FASTMCP_HOST=127.0.0.1 FASTMCP_PORT=8765 MCP_TRANSPORT=sse FASTMCP_LOG_LEVEL=INFO python src/intervals_mcp_server/server.py起動ログには完全な URL(例:
http://127.0.0.1:8765/sse)が表示されます。ChatGPT には公開 URL が必要なため、サーバーを直接公開しない場合は、ngrok http 8765などのツールでポートを転送してください。 -
ChatGPT で 設定 → 機能 → カスタム MCP コネクター を開き、追加 をクリックします。次の項目を入力してください。
- 名前:
Intervals.icu - MCP サーバー URL:
https://<your-public-host>/sse - 認証:トンネルを保護していない場合は、認証なし のままにします。
ここでも同じ
ngrok http 8765のトンネル URL を使用できます。上記で公開したホスト/ポートに転送されていることを確認してください。 - 名前:
-
コネクターを保存して、新しいチャットを開きます。ChatGPT は SSE 接続を維持し、サーバーが通知する
/messages/エンドポイントに後続のリクエストを POST します。MCP サーバーまたはトンネルを再起動した場合は、SSE コマンドを再実行し、URL が変わっていればコネクターの URL を更新してください。
開発とテスト
開発用の依存関係をインストールし、テストスイートを実行します。
uv sync --all-extras
pytest -v tests
サーバーをローカルで実行する
サーバーを手動で起動するには(開発やテストに便利です)、次を実行します。
mcp run src/intervals_mcp_server/server.py
デバッグログの有効化
デバッグ用にサーバーログを取得するには、コマンドをシェルでラップし、標準エラー出力をファイルにリダイレクトします。
macOS/Linux — claude_desktop_config.jsonを次のように変更します。
{
"mcpServers": {
"Intervals.icu": {
"command": "/bin/bash",
"args": [
"-c",
"/Users/<USERNAME>/.local/bin/uv run --with 'mcp[cli]' --with-editable /path/to/intervals-mcp-server mcp run /path/to/intervals-mcp-server/src/intervals_mcp_server/server.py 2>> /path/to/intervals-mcp-server/mcp-server.log"
],
"env": {
"INTERVALS_API_BASE_URL": "https://intervals.icu/api/v1",
"ATHLETE_ID": "<YOUR_ATHLETE_ID>",
"API_KEY": "<YOUR_API_KEY>",
"LOG_LEVEL": "INFO"
}
}
}
}
その後、ログファイルを tail してリアルタイムで出力を確認します。
tail -f /path/to/intervals-mcp-server/mcp-server.log
Windows — claude_desktop_config.jsonを次のように変更します。
{
"mcpServers": {
"Intervals.icu": {
"command": "powershell",
"args": [
"-Command",
"C:\\Users\\<USERNAME>\\.local\\bin\\uv.exe run --with 'mcp[cli]' --with-editable C:\\path\\to\\intervals-mcp-server mcp run C:\\path\\to\\intervals-mcp-server\\src\\intervals_mcp_server\\server.py 2>> C:\\path\\to\\intervals-mcp-server\\mcp-server.log"
],
"env": {
"INTERVALS_API_BASE_URL": "https://intervals.icu/api/v1",
"ATHLETE_ID": "<YOUR_ATHLETE_ID>",
"API_KEY": "<YOUR_API_KEY>",
"LOG_LEVEL": "INFO"
}
}
}
}
その後、PowerShell を使ってログファイルをリアルタイムで監視します。
Get-Content C:\path\to\intervals-mcp-server\mcp-server.log -Wait
ライセンス
GNU General Public License v3.0
注目プロジェクト
Glama.ai
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。