intervals-icu-mcp

Servidor MCP Intervals.icu de leitura/escrita — mais de 55 ferramentas para atividades, streams, bem-estar, calendário, equipamentos e zonas esportivas, além de geração de treinos estruturados para ciclismo, corrida e natação.

Documentação

Servidor MCP Intervals.icu

intervals-icu-mcp demo

Um servidor Model Context Protocol (MCP) para integração com Intervals.icu. Acesse seus dados de treino, métricas de bem-estar e análises de desempenho através do Claude, ChatGPT e outros LLMs.

Originalmente baseado em eddmann/intervals-icu-mcp (licenciado sob MIT). Este projeto é uma continuação independente com correções significativas de bugs e novos recursos — consulte CHANGELOG.md para detalhes.

Tests intervals-icu-mcp MCP server License: MIT Docker

Visão Geral

62 ferramentas abrangendo atividades, análise de atividades, mensagens de atividades, perfil do atleta, bem-estar, eventos/calendário, curvas de desempenho, biblioteca de treinos, equipamentos, configurações de esporte e itens personalizados — além de 4 Recursos MCP (perfil do atleta, sintaxe de treinos, categorias de eventos, esquemas de itens personalizados) e 7 Prompts MCP (análise de treino, verificação de recuperação, planejamento semanal e mais). Consulte Ferramentas Disponíveis para o detalhamento por categoria.

Início Rápido

Install in Cursor

Ou para o Claude Desktop, em 30 segundos:

  1. Obtenha sua chave de API e ID do atleta
  2. Adicione isto à configuração do seu Claude Desktop:
{
  "mcpServers": {
    "intervals-icu": {
      "command": "uvx",
      "args": ["intervals-icu-mcp"],
      "env": {
        "INTERVALS_ICU_API_KEY": "your-api-key-here",
        "INTERVALS_ICU_ATHLETE_ID": "i123456"
      }
    }
  }
}
  1. Reinicie o Claude e pergunte "Mostre-me minhas atividades dos últimos 7 dias."

Prefere Claude Code, Cursor ou ChatGPT? Consulte Configuração do Cliente. Quer executar a partir do código-fonte ou com Docker? Consulte Instalação e Configuração.

Pré-requisitos

Instale o uv — ele gerencia Python, dependências e execução em uma única ferramenta. brew install uv no macOS/Linux, ou powershell -c "irm https://astral.sh/uv/install.ps1 | iex" no Windows. A partir daí, uvx baixa Python e o pacote automaticamente. Docker também é suportado como alternativa.

Configuração da Chave de API do Intervals.icu

Antes da instalação, obtenha sua chave de API do Intervals.icu:

  1. Vá para https://intervals.icu/settingsDesenvolvedorCriar Chave de API.
  2. Copie a chave e anote seu ID do Atleta na URL do seu perfil (formato: i123456).

Instalação e Configuração

Nada para instalar separadamente se você usar a configuração recomendada. uvx (que acompanha o uv) baixa e armazena em cache automaticamente o pacote intervals-icu-mcp na primeira vez que seu cliente MCP o inicia — basta colar o trecho de configuração de Configuração do Cliente no seu cliente e pronto.

Alternativa: a partir do código-fonte — para desenvolvimento ou modificações locais
git clone https://github.com/hhopke/intervals-icu-mcp.git
cd intervals-icu-mcp
uv sync
uv run intervals-icu-mcp-auth  # interactive credential setup; or create .env manually:
#   INTERVALS_ICU_API_KEY=your_api_key_here
#   INTERVALS_ICU_ATHLETE_ID=i123456

Em seguida, aponte seu cliente MCP para este checkout — consulte o trecho A partir do código-fonte em cada cliente abaixo.

Alternativa: Docker
docker build -t intervals-icu-mcp .

# Interactive credential setup (creates intervals-icu-mcp.env in the current directory):
touch intervals-icu-mcp.env  # pre-create the file so Docker mounts it as a file, not a dir
docker run -it --rm \
  -v "$(pwd)/intervals-icu-mcp.env:/app/.env" \
  --entrypoint= intervals-icu-mcp:latest \
  python -m intervals_icu_mcp.scripts.setup_auth

Ou crie intervals-icu-mcp.env manualmente (mesmo formato do .env acima).

Em seguida, aponte seu cliente MCP para a imagem Docker — consulte o trecho Docker em cada cliente abaixo.

Configuração do Cliente

O servidor fala MCP via stdio e funciona com qualquer cliente compatível. Clique em um cliente para expandir. Se você seguiu o Início Rápido (uvx), use o primeiro bloco de configuração; se usou a alternativa de código-fonte ou Docker acima, use a variante correspondente dentro do mesmo bloco recolhível.

Claude Desktop

Adicione ao seu arquivo de configuração:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "intervals-icu": {
      "command": "uvx",
      "args": ["intervals-icu-mcp"],
      "env": {
        "INTERVALS_ICU_API_KEY": "your-api-key-here",
        "INTERVALS_ICU_ATHLETE_ID": "i123456"
      }
    }
  }
}

A partir do código-fonte (requer git clone + uv sync + uv run intervals-icu-mcp-auth):

{
  "mcpServers": {
    "intervals-icu": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/intervals-icu-mcp", "intervals-icu-mcp"]
    }
  }
}

Docker:

{
  "mcpServers": {
    "intervals-icu": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-v", "/ABSOLUTE/PATH/TO/intervals-icu-mcp.env:/app/.env", "intervals-icu-mcp:latest"]
    }
  }
}
Claude Code

Registre o servidor como um servidor MCP no escopo do usuário:

claude mcp add intervals-icu --scope user \
  --env INTERVALS_ICU_API_KEY=your-key \
  --env INTERVALS_ICU_ATHLETE_ID=i123456 \
  -- uvx intervals-icu-mcp

Em seguida, em qualquer sessão do Claude Code, execute /mcp para confirmar que intervals-icu está conectado.

Cursor

Adicione a ~/.cursor/mcp.json (ou ao .cursor/mcp.json local do projeto):

{
  "mcpServers": {
    "intervals-icu": {
      "command": "uvx",
      "args": ["intervals-icu-mcp"],
      "env": {
        "INTERVALS_ICU_API_KEY": "your-api-key-here",
        "INTERVALS_ICU_ATHLETE_ID": "i123456"
      }
    }
  }
}

Reinicie o Cursor e abra Configurações → MCP para verificar se o servidor está listado.

ChatGPT — requer um plano pago, Modo Desenvolvedor e uma URL publicamente acessível (passo a passo ainda não verificado de ponta a ponta)

O fluxo do conector MCP personalizado do ChatGPT requer executar o servidor via HTTP e expô-lo através de um túnel, depois registrar a URL nas configurações do Modo Desenvolvedor do ChatGPT. Consulte docs/chatgpt-connector.md para o passo a passo completo, requisitos de plano e notas de segurança.

Uso

Peça ao Claude para interagir com seus dados do Intervals.icu em linguagem natural. Alguns prompts iniciais:

"Show me my activities from the last 30 days"
"Am I overtraining? Check my CTL, ATL, and TSB"
"How's my recovery this week? Show HRV and sleep trends"
"Create a sweet spot cycling workout for tomorrow"
"What's my 20-minute power and FTP?"

Para o catálogo completo de exemplos de prompts por categoria, consulte docs/examples.md.

Ferramentas Disponíveis

62 ferramentas, 4 recursos e 7 modelos de prompt. Resumo em uma linha abaixo — referência completa em docs/tools.md.

CategoriaFerramentasResumo
Atividades12Consultar, pesquisar, atualizar, excluir, baixar atividades
Análise de Atividades8Streams, intervalos, melhores esforços, histogramas
Mensagens de Atividades2Ler e publicar notas/comentários/feedback do treinador em atividades
Atleta3Perfil, análise CTL/ATL/TSB e séries temporais de gráfico de condicionamento
Bem-estar3VFC, sono, métricas de recuperação
Eventos / Calendário11Treinos planejados, corridas, notas, periodização ATP (operações em lote suportadas)
Desempenho / Curvas3Curvas de potência, FC e ritmo com zonas
Biblioteca de Treinos2Navegar por pastas de treinos e planos de treinamento
Gerenciamento de Equipamentos6Rastrear equipamentos e lembretes de manutenção
Configurações de Esporte5FTP, FTHR, limiares de ritmo e zonas
Itens Personalizados5Personalizações do usuário: gráficos, campos, zonas e painéis personalizados

Modo de Segurança de Exclusão

Ferramentas destrutivas são controladas pela variável de ambiente opcional INTERVALS_ICU_DELETE_MODE (safe / full / none, padrão safe) — uma proteção no lado do servidor fora do alcance do modelo, para que ferramentas não registradas não possam ser invocadas. Consulte docs/tools.md para a tabela completa de modos, envelope de resposta e justificativa do buffer de TZ.

Implantação Remota (HTTP / SSE)

O servidor executa via stdio por padrão — o transporte correto para clientes locais como Claude Desktop, Claude Code e Cursor. Transportes HTTP e SSE estão disponíveis para uso remoto ou hospedado.

⚠️ O MCP não possui autenticação integrada — nunca exponha um servidor em modo HTTP a uma rede não confiável sem um túnel (Tailscale, Cloudflare Tunnel) ou um proxy reverso com autenticação.

Consulte docs/remote-deployment.md para flags de transporte e o modelo de segurança completo.

Documentação

Contribuindo

Issues e pull requests são bem-vindos. Antes de abrir um PR, execute make can-release localmente para corresponder ao que o CI aplica (ruff, pyright, pytest). Para novas ferramentas, siga o padrão em .claude/skills/add-tool/SKILL.md e adicione um arquivo de teste com mock respx junto à implementação.

Licença

Licença MIT — consulte o arquivo LICENSE para detalhes.

Aviso Legal

Este projeto não é afiliado, endossado ou patrocinado pela Intervals.icu. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários.