mcpField
I
intervals-mcp

intervals-mcp

ローカル
github.comヘルスケア01 日前に更新

intervals-mcp について

intervals-mcpは、intervals.icuに保存されたランニングデータを単一ユーザー向けに取得・分析するリモートMCPサーバーです。サービスに直接接続し、インタラクティブなMCP Appsを備えています。現在、Stravaとは通信しません。

主な機能

  1. 01intervals.icuのランニングデータ取得
  2. 02ランニングデータ分析ツール
  3. 03インタラクティブなMCP Apps
  4. 04起動時の設定チェック
  5. 05ヘルス状態とレート制限の確認

活用シーン

  1. 01MCPクライアントでランニング履歴を確認
  2. 02AIツールでintervals.icuのデータを分析
  3. 03MCP Appsでランニングデータの操作を表示
  4. 04サーバー設定と稼働状況を監視

MCP 対応

Streamable HTTPエンドポイントを通じて、MCPクライアントにツールとインタラクティブなMCP Appsを提供します。設定済みのintervals.icu APIキーを使用し、Bearerトークンによるアクセス制限も設定できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ljcl-intervals": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"INTERVALS_API_KEY",
"-e",
"INTERVALS_ATHLETE_ID",
"-e",
"TZ",
"-e",
"MCP_AUTH_TOKEN",
"-e",
"PORT",
"-e",
"PUBLIC_URL",
"ghcr.io/ljcl/intervals-mcp:2.9.2"
],
"env": {
"INTERVALS_API_KEY": "<INTERVALS_API_KEY>",
"INTERVALS_ATHLETE_ID": "<INTERVALS_ATHLETE_ID>",
"TZ": "<TZ>",
"MCP_AUTH_TOKEN": "<MCP_AUTH_TOKEN>",
"PORT": "<PORT>",
"PUBLIC_URL": "<PUBLIC_URL>"
}
}
}
}
起動コマンドdocker run -i --rm -e INTERVALS_API_KEY -e INTERVALS_ATHLETE_ID -e TZ -e MCP_AUTH_TOKEN -e PORT -e PUBLIC_URL ghcr.io/ljcl/intervals-mcp:2.9.2
設定が必要な環境変数
INTERVALS_API_KEYシークレットintervals.icu personal API key (Settings, Developer Settings)
INTERVALS_ATHLETE_IDAthlete id: 0 (default, the API key's own athlete) or e.g. i12345
TZIANA time zone for local dates, e.g. Australia/Sydney; unset or UTC follows the athlete's intervals.icu time zone (Etc/UTC pins UTC)
MCP_AUTH_TOKENシークレットShared secret (32+ characters) gating /mcp and detailed /health (recommended when internet-facing)
PORTServer port, 1-65535 (default 3000)
PUBLIC_URLPublic URL, used only to warn when /mcp is exposed without MCP_AUTH_TOKEN

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/ljcl/intervals-mcp:2.9.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

Intervals Extra (intervals-mcp)

CI Storybook License: MIT

intervals.icu のランデータと分析に対応する、インタラクティブな MCP Apps を備えたシングルユーザー向けリモート MCP サーバーです。

すべてのテキストツールと MCP App は intervals.icu と直接通信し、 実際のアカウントで検証されています。全カタログについては docs/tools.md をご覧ください。設定は起動時に確認されます。無効な変数があると、その変数名を示すメッセージとともにサーバーが停止し、キーが設定されているかどうかは /health で報告されます。

履歴。 このプロジェクトは strava-mcp として始まり、データソースを intervals.icu に移行しました。現在、サーバー内で Strava と通信する箇所はありません。

セットアップ

1. intervals.icu API キーを取得する
  1. intervals.icu にログインします
  2. Settings、Developer Settings の順に開きます
  3. 個人用 API キーをコピーします
2. 環境を設定する
cp .env.example .env

.env を編集し、値を設定します。

INTERVALS_API_KEY=your_api_key

すべての変数は docs/operations.md に記載されています。

3. 実行する

ローカル開発(Bun が必要です):

bun install
bun run dev

Docker:

docker compose up -d

ビルド済みイメージを使う場合は、最新リリースの ghcr.io/ljcl/intervals-mcp:latest をプルし、 (MCP registry では io.github.ljcl/intervals-mcp としても公開されています)、ビルドする代わりに compose の image: をそのイメージに指定します。API キーは引き続きご自身で用意する必要があります。:edge は未リリースの main を追跡します。公開イメージには SBOM/来歴のアテステーションが付属しており、検証できます。詳しくは operations.md をご覧ください。

GET /health は intervals.icu API リクエストを消費せずに稼働状態を報告します。 MCP_AUTH_TOKEN が設定されている場合は、設定とレート制限の状態も報告します。レスポンスの形式と監視方法については、operations.md をご覧ください。

任意のクライアントを http://localhost:3000/mcp に接続してください。リポジトリの構成、タスクランナー、テスト、カバレッジのゲート、Storybook のワークフローについては、docs/development.md をご覧ください。 エージェントの規約は AGENTS.md に記載されています。

AI ツールへの接続

ほとんどの AI ツール(Claude Desktop、Claude Code など)から MCP サーバーに接続するには HTTPS URL が必要です。 サーバーはローカルネットワーク上で実行されるため、外部に公開するにはトンネルが必要です。

Tailscale Funnel(推奨)

Tailscale Funnel は設定不要で、ローカルポートを HTTPS 経由でインターネットに公開します。

tailscale funnel --bg 3000
# → https://your-machine.tail1234.ts.net

.env の PUBLIC_URL に、生成された URL を設定します。

Cloudflare Tunnel
cloudflared tunnel --url http://localhost:3000
エンドポイントの保護

トンネルを使うと、URL を知っている人なら誰でも /mcp にアクセスでき、サーバーに設定された intervals.icu API キーを使えます(キー自体が相手に公開されることはありません)。MCP_AUTH_TOKEN に 長くランダムなシークレット(openssl rand -hex 32)を設定すると、すべての /mcp リクエストで Authorization: Bearer <token> が必須になります。各クライアントの設定例では、ヘッダーを追加する場所を示しています。 このシークレットは /health の詳細情報へのアクセス制御にも使われます。 詳しくは operations.md をご覧ください。

API キーと一緒に .env に設定してください。docker-compose.yml が自動的に転送します。

AI Tool (Claude Desktop, Claude Code, etc.)
    │  HTTPS
HTTPS Tunnel (Tailscale / Cloudflare)
    │  HTTP (localhost:3000)
intervals-mcp Server (Docker / Bun)
    │  HTTPS
intervals.icu API
クライアントの設定

このサーバーは、Streamable HTTP トランスポートに対応するすべての MCP クライアントで動作します。以下の各設定例では、https://your-public-url をトンネルの URL(またはローカル開発の場合は http://localhost:3000)に置き換えてください。また、MCP_AUTH_TOKEN を設定した場合に限り、Authorization ヘッダーを含めてください。

Claude Desktop

Claude の設定ファイル(macOS の場合は ~/Library/Application Support/Claude/claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "intervals-mcp": {
      "type": "url",
      "url": "https://your-public-url/mcp",
      "headers": { "Authorization": "Bearer your-mcp-auth-token" }
    }
  }
}

新しい設定を読み込むため、Claude Desktop を再起動してください。

Claude Code
claude mcp add --transport http intervals-mcp https://your-public-url/mcp \
  --header "Authorization: Bearer your-mcp-auth-token"
Cursor

プロジェクトの .cursor/mcp.json(すべてのプロジェクトに適用する場合は ~/.cursor/mcp.json)に追加します:

{
  "mcpServers": {
    "intervals-mcp": {
      "url": "https://your-public-url/mcp",
      "headers": { "Authorization": "Bearer your-mcp-auth-token" }
    }
  }
}
VS Code

ワークスペースの .vscode/mcp.json に追加します(または、コマンドパレットから MCP: Add Server を実行します):

{
  "servers": {
    "intervals-mcp": {
      "type": "http",
      "url": "https://your-public-url/mcp",
      "headers": { "Authorization": "Bearer your-mcp-auth-token" }
    }
  }
}
その他のクライアント(汎用 Streamable HTTP)

Streamable HTTP に対応するクライアントであれば、/mcp エンドポイントに直接接続できます。このエンドポイントは 2026-07-28 リビジョンを提供します。クライアントは、io.modelcontextprotocol/* エンベロープキーと Mcp-Method/Mcp-Name ヘッダーを含むステートレスリクエストを送信します(server/discover で機能を通知します)。2025 年当時のクライアント(initialize で接続を開始するもの)もステートレスに提供されます。これは claude.ai が MCP Apps をその方法で読み込むためですが、書き込みツールは利用できません。update-activity には 2026-07-28 対応クライアントが必要です。Accept: application/json, text/event-stream ヘッダーを付けて JSON-RPC メッセージを POST してください。プロトコルの詳細については、docs/architecture.md をご覧ください。

ツール

ツールの全カタログ、プロンプト、権限の動作、リクエスト例は docs/tools.md に記載されています。すべてのテキストツールと各 MCP App のデータハンドラーは、intervals.icu と直接通信します。

ドキュメント

ドキュメント内容
docs/tools.mdツールの全カタログ、プロンプト、権限の動作、リクエスト例
docs/operations.md環境変数、API キー、ヘルスエンドポイント、レート制限、エンドポイントのセキュリティ
docs/architecture.mdサーバーアーキテクチャ:トランスポート、HTTP レイヤー、キャッシュ、エラー分類、分析計算
docs/api-notes.mdintervals.icu API の呼び出し:認証、エンドポイント、フェーズ 1 および 2 で検証済みの動作
docs/mcp-apps.mdMCP App パッケージ:共有シェル、モバイル、テーマ設定、各アプリの詳細
docs/development.mdモノレポの仕組み:Turborepo、カバレッジゲート、Storybook ゲート、Docker ビルド
docs/releasing.mdリリースの自動化:Conventional Commit に準拠した PR タイトル、release-please、公開
docs/project.mdイシュー追跡とプロジェクトボード
docs/Intervals_MCP_Server.mdこのサーバーを使用する Claude プロジェクトのプロジェクトナレッジとしてアップロードする機能リファレンス

PR はスカッシュマージされ、PR タイトルが main 上のコミットになります。そのため、Conventional Commit の形式で記述してください(fix: はパッチ、feat: はマイナー、! または BREAKING CHANGE: フッターはメジャー、chore:/docs:/refactor:/ci: はリリースなし)。CI チェックで形式に準拠しないタイトルは拒否されます。詳しくは docs/releasing.md をご覧ください。

トラブルシューティング

サーバーが起動時に終了する: 修正が必要な変数名が、問題のある変数ごとに1行で表示されます。operations.md を参照してください。

AI ツールがサーバーに接続できない — MCP では HTTPS URL が必要です。トンネル(Tailscale Funnel または Cloudflare Tunnel)を使ってローカルサーバーを公開してください。AI ツールへの接続 を参照してください。

API キーのエラー: まず /health を確認してください。api_key_configured で、サーバーにキーが設定されているかどうかがわかります。api_key_configured が true なのに呼び出しが失敗する場合は、キーが間違っているか、取り消されている可能性があります。intervals.icu の Settings、Developer Settings で新しいキーを生成し、INTERVALS_API_KEY を更新してください。operations.md を参照してください。

今日のランが表示されない、または日付が1日ずれている: /health の time_zone と time_zone_source を確認してください。TZ が設定されていない(または UTC に設定されている)場合、サーバーは intervals.icu のタイムゾーンを使用します。タイムゾーンを選ぶには TZ を設定してください。operations.md を参照してください。

「Cloudflare … がチャレンジを返しました」: intervals.icu の前段にある Cloudflare が、リクエストが intervals.icu に到達する前に停止しました。したがって、これは API キーの問題ではありません。数分待ってから再試行してください。operations.md を参照してください。

クライアントが接続できない(401 または未対応のプロトコルバージョン): 拒否された /mcp リクエストごとに、ステータス、JSON-RPC コード、およびクライアントが送信した場合はその名前を含む mcp_rejected の行がサーバーログに記録されます。401 はベアラートークンがないか、誤っていることを意味します。コード -32022 は、クライアントのエンベロープに記載された MCP リビジョンをサーバーが提供していないことを意味します。operations.md を参照してください。

サーバーは稼働していて、接続可能ですか? curl https://your-public-url/health を実行してください。このエンドポイントは intervals.icu API にアクセスせずに応答するため、レート制限に達している場合でも動作します。

許可したのに、読み取りツールについてクライアントが再度確認を求める — リリースによってツール名が変更されたか、入力スキーマが変更された可能性があります。許可はツールの識別情報ごとに保存されるため、その場合は許可が無効になります。リリースノートにはその旨が記載されています。それ以外の場合、設定の保持はクライアント側で行われます。コネクターレベルとツールごとの設定の両方を確認してください。docs/tools.md を参照してください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。