World Monitor
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.
Remote MCP server for intervals.icu run data and analysis
使っているAIアプリを選んで、設定をコピーしてください。
チェック 3/3 合格 · あなたのパソコンで動きます · ✓ コマンド確認済み 2026年11月14日
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげますが、先に準備が必要です
Intervals MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
このメッセージを Claude のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Claude に MCP server Intervals MCP を入れてください。順番に:1) docker --version で Docker があるか確認。なければ https://www.docker.com/products/docker-desktop/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "intervals": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "INTERVALS_API_KEY", "-e", "ORS_API_KEY", "-e", "HOME_START", "-e", "MCP_AUTH_TOKEN", "ghcr.io/ljcl/intervals-mcp:2.19.0" ], "env": { "INTERVALS_API_KEY": "your-value", "ORS_API_KEY": "your-value", "HOME_START": "your-value", "MCP_AUTH_TOKEN": "your-value" } } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) INTERVALS_API_KEY, ORS_API_KEY, HOME_START, MCP_AUTH_TOKEN は "your-value" のままにして、本当の値は私がファイルかアプリの入力欄に自分で貼るよう伝える。チャットにキーを書かせない。5) 了承した内容を実行し、Intervals MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
docker --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: Docker Desktop を入れます:Mac は Docker.dmg を開いてアイコンを「アプリケーション」へドラッグ(Mac に合わせて Apple silicon か Intel を選ぶ)· Windows は Docker Desktop Installer.exe をダブルクリック · 入れたら Docker Desktop アプリを開いたままにします。curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: docker --version
一度入れれば、Docker を使うすべてのツールで使えます
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
SettingsDeveloperEdit Config
{
"mcpServers": {
"intervals": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"INTERVALS_API_KEY",
"-e",
"ORS_API_KEY",
"-e",
"HOME_START",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ljcl/intervals-mcp:2.19.0"
],
"env": {
"INTERVALS_API_KEY": "your-value",
"ORS_API_KEY": "your-value",
"HOME_START": "your-value",
"MCP_AUTH_TOKEN": "your-value"
}
}
}
}キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Intervals MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が Intervals MCP を使っていると言うか、回答に Intervals MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
INTERVALS_ATHLETE_ID Athlete id: 0 (default, the API key's own athlete) or e.g. i12345TZ IANA time zone for local dates, e.g. Australia/Sydney; unset or UTC follows the athlete's intervals.icu time zone (Etc/UTC pins UTC)OSM_EXTRACT_URL URL of an .osm.pbf (e.g. a BBBike city or Geofabrik region) for the local OpenStreetMap index that counts road crossings in route suggestions; needs HOME_STARTPORT Server port, 1-65535 (default 3000)DATA_DIR Directory for stored routes (stitch-route, amend-route); the image uses /data, a volume in docker-compose.yml. Default ./dataROUTE_RETENTION_DAYS Days a stored route not read or changed is kept, 1-3650 (default 30)PUBLIC_URL Public URL, used only to warn when /mcp is exposed without MCP_AUTH_TOKEN説明は英語の原文のままです。
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT はまだ Intervals MCP につなげません
Intervals MCP はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません
A · Intervals MCP につなげるアプリを使う
B · その他 の中で ChatGPT につなげる別のサーバー
同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました
Claude Code につなげますが、先に準備が必要です
Intervals MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)
このメッセージを Claude Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Claude Code に MCP server Intervals MCP を入れてください。順番に:1) docker --version で Docker があるか確認。なければ https://www.docker.com/products/docker-desktop/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):claude mcp add --scope user intervals --env INTERVALS_API_KEY=your-value --env ORS_API_KEY=your-value --env HOME_START=your-value --env MCP_AUTH_TOKEN=your-value -- docker run -i --rm -e INTERVALS_API_KEY -e ORS_API_KEY -e HOME_START -e MCP_AUTH_TOKEN ghcr.io/ljcl/intervals-mcp:2.19.0 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) INTERVALS_API_KEY, ORS_API_KEY, HOME_START, MCP_AUTH_TOKEN は "your-value" のままにして、本当の値は私がファイルかアプリの入力欄に自分で貼るよう伝える。チャットにキーを書かせない。5) 了承した内容を実行し、Intervals MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
docker --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: Docker Desktop を入れます:Mac は Docker.dmg を開いてアイコンを「アプリケーション」へドラッグ(Mac に合わせて Apple silicon か Intel を選ぶ)· Windows は Docker Desktop Installer.exe をダブルクリック · 入れたら Docker Desktop アプリを開いたままにします。curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: docker --version
一度入れれば、Docker を使うすべてのツールで使えます
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
claude mcp add --scope user intervals --env INTERVALS_API_KEY=your-value --env ORS_API_KEY=your-value --env HOME_START=your-value --env MCP_AUTH_TOKEN=your-value -- docker run -i --rm -e INTERVALS_API_KEY -e ORS_API_KEY -e HOME_START -e MCP_AUTH_TOKEN ghcr.io/ljcl/intervals-mcp:2.19.0Enter の前に「your-value」を自分のキーに書き換えてください
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Intervals MCP が一覧にあり、接続済みと表示されれば OK です
Intervals MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が Intervals MCP を使っていると言うか、回答に Intervals MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
INTERVALS_ATHLETE_ID Athlete id: 0 (default, the API key's own athlete) or e.g. i12345TZ IANA time zone for local dates, e.g. Australia/Sydney; unset or UTC follows the athlete's intervals.icu time zone (Etc/UTC pins UTC)OSM_EXTRACT_URL URL of an .osm.pbf (e.g. a BBBike city or Geofabrik region) for the local OpenStreetMap index that counts road crossings in route suggestions; needs HOME_STARTPORT Server port, 1-65535 (default 3000)DATA_DIR Directory for stored routes (stitch-route, amend-route); the image uses /data, a volume in docker-compose.yml. Default ./dataROUTE_RETENTION_DAYS Days a stored route not read or changed is kept, 1-3650 (default 30)PUBLIC_URL Public URL, used only to warn when /mcp is exposed without MCP_AUTH_TOKEN説明は英語の原文のままです。
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげますが、先に準備が必要です
Intervals MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)
このメッセージを Cursor のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの Cursor に MCP server Intervals MCP を入れてください。順番に:1) docker --version で Docker があるか確認。なければ https://www.docker.com/products/docker-desktop/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "intervals": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "INTERVALS_API_KEY", "-e", "ORS_API_KEY", "-e", "HOME_START", "-e", "MCP_AUTH_TOKEN", "ghcr.io/ljcl/intervals-mcp:2.19.0" ], "env": { "INTERVALS_API_KEY": "your-value", "ORS_API_KEY": "your-value", "HOME_START": "your-value", "MCP_AUTH_TOKEN": "your-value" } } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) INTERVALS_API_KEY, ORS_API_KEY, HOME_START, MCP_AUTH_TOKEN は "your-value" のままにして、本当の値は私がファイルかアプリの入力欄に自分で貼るよう伝える。チャットにキーを書かせない。5) 了承した内容を実行し、Intervals MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
docker --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: Docker Desktop を入れます:Mac は Docker.dmg を開いてアイコンを「アプリケーション」へドラッグ(Mac に合わせて Apple silicon か Intel を選ぶ)· Windows は Docker Desktop Installer.exe をダブルクリック · 入れたら Docker Desktop アプリを開いたままにします。curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: docker --version
一度入れれば、Docker を使うすべてのツールで使えます
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
Intervals MCP の設定で INTERVALS_API_KEY, ORS_API_KEY, HOME_START, MCP_AUTH_TOKEN が空です。自分のキーを入れて保存します
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Intervals MCP を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が Intervals MCP を使っていると言うか、回答に Intervals MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
INTERVALS_ATHLETE_ID Athlete id: 0 (default, the API key's own athlete) or e.g. i12345TZ IANA time zone for local dates, e.g. Australia/Sydney; unset or UTC follows the athlete's intervals.icu time zone (Etc/UTC pins UTC)OSM_EXTRACT_URL URL of an .osm.pbf (e.g. a BBBike city or Geofabrik region) for the local OpenStreetMap index that counts road crossings in route suggestions; needs HOME_STARTPORT Server port, 1-65535 (default 3000)DATA_DIR Directory for stored routes (stitch-route, amend-route); the image uses /data, a volume in docker-compose.yml. Default ./dataROUTE_RETENTION_DAYS Days a stored route not read or changed is kept, 1-3650 (default 30)PUBLIC_URL Public URL, used only to warn when /mcp is exposed without MCP_AUTH_TOKEN説明は英語の原文のままです。
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげますが、先に準備が必要です
Intervals MCP のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)
このメッセージを VS Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。
このパソコンの VS Code に MCP server Intervals MCP を入れてください。順番に:1) docker --version で Docker があるか確認。なければ https://www.docker.com/products/docker-desktop/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "servers": { "intervals": { "type": "stdio", "command": "docker", "args": [ "run", "-i", "--rm", "-e", "INTERVALS_API_KEY", "-e", "ORS_API_KEY", "-e", "HOME_START", "-e", "MCP_AUTH_TOKEN", "ghcr.io/ljcl/intervals-mcp:2.19.0" ], "env": { "INTERVALS_API_KEY": "your-value", "ORS_API_KEY": "your-value", "HOME_START": "your-value", "MCP_AUTH_TOKEN": "your-value" } } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) INTERVALS_API_KEY, ORS_API_KEY, HOME_START, MCP_AUTH_TOKEN は "your-value" のままにして、本当の値は私がファイルかアプリの入力欄に自分で貼るよう伝える。チャットにキーを書かせない。5) 了承した内容を実行し、Intervals MCP のツールが本当に表示されるか確認する。このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。
もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter
docker --versionMac:⌘ + Space を押し、Terminal と入力して Enter
Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」
まだ入っていない場合: Docker Desktop を入れます:Mac は Docker.dmg を開いてアイコンを「アプリケーション」へドラッグ(Mac に合わせて Apple silicon か Intel を選ぶ)· Windows は Docker Desktop Installer.exe をダブルクリック · 入れたら Docker Desktop アプリを開いたままにします。curl コマンドは不要です
入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: docker --version
一度入れれば、Docker を使うすべてのツールで使えます
提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。
Intervals MCP の設定で INTERVALS_API_KEY, ORS_API_KEY, HOME_START, MCP_AUTH_TOKEN が空です。自分のキーを入れて保存します
キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください
Intervals MCP を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が Intervals MCP を使っていると言うか、回答に Intervals MCP のツール名が出れば接続成功です
上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。
INTERVALS_ATHLETE_ID Athlete id: 0 (default, the API key's own athlete) or e.g. i12345TZ IANA time zone for local dates, e.g. Australia/Sydney; unset or UTC follows the athlete's intervals.icu time zone (Etc/UTC pins UTC)OSM_EXTRACT_URL URL of an .osm.pbf (e.g. a BBBike city or Geofabrik region) for the local OpenStreetMap index that counts road crossings in route suggestions; needs HOME_STARTPORT Server port, 1-65535 (default 3000)DATA_DIR Directory for stored routes (stitch-route, amend-route); the image uses /data, a volume in docker-compose.yml. Default ./dataROUTE_RETENTION_DAYS Days a stored route not read or changed is kept, 1-3650 (default 30)PUBLIC_URL Public URL, used only to warn when /mcp is exposed without MCP_AUTH_TOKEN説明は英語の原文のままです。
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください
JSON 設定は下の「開発者向け」にあります
Claude Code
claude mcp add --scope user intervals --env INTERVALS_API_KEY=your-value --env ORS_API_KEY=your-value --env HOME_START=your-value --env MCP_AUTH_TOKEN=your-value -- docker run -i --rm -e INTERVALS_API_KEY -e ORS_API_KEY -e HOME_START -e MCP_AUTH_TOKEN ghcr.io/ljcl/intervals-mcp:2.19.0Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"intervals": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"INTERVALS_API_KEY",
"-e",
"ORS_API_KEY",
"-e",
"HOME_START",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ljcl/intervals-mcp:2.19.0"
],
"env": {
"INTERVALS_API_KEY": "your-value",
"ORS_API_KEY": "your-value",
"HOME_START": "your-value",
"MCP_AUTH_TOKEN": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"intervals": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"INTERVALS_API_KEY",
"-e",
"ORS_API_KEY",
"-e",
"HOME_START",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ljcl/intervals-mcp:2.19.0"
],
"env": {
"INTERVALS_API_KEY": "your-value",
"ORS_API_KEY": "your-value",
"HOME_START": "your-value",
"MCP_AUTH_TOKEN": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"intervals": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"INTERVALS_API_KEY",
"-e",
"ORS_API_KEY",
"-e",
"HOME_START",
"-e",
"MCP_AUTH_TOKEN",
"ghcr.io/ljcl/intervals-mcp:2.19.0"
],
"env": {
"INTERVALS_API_KEY": "your-value",
"ORS_API_KEY": "your-value",
"HOME_START": "your-value",
"MCP_AUTH_TOKEN": "your-value"
}
}
}
}INTERVALS_API_KEY 秘密 必須 envINTERVALS_ATHLETE_ID envTZ envORS_API_KEY 秘密 必須 envHOME_START 秘密 必須 envOSM_EXTRACT_URL envMCP_AUTH_TOKEN 秘密 必須 envPORT envDATA_DIR envROUTE_RETENTION_DAYS envPUBLIC_URL env説明は英語の原文のままです。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月15日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント ljcl で確認済みです
コードの最終更新:一昨日
MITを使用
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
まだレビューはありません
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:INTERVALS_API_KEY, ORS_API_KEY, HOME_START, MCP_AUTH_TOKEN
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は一昨日、最新バージョン(2.19.0)がレジストリに届いたのは4 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにDockerも必要です。
同じカテゴリには:World Monitor, openstatus, Oh My Posh Validator, Strata, Jitsu
同じカテゴリでほかの作者のもの。コマンドは確認済み。公式を先に、次にスター順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.
Manage monitors, status pages, incidents and maintenances in your openstatus workspace.
Validate oh-my-posh configurations and segment snippets against the official schema.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Manage Jitsu data pipelines: destinations, streams, connections, functions, live events.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A single-user remote MCP server for intervals.icu run data and analysis, with interactive MCP Apps.
All text tools and every MCP App talk to intervals.icu directly and are verified against a real account; see docs/tools.md for the full catalog. Configuration is checked at startup: a bad variable stops the server with a message naming it, and the key's presence is reported on /health.
History. This project began as strava-mcp and was migrated to intervals.icu as its data source; nothing in the server talks to Strava today.
cp .env.example .env
Edit .env with your values:
INTERVALS_API_KEY=your_api_key
All variables are listed in docs/operations.md.
Local development (needs Bun):
bun install
bun run dev
Docker:
docker compose up -d
Compose publishes the port on 127.0.0.1 only, which is all a tunnel needs. To reach the server from other machines on your LAN, set BIND_ADDR=0.0.0.0 in .env, and set MCP_AUTH_TOKEN too (operations.md).
Prefer the prebuilt image? Pull ghcr.io/ljcl/intervals-mcp:latest, the newest release (also on the MCP registry as io.github.ljcl/intervals-mcp), and point your compose image: at it instead of building; you still supply your own API key. :edge tracks unreleased main. Published images carry SBOM/provenance attestations you can verify; see operations.md.
GET /health reports liveness without spending an intervals.icu API request; with MCP_AUTH_TOKEN it also reports config and rate-limit state. Response shapes and monitoring guidance: operations.md.
Point any client at http://localhost:3000/mcp. Repo layout, task runner, tests, coverage gates, and Storybook workflow: docs/development.md. Agent conventions live in AGENTS.md.
Most AI tools (Claude Desktop, Claude Code, etc.) need an HTTPS URL to reach your MCP server. Since the server runs on your local network, you'll need a tunnel to expose it.
Tailscale Funnel exposes a local port to the internet over HTTPS with no configuration:
tailscale funnel --bg 3000
Set PUBLIC_URL in your .env to the resulting URL.
cloudflared tunnel --url http://localhost:3000
A tunnel makes /mcp reachable by anyone who discovers the URL, so they can use the intervals.icu API key configured on the server (the key itself is never exposed to them). Set MCP_AUTH_TOKEN to a long random secret (openssl rand -hex 32) and every /mcp request requires Authorization: Bearer ; each client snippet below shows where the header goes. The secret also gates the detailed half of /health, again only as that header, never as a URL parameter. Full details: operations.md.
Set it in .env alongside your API key; docker-compose.yml forwards it automatically.
AI Tool (Claude Desktop, Claude Code, etc.)
│ HTTPS HTTPS Tunnel (Tailscale / Cloudflare) │ HTTP (localhost:3000) intervals-mcp Server (Docker / Bun) │ HTTPS intervals.icu API
The server works with any MCP client that supports the Streamable HTTP transport. In every snippet below, replace https://your-public-url with your tunnel URL (or http://localhost:3000 for local development), and include the Authorization header only if you set MCP_AUTH_TOKEN.
Add to your Claude configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": { "intervals-mcp": { "type": "url", "url": "https://your-public-url/mcp", "headers": { "Authorization": "Bearer your-mcp-auth-token" } } } }
Restart Claude Desktop to load the new configuration.
claude mcp add --transport http intervals-mcp https://your-public-url/mcp \
--header "Authorization: Bearer your-mcp-auth-token"
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):
{
"mcpServers": { "intervals-mcp": { "url": "https://your-public-url/mcp", "headers": { "Authorization": "Bearer your-mcp-auth-token" } } } }
Add to .vscode/mcp.json in your workspace (or run MCP: Add Server from the command palette):
{
"servers": { "intervals-mcp": { "type": "http", "url": "https://your-public-url/mcp", "headers": { "Authorization": "Bearer your-mcp-auth-token" } } } }
Any client that speaks Streamable HTTP can connect to the /mcp endpoint directly. The endpoint serves the 2026-07-28 revision: clients send stateless requests carrying the io.modelcontextprotocol/* envelope keys and the Mcp-Method/Mcp-Name headers (server/discover advertises capabilities). A 2025-era client (one that opens with initialize) is served statelessly too, because claude.ai loads MCP Apps that way, but it gets no write tool: update-activity, update-wellness and update-gear need a 2026-07-28 client. POST JSON-RPC messages with an Accept: application/json, text/event-stream header. Protocol details: docs/architecture.md.
The full tool catalog, prompts, permission behaviour, and example requests live in docs/tools.md. All text tools and every MCP App's data handler talk to intervals.icu directly.
| Doc | Contents |
|---|---|
| docs/tools.md | Full tool catalog, prompts, permission behaviour, example requests |
| docs/operations.md | Environment variables, the API key, health endpoint, rate limits, endpoint security |
| docs/architecture.md | Server architecture: transport, HTTP layer, cache, error taxonomy, analysis math |
| docs/api-notes.md | Calling the intervals.icu API: auth, endpoints, verified behaviour from Phases 1 and 2 |
| docs/mcp-apps.md | MCP App packages: shared shell, mobile, theming, per-app details |
| docs/development.md | Monorepo mechanics: Turborepo, coverage gates, Storybook gates, Docker build |
| docs/releasing.md | Release automation: Conventional Commit PR titles, release-please, publishing |
| docs/project.md | Issue tracking and project board |
| docs/Intervals_MCP_Server.md | Capability reference to upload as project knowledge in a Claude project using this server |
PRs are squash-merged and the PR title becomes the commit on `main`, so write it as a Conventional Commit (fix: patch, feat: minor, any ! or BREAKING CHANGE: footer major; chore:/docs:/refactor:/ci: release nothing). A CI check rejects non-conforming titles; see docs/releasing.md.
Server exits at startup: The message names the variable to fix, one line per bad variable. See operations.md.
AI tool can't reach the server — MCP requires an HTTPS URL. Use a tunnel (Tailscale Funnel or Cloudflare Tunnel) to expose your local server. See Connecting to AI Tools.
API key errors: Check /health first: api_key_configured tells you whether the server has a key set at all. If it is true but calls still fail, read upstream.intervals.last_failure: a 401 or 403 there means the key is wrong or revoked; generate a new one at intervals.icu, Settings, Developer Settings, and update INTERVALS_API_KEY. See operations.md.
Today's run is missing, or dates are a day off: Check time_zone and time_zone_source on /health. With TZ unset (or UTC), the server uses your intervals.icu time zone; set TZ to choose one. See operations.md.
"Cloudflare … answered with a challenge": Cloudflare, in front of intervals.icu, stopped the request before it reached intervals.icu, so this is not an API key problem. Wait a few minutes and retry. See operations.md.
Client can't connect (401 or unsupported protocol version): Each refused /mcp request writes one mcp_rejected line to the server log with its status, JSON-RPC code and, when the client sent it, its name. A 401 means the bearer token is missing or wrong. Code -32022 means the client's envelope names an MCP revision the server does not serve. See operations.md.
Is the server up and reachable? curl https://your-public-url/health. It answers without touching the intervals.icu API, so it works even when your rate limit is exhausted.
Client re-prompts for read tools after I granted them — A release likely renamed a tool or changed its input schema; grants are stored per tool identity, so that drops the grant. Releases say so in the changelog. Otherwise persistence lives in the client — check both connector-level and per-tool settings. See docs/tools.md.
MIT