Intervals.icu MCP Server
Intervals.icu MCP Server
Claude と ChatGPT を Intervals.icu API に接続するための Model Context Protocol (MCP) サーバーです。アクティビティ、アスリートプロフィール、ウェルネスデータ、パワーカーブ、カスタム項目の認証とデータ取得のためのツールを提供します。
この Model Context Protocol (MCP) サーバーが役立つと思われた場合は、継続的な開発をサポートするための寄付をご検討ください。
要件
Python 3.12 以降
httpx
python-dotenv
Related MCP server: Intervals.icu MCP Server
セットアップ
1. uv のインストール(推奨)
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | shWindows (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.exe2. このリポジトリをクローンする
git clone https://github.com/mvilanova/intervals-mcp-server.git
cd intervals-mcp-server3. 仮想環境を作成して有効化する
# 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\activate4. プロジェクトの依存関係を同期する
uv sync5. 環境変数を設定する
以下のコマンドを実行して、.env.example をコピーし、.env という名前を付けます:
macOS/Linux:
cp .env.example .envWindows (PowerShell):
Copy-Item .env.example .env次に、.env ファイルを編集して、Intervals.icu のアスリートID と APIキーを設定します:
API_KEY=your_intervals_api_key_here
ATHLETE_ID=your_athlete_id_hereIntervals.icu API キーの取得
Intervals.icu アカウントにログインします
設定 > API に移動します
新しい API キーを生成します
アスリート ID の確認
アスリート ID は、Intervals.icu にログインしているときの URL に通常表示されます。次のようになります:
https://intervals.icu/athlete/i12345/...のi12345がアスリート ID です
更新
このプロジェクトは積極的に開発されており、新しい機能や修正が定期的に追加されています。最新の状態に保つには、次の手順を実行します:
1. main ブランチの最新の変更をプルする
⚠️ このコマンドを実行する前に、未コミットの変更がないことを確認してください。
macOS/Linux:
git checkout main && git pullWindows (PowerShell):
git checkout main; git pull2. Python の依存関係を更新する
仮想環境を有効化し、依存関係を同期します:
macOS/Linux:
source .venv/bin/activate
uv syncWindows (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 .envWindows: 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_pzsjx5b4mhj6x4\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 .envClaude 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と/messages/エンドポイントを公開するために、SSE モードでサーバーを起動します: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.icuMCP サーバー URL:
https://<your-public-host>/sse認証: トンネルを保護していない限り、認証なし のままにします。
ここでも同じ
cs.studioのトンネル URL を使用できます。ただし、上記でエクスポートしたホスト/ポートに転送されていることを確認してください。コネクタを保存し、新しいチャットを開きます。ChatGPT は SSE 接続を開いたままにし、フォローアップリクエストをサーバーが通知する
/messages/エンドポイントに POST します。MCP サーバーまたはトンネルを再起動した場合は、SSE コマンドを再実行し、URL が変更されたらコネクタの URL を更新してください。
開発とテスト
開発依存関係をインストールし、次のコマンドでテストスイートを実行します:
uv sync --all-extras
pytest -v testsサーバーをローカルで実行する
サーバーを手動で起動するには(開発中やテスト時に便利)、次のコマンドを実行します:
mcp run src/intervals_mcp_server/server.pyデバッグログの有効化
デバッグ用にサーバーログを取得するには、コマンドをシェルでラップし、stderr をファイルにリダイレクトします。
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.logWindows — 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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceConnects Claude with the Intervals.icu API to retrieve fitness data including activities, workouts, wellness metrics, and training events.10334GPL 3.0
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with Intervals.icu fitness tracking and wellness data, allowing users to fetch, filter, and group activities or health metrics. It provides structured summaries of workouts and physical well-being through natural language queries.4
- FlicenseAqualityCmaintenanceEnables AI assistants to access and analyze intervals.icu training data including activities, fitness metrics (CTL/ATL/TSB), wellness stats, and calendar events. Supports natural language querying of athletic performance for training insights and workout planning.6
- AlicenseAqualityDmaintenanceEnables interaction with Intervals.icu data, including activities, wellness, and calendar events, via natural language.10341MIT
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/csikosaron98/intervals-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server