Hevy MCP

Conecte sua IA favorita ao Hevy

Documentação

Servidor Hevy MCP

Converse com seus dados de treino do Hevy usando Claude, Cursor, Codex e outros clientes MCP.

npm version npm downloads Build and Test Codecov GitHub stars Hosted on Cloudflare License: MIT MCP Toplist

Conecte-se ao MCP hospedado · Use o Hevy CLI · Assista à demonstração de 18 segundos · Explore todas as 23 ferramentas · Documentação

Hevy CLI

Prefere o terminal? O pacote separado @chrisdoc/hevy-cli lê treinos, rotinas, exercícios e medidas corporais diretamente da API do Hevy, e pode criar ou atualizar esses recursos com confirmação explícita. Exclusão não é suportada.

npm install -g @chrisdoc/hevy-cli
export HEVY_API_KEY=your-hevy-api-key

hevy workouts list --page-size 10
hevy summary --weeks 4

Adicione --json a qualquer comando para scripts e pipelines. O CLI é um cliente independente da API do Hevy, não um wrapper MCP. Consulte packages/cli/README.md para a referência completa de comandos, comportamento de paginação e códigos de saída.

hevy-mcp é um servidor de código aberto do Model Context Protocol (MCP) para o aplicativo de fitness e registro de treinos Hevy. Ele permite que assistentes de IA leiam, analisem, criem e atualizem seus treinos, rotinas, modelos de exercícios e medidas corporais do Hevy por meio de requisições autenticadas à API do Hevy.

O adaptador Node stdio/HTTP e o Cloudflare Worker compartilham as mesmas ferramentas MCP. Consulte modos de implantação para escolher um transporte, ou arquitetura para detalhes sobre propriedade do workspace, escopos de execução e APIs de incorporação suportadas.

Uma chave de API do Hevy, disponível com o Hevy PRO, é necessária.

Veja em ação

Hevy MCP demo showing an AI assistant analyzing six weeks of Hevy training data

Clique na prévia para reproduzir a demonstração completa de 18 segundos.

Na demonstração, o assistente recupera dados reais do Hevy e responde a uma pergunta de treino em várias partes com evidências do histórico de treinos do usuário.

O que você pode fazer com ele?

  • Analisar progresso de treino: resuma de 1 a 12 semanas de treinos e medidas corporais em uma única chamada de ferramenta.
  • Fazer perguntas em linguagem natural: encontre sessões recentes, exercícios treinados com frequência, lacunas de consistência, detalhes de rotinas ou histórico de exercícios.
  • Planejar e registrar treinos: crie ou atualize treinos, rotinas, pastas de rotinas, exercícios personalizados e medidas corporais.
  • Buscar sem respostas enormes: descubra rotinas e modelos de exercícios com resultados compactos e amigáveis para IA.
  • Conectar-se pelo seu cliente MCP preferido: use o endpoint Streamable HTTP hospedado ou execute localmente com Codex, Claude Desktop, Cursor e outros clientes.
  • Começar sem instalar nada: conecte-se diretamente ao Cloudflare Worker de produção—sem necessidade de Node.js, download de pacotes ou contêiner Docker.
  • Manter controle local quando quiser: execute o mesmo servidor com npx, bunx, ou a imagem Docker oficial.

Experimente perguntar:

Analise meu treino nas últimas seis semanas. Mostre treinos por semana, meus exercícios mais treinados com frequência, lacunas ou inconsistências óbvias, e cite as evidências de treino que você usou.

Encontre minha rotina de dia de empurrar e mostre seus exercícios e séries.

Compare minhas medidas corporais recentes com minha consistência de treino.

Crie um treino concluído a partir da minha rotina salva. Peça-me os resultados de séries ausentes antes de gravar no Hevy.

Integração com Claude

O repositório inclui um plugin para Claude que se conecta ao endpoint MCP hospedado com OAuth sem incorporar a chave de API do Hevy do usuário.

Claude.ai e Claude Desktop

No Claude, abra Configurações → Conectores → Adicionar conector personalizado e insira:

https://mcp.hevy-mcp.dev/mcp

Conclua o fluxo OAuth e insira a chave de API do Hevy quando solicitado. O mesmo endpoint remoto pode ser usado pelo Claude Desktop e outros clientes que suportam conectores MCP remotos.

Claude Code e Cowork

O plugin do Claude é definido por .claude-plugin/plugin.json e .mcp.json. Instale-o a partir deste repositório público ou do Diretório de Plugins do Claude após a publicação. Ele adiciona o conector Hevy MCP hospedado e a habilidade de treino do Hevy.

Consulte a política de privacidade para detalhes sobre o tratamento de dados do serviço hospedado.

Início rápido

1. Obtenha sua chave de API do Hevy

Crie uma chave de API nas configurações de API do Hevy e guarde-a em um local seguro. O acesso à API atualmente exige uma assinatura Hevy PRO.

2. Conecte hevy-mcp ao seu cliente

O endpoint hospedado no Cloudflare é a forma mais rápida de começar. Ele roda remotamente, então seu cliente não precisa de Node.js, Bun, Docker ou um processo de servidor local.

Conecte-se ao endpoint hospedado

URL de produção:

https://mcp.hevy-mcp.dev/mcp

O endpoint usa Streamable HTTP. Envie sua chave de API do Hevy como um token bearer em cada requisição.

Codex

O Codex CLI, o aplicativo desktop Codex e a extensão de IDE compartilham a mesma configuração MCP. Disponibilize sua chave de API do Hevy no ambiente que inicia o Codex e adicione o servidor hospedado:

export HEVY_API_KEY=your-hevy-api-key
codex mcp add hevy \
  --url https://mcp.hevy-mcp.dev/mcp \
  --bearer-token-env-var HEVY_API_KEY

O Codex armazena o nome da variável de ambiente, não a chave em si, em sua configuração MCP. Reinicie o Codex ou inicie uma nova sessão e execute codex mcp list para verificar se o servidor está configurado.

Outros clientes Streamable HTTP

Clientes que aceitam uma URL MCP remota e cabeçalhos fixos geralmente usam este formato:

{
	"mcpServers": {
		"hevy": {
			"url": "https://mcp.hevy-mcp.dev/mcp",
			"headers": {
				"Authorization": "Bearer your-hevy-api-key"
			}
		}
	}
}

As chaves de configuração exatas variam por cliente. O servidor hospedado exige suporte a Streamable HTTP e um cabeçalho Authorization fixo.

[!IMPORTANT] Trate o valor bearer como uma senha. O Worker o valida com o Hevy em cada requisição, não o armazena e o encaminha ao Hevy apenas como o cabeçalho api-key necessário.

Execute localmente

Escolha stdio local se preferir executar o servidor em sua própria máquina ou se seu cliente não puder anexar um cabeçalho de autorização fixo a requisições MCP remotas.

Codex
codex mcp add hevy \
  --env HEVY_API_KEY=your-hevy-api-key \
  -- npx -y hevy-mcp
Claude Desktop ou Cursor

Adicione esta entrada mcpServers à configuração do seu cliente:

{
	"mcpServers": {
		"hevy": {
			"command": "npx",
			"args": ["-y", "hevy-mcp"],
			"env": {
				"HEVY_API_KEY": "your-hevy-api-key"
			}
		}
	}
}
Google Antigravity

Há duas maneiras de configurar o servidor Hevy MCP para Google Antigravity (agy):

Opção A: Instalação Automática do Plugin (Recomendada)

Isso utiliza o sistema de plugins integrado:

O plugin lê o mcp_config.json na raiz do repositório para iniciar o servidor stdio local. Essa configuração intencionalmente não contém chave de API; o servidor herda HEVY_API_KEY do ambiente do host, conforme descrito abaixo. Isso é separado da configuração manual global do usuário descrita abaixo e do .mcp.json do repositório, que configura HTTP/OAuth hospedado.

  1. Instale o plugin:

    agy plugin install https://github.com/chrisdoc/hevy-mcp
    
  2. Forneça o HEVY_API_KEY no ambiente do shell do host para que o processo filho do CLI possa herdá-lo:

    • Persistente: Salve a variável de ambiente HEVY_API_KEY nas configurações do sistema/shell:
      • macOS / Linux: Adicione-a às configurações do perfil do shell (por exemplo, ~/.zshrc ou ~/.bashrc):
        export HEVY_API_KEY="your-actual-api-key"
        
      • Windows: Adicione-a às Variáveis de Ambiente do Usuário ou do Sistema. No PowerShell, você pode executar:
        [Environment]::SetEnvironmentVariable("HEVY_API_KEY", "your-actual-api-key", "User")
        
    • Temporário (somente sessão): Se você não quiser persistir a chave, exporte-a no terminal da sessão ativa antes de executar agy:
      export HEVY_API_KEY="your-actual-api-key"
      
Opção B: Configuração Manual (Sem Plugin)

Se preferir configurá-la estaticamente pelo arquivo de configuração global:

  1. Abra seu arquivo de configuração MCP global:

    • Localização: ~/.gemini/config/mcp_config.json
  2. Adicione o bloco de configuração hevy sob a chave mcpServers. Certifique-se de mesclar esta entrada com quaisquer servidores existentes que você já configurou, em vez de substituir todo o conteúdo do arquivo:

    {
    	"mcpServers": {
    		"hevy": {
    			"command": "npx",
    			"args": ["-y", "hevy-mcp"],
    			"env": {
    				"HEVY_API_KEY": "your-actual-api-key"
    			}
    		}
    	}
    }
    

Locais comuns de configuração local:

  • Claude Desktop no macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Desktop no Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Cursor: ~/.cursor/mcp.json

Reinicie ou reconecte o cliente após salvar o arquivo.

Qualquer cliente MCP stdio

Configure seu cliente para iniciar este comando com HEVY_API_KEY no ambiente do processo filho:

npx -y hevy-mcp

npx requer Node.js 20 ou mais recente. Reinicie ou reconecte seu cliente após salvar a configuração.

Use bunx em vez disso

Requer Bun:

{
	"mcpServers": {
		"hevy": {
			"command": "bunx",
			"args": ["hevy-mcp@latest"],
			"env": {
				"HEVY_API_KEY": "your-hevy-api-key"
			}
		}
	}
}
Use Docker em vez disso

As imagens oficiais suportam linux/amd64 e linux/arm64. Mantenha o stdin aberto com -i porque o contêiner executa o servidor MCP stdio:

export HEVY_API_KEY=your-hevy-api-key
docker run -i --rm -e HEVY_API_KEY ghcr.io/chrisdoc/hevy-mcp:latest

Para um cliente MCP, armazene a chave em um arquivo de ambiente protegido e configure o cliente para iniciar o Docker:

{
	"mcpServers": {
		"hevy": {
			"command": "docker",
			"args": [
				"run",
				"-i",
				"--rm",
				"--env-file",
				"/absolute/path/to/hevy-mcp.env",
				"ghcr.io/chrisdoc/hevy-mcp:latest"
			]
		}
	}
}

Fixei uma tag de imagem exata, como ghcr.io/chrisdoc/hevy-mcp:X.Y.Z, quando precisar de atualizações reproduzíveis.

Você também pode adicionar o servidor npm a clientes suportados com add-mcp:

npx add-mcp hevy-mcp --env "HEVY_API_KEY=your-hevy-api-key"

3. Faça sua primeira pergunta

Experimente uma destas após reiniciar ou reconectar seu cliente MCP:

  • "Dê-me um resumo de treino das últimas quatro semanas."
  • "Quais rotinas tenho salvas no Hevy?"
  • "Mostre meus três treinos mais recentes."
  • "Encontre modelos de exercícios que contenham agachamento."
  • "Qual conta Hevy está conectada?"

Seu assistente deve pedir aprovação antes de ferramentas de mutação quando o cliente suportar confirmações de ferramentas.

Como funciona

Hosted:  Your AI assistant  →  Streamable HTTP  →  Cloudflare Worker  →  Hevy API
Local:   Your AI assistant  →  MCP over stdio   →  local hevy-mcp     →  Hevy API

O endpoint hospedado cria um novo servidor MCP e um novo cliente Hevy para cada requisição. A autenticação bearer direta usa a chave Hevy fornecida e armazena em cache a validação bem-sucedida por 15 minutos sem persistir a chave bruta. O OAuth, por sua vez, armazena a chave criptografada em uma concessão. Nenhum dos caminhos cria uma sessão MCP de usuário compartilhada. O servidor local segue o mesmo contrato de ferramentas, mas recebe a chave Hevy por meio do ambiente do processo.

Em ambos os modos, ferramentas de leitura recuperam dados; ferramentas de mutação criam ou substituem dados somente quando seu assistente as chama.

Prompts guiados

Estes prompts MCP fornecidos pelo servidor coordenam fluxos de trabalho comuns em várias etapas:

PromptArgumentosFluxo de trabalho
analyze-workout-progressweeks opcional de 1 a 12; padrão 4Chama get-training-summary e depois analisa a atividade de treino e as tendências de medidas corporais a partir das evidências retornadas.
create-workout-from-routineroutine_id obrigatório e start_time UTCCarrega uma rotina, coleta dados reais de séries concluídas e um horário de término e cria um treino sem inventar resultados.

Ferramentas

hevy-mcp registra 23 ferramentas. Ferramentas somente leitura são seguras para exploração; ferramentas de criação e atualização são expostas com anotações de mutação MCP para que clientes compatíveis possam solicitar confirmação.

CategoriaFerramentaDescrição
Análise de treinoget-training-summaryResuma de 1 a 12 semanas de atividade de treino e tendências de medidas corporais em uma única chamada.
Treinosget-workoutsListe os treinos na ordem da API do Hevy, não por horário de início, com detalhes de exercícios e tempos.
Treinosget-workoutObtenha detalhes completos de um treino por ID.

| Treinos | get-workout-events | Liste eventos de atualização e exclusão de treinos desde um timestamp. | | Treinos | create-workout | Crie um treino concluído no Hevy. | | Treinos | update-workout | Atualize metadados de treino por ID; is_private é obrigatório, enquanto outros campos omitidos e todos os exercícios permanecem inalterados. | | Treinos | replace-workout-exercises | Substitua todos os exercícios e séries; is_private é obrigatório e atualizado, enquanto outros metadados de treino permanecem inalterados. | | Rotinas | search-routines | Pesquise títulos de rotinas e retorne metadados compactos para descoberta. | | Rotinas | get-routines | Liste rotinas de treino personalizadas e padrão. | | Rotinas | get-routine | Obtenha uma rotina e sua configuração de exercícios por ID. | | Rotinas | create-routine | Crie uma rotina de treino reutilizável. | | Rotinas | update-routine | Substitua o conteúdo de uma rotina existente. |

| Pastas de rotinas | get-routine-folder | Obtenha os metadados de uma pasta de rotinas por ID. | | Pastas de rotinas | create-routine-folder | Crie uma pasta de rotinas. |

| Modelos de exercícios | get-exercise-template | Obtenha metadados completos de um modelo de exercício por ID. | | Modelos de exercícios | search-exercise-templates | Pesquise o catálogo completo de exercícios por substring do título. | | Modelos de exercícios | create-exercise-template | Crie um modelo de exercício personalizado. | | Histórico de exercícios | get-exercise-history | Obtenha séries realizadas no passado para um modelo de exercício. | | Medidas corporais | get-body-measurements | Liste medidas corporais com data. | | Medidas corporais | get-body-measurement | Obtenha a entrada de medida corporal para uma data. | | Medidas corporais | create-body-measurement | Crie uma medida corporal com data. | | Medidas corporais | update-body-measurement | Atualize a medida corporal para uma data existente. | | Diagnóstico | feedback | Relate uma descrição concisa e segura para a privacidade de um problema ou comportamento inesperado. |

create-routine e update-routine exigem um envelope routine de nível superior com um array exercises não vazio; cada exercício deve conter pelo menos uma série, e os campos usam snake_case em todos os níveis:

{
	"routine": {
		"title": "Full Body A",
		"folder_id": 123,
		"notes": "First four exercises are the minimum viable workout",
		"exercises": [
			{
				"exercise_template_id": "30E293E3",
				"superset_id": null,
				"rest_seconds": 120,
				"notes": "Controlled active ROM",
				"sets": [
					{
						"type": "normal",
						"rep_range": {
							"start": 6,
							"end": 10
						}
					}
				]
			}
		]
	}
}

A API do Hevy atualmente não expõe endpoints de exclusão para treinos, rotinas, pastas de rotinas, modelos de exercícios ou medidas corporais, portanto não há ferramentas de exclusão correspondentes.

Recursos

NomeURIDescrição
user-profilehevy://userPerfil de usuário autenticado do Hevy.
workout-counthevy://workout-countNúmero total de treinos na conta.
exercise-templateshevy://exercise-templatesCatálogo completo formatado de modelos de exercícios.
routine-foldershevy://routine-foldersLista completa formatada de pastas de rotinas do Hevy.

Endpoint hospedado no Cloudflare

O servidor MCP de produção está disponível em:

https://mcp.hevy-mcp.dev/mcp

É a maneira mais rápida de usar o hevy-mcp: não há nada para instalar ou manter em execução localmente, e ele expõe as mesmas 23 ferramentas do pacote npm e da imagem Docker.

O Worker do Cloudflare usa Streamable HTTP sem estado em POST /mcp. Os clientes devem enviar sua chave de API do Hevy como um cabeçalho de autorização fixo:

{
	"mcpServers": {
		"hevy": {
			"url": "https://mcp.hevy-mcp.dev/mcp",
			"headers": {
				"Authorization": "Bearer your-hevy-api-key"
			}
		}
	}
}

Nesta configuração, o valor do bearer é sua chave de API do Hevy, não um token OAuth. O Worker armazena em cache a validação bem-sucedida por 15 minutos sob uma chave com hash, não persiste a chave bruta neste caminho direto e a encaminha upstream apenas como o cabeçalho api-key exigido pelo Hevy.

OAuth para Claude.ai e outros clientes MCP remotos

O Worker de produção hospedado é implantado com uma vinculação de namespace OAUTH_KV, portanto, ele expõe uma camada OAuth 2.1 completa para clientes que não podem enviar um cabeçalho fixo, como conectores personalizados do Claude.ai. Workers auto-hospedados podem optar por seguir a configuração OAUTH_KV em CONTRIBUTING.md:

  • Metadados de descoberta RFC 8414 / RFC 9728 em /.well-known/
  • Documentos de Metadados de ID do Cliente (CIMD), com registro dinâmico de cliente (/register) como fallback e troca de token PKCE (/token)
  • Uma página /authorize onde você cola sua chave de API do Hevy uma vez; a chave é validada com o Hevy e armazenada criptografada dentro da concessão OAuth

Adicione a URL do Worker terminando em /mcp como um conector personalizado do Claude.ai e conclua o fluxo de autorização no navegador. Solicitações diretas Authorization: Bearer <hevy-api-key> continuam funcionando inalteradas — a camada OAuth é puramente aditiva. Revogar ou rotacionar sua chave do Hevy impede acessos subsequentes à API do Hevy com essa chave; isso não exclui por si só concessões armazenadas nem limpa imediatamente a validação em cache.

Os tokens de acesso OAuth duram sete dias e os tokens de atualização duram 30 dias. Isso reduz as gravações em KV de atualizações horárias frequentes, preservando a atualização automática para clientes compatíveis.

O endpoint não expõe SSE legado nem um stream de eventos GET. Sem a camada OAuth opcional, clientes que exigem descoberta OAuth, registro dinâmico, CIMD ou atualização de token não são compatíveis, a menos que possam enviar o cabeçalho personalizado fixo acima.

Auto-hospede o Worker

Um clone limpo pode implantar a configuração TypeScript portátil do Cloudflare com pnpm --dir packages/worker exec cf deploy e receber uma URL workers.dev. OAuth exige seu próprio namespace OAUTH_KV; domínios personalizados, rotas e destinos de observabilidade são configurações opcionais de propriedade da conta. Consulte CONTRIBUTING.md para configuração e para a distinção entre auto-hospedagem e os ambientes nomeados apenas para mantenedores.

Consulte CONTRIBUTING.md para implantar o Worker do Cloudflare para Streamable HTTP auto-hospedado.

Configuração avançada

ConfiguraçãoPadrãoEscopoNotas
HEVY_API_KEYNenhum; obrigatóriostdio local ou HTTPChave de API do Hevy do aplicativo Hevy. Nunca a passe em uma URL.
HEVY_MCP_API_TIMEOUT60000 msstdio localTempo limite positivo da API do Hevy em milissegundos. Valores inválidos voltam para 60 segundos.
HEVY_MCP_DEBUGDesabilitadoNode localDefina exatamente como 1 para diagnóstico limitado por privacidade em stderr. O stdout permanece reservado para MCP JSON-RPC.
HEVY_MCP_HTTP_BEARER_TOKENNenhumHTTP não loopbackObrigatório quando --host não é loopback; use um token separado, nunca a chave de API do Hevy.
HEVY_MCP_HTTP_MAX_SESSIONS100HTTP localMáximo de sessões estabelecidas, incluindo sessões em inicialização; solicitações em excesso recebem 429.
HEVY_MCP_HTTP_MAX_INITIALIZING10HTTP localMáximo de inicializações de sessão simultâneas; solicitações em excesso recebem 503 e não são enfileiradas.
HEVY_MCP_HTTP_IDLE_TIMEOUT_MS1800000 msHTTP localSessões ociosas são removidas após 30 minutos; cada solicitação de sessão redefine o temporizador.
HEVY_MCP_HTTP_BODY_TIMEOUT_MS30000 msHTTP localCorpos de solicitação travados recebem 408; valores são limitados a cinco minutos.
HEVY_MCP_TELEMETRYCompilado: ativado; fonte: desativadoNode localDefina 0 para desabilitar telemetria ou 1 para optar por execuções de fonte. As importações permanecem sem efeitos colaterais.
HEVY_MCP_TELEMETRY_DIAGNOSTICSHabilitadoNode localDefina exatamente como 0 para manter a telemetria estrutural enquanto suprime mensagens de exceção e rastreamentos.
XDG_CACHE_HOME~/.cachestdio localAltera a raiz para o cache de verificação de atualização do npm em hevy-mcp/update-check.json.
SENTRY_DSNDSN do projeto Sentry SaaS empacotadoTelemetria Node local opcionalSubstituição do DSN do projeto Sentry. Um valor vazio desabilita a exportação do Sentry. O Worker não importa telemetria Node.
SENTRY_RELEASEhevy-mcp@<installed-version>Telemetria Node local opcionalSubstitui o rótulo de versão anexado a eventos de erro Sentry locais.
SENTRY_ENVIRONMENTCompilado: production; fonte: developmentTelemetria Node local opcionalSubstitui o rótulo de ambiente para eventos de erro Sentry habilitados.
-h, --helpN/ACLI stdio localImprime opções compatíveis e sai.
-v, --versionN/ACLI stdio localImprime a versão instalada e sai.

O executável Node local usa stdio por padrão. Opte pelo Streamable HTTP local com:

HEVY_API_KEY=your-hevy-api-key npx hevy-mcp --transport http --host 127.0.0.1 --port 3000

O endpoint MCP local é http://127.0.0.1:3000/mcp; binds não loopback exigem a variável de ambiente separada HEVY_MCP_HTTP_BEARER_TOKEN. Uma implantação Docker deve publicar a porta explicitamente:

docker run --rm -p 3000:3000 -e HEVY_API_KEY -e HEVY_MCP_HTTP_BEARER_TOKEN \\
  ghcr.io/chrisdoc/hevy-mcp:latest --transport http --host 0.0.0.0 --port 3000

Este modo HTTP Node é distinto do endpoint HTTP do Worker do Cloudflare sem estado descrito acima: o servidor Node possui sessões de cliente com estado, enquanto o Worker é projetado para implantação hospedada e não importa código Node.

Comportamento do cache

search-exercise-templates e hevy://exercise-templates compartilham um cache de catálogo em memória com escopo de servidor:

  • As entradas duram cinco minutos, e o cache contém no máximo um catálogo.
  • Solicitações de catálogo simultâneas compartilham uma busca em andamento quando possível.
  • search-exercise-templates aceita refresh: true para invalidar o cache.
  • Cada solicitação de Worker hospedado recebe um cache de catálogo novo, evitando compartilhamento entre chaves.
  • Cada sessão HTTP local possui seu próprio servidor MCP e cache de catálogo; os caches não são compartilhados entre sessões.

Telemetria Node local e privacidade

As builds publicados do Node habilitam telemetria do projeto por padrão. Execuções de código-fonte não compilado (como scripts de desenvolvimento e de sonda) a desabilitam, a menos que HEVY_MCP_TELEMETRY=1 seja definido explicitamente. Isso é apenas comportamento local do Node; o Worker do Cloudflare não importa telemetria do Node. Defina HEVY_MCP_TELEMETRY=0 antes de iniciar o Node para desabilitar toda a telemetria do projeto em ambos os modos. Em builds publicados, todo valor exceto o literal 0 mantém o padrão habilitado. A camada de ciclo de vida do Node com escopo adquire telemetria; importar o pacote permanece livre de efeitos colaterais. Execuções de código-fonte habilitadas usam o ambiente Sentry development; builds publicados usam production. Defina SENTRY_ENVIRONMENT para substituir esse rótulo, por exemplo, para qa ou staging. A configuração principal tem precedência sobre SENTRY_DSN e credenciais empacotadas ou de tempo de execução OTEL_COLLECTOR_TOKEN, então o caminho desabilitado não cria exportadores de telemetria ou leitores periódicos de métricas e não faz solicitações de rede de telemetria. SENTRY_DSN permanece uma configuração exclusiva do Sentry; quando a telemetria está habilitada, um valor vazio desabilita apenas a exportação do Sentry.

Quando habilitado, erros acionáveis são enviados ao projeto Sentry configurado por SENTRY_DSN; o rastreamento de desempenho do Sentry está desabilitado. Mensagens de exceção e pilhas são limitadas e higienizadas antes da exportação. Defina HEVY_MCP_TELEMETRY_DIAGNOSTICS=0 para manter rastreamentos estruturais e métricas enquanto suprime esses detalhes. Rastreamentos e métricas continuam sendo enviados ao coletor em https://otel.chrisdoc.dev/v1/traces e https://otel.chrisdoc.dev/v1/metrics. O projeto usa seu próprio OpenTelemetry Collector; destinos downstream são configurados nessa infraestrutura. Métricas são exportadas a cada 30 segundos. Consulte documentação de observabilidade para exportação OTLP do Cloudflare e rastreamento de domínio.

A chave de API bruta nunca é exportada. A telemetria comum de ferramentas pode incluir um pseudônimo HMAC curto e determinístico derivado da chave para correlação; feedback usa um caminho separado não observado. Um ID de diagnóstico por falha e um ID de rastreamento OTel podem ser anexados a erros acionáveis. Consulte dicionário de dados de telemetria para os campos de telemetria limitados e o contrato de privacidade.

Mensagens de exceção e pilhas são tratadas como detalhes de diagnóstico: são limitadas em comprimento, higienizadas para credenciais, URLs e caminhos locais de diretório inicial, e removidas completamente quando HEVY_MCP_TELEMETRY_DIAGNOSTICS=0. Prompts, argumentos de ferramentas, resultados de ferramentas, corpos de solicitação, chaves de API, identificadores/consultas brutos, datas exatas, conteúdo de treinos/rotinas/pastas/modelos/medições corporais, nomes/títulos/descrições/notas, valores de medição, metadados arbitrários de cliente e caminhos de endpoint não normalizados permanecem proibidos.

Segurança e mutações

  • Mantenha HEVY_API_KEY fora do controle de versão, URLs, logs e capturas de tela.
  • Clientes locais fornecem a chave por meio do ambiente do processo filho.
  • Clientes hospedados diretos enviam a chave Hevy apenas no cabeçalho Authorization: Bearer; a validação bem-sucedida é armazenada em cache, mas a chave bruta não é persistida. Concessões OAuth armazenam a chave criptografada. Ambos os caminhos a enviam para a Hevy apenas como o cabeçalho api-key.
  • Solicitações MCP do navegador devem ser de mesma origem ou corresponder a uma origem exata na lista de permissões. A lista de permissões padrão inclui Claude.ai, ChatGPT, VS Code para a Web e github.dev; implantações auto-hospedadas podem substituí-la com MCP_ALLOWED_ORIGINS. Consulte modos de implantação para a exceção do formulário de autorização OAuth.
  • O desenvolvimento local pode copiar .dev.vars.example para .dev.vars para desabilitar a validação de Origem para o MCP Inspector. Workers de pré-visualização de PR usam a mesma configuração somente de desenvolvimento porque suas origens de navegador são dinâmicas. Nunca defina MCP_DISABLE_ORIGIN_CHECK=true em um Worker de produção.
  • Operações de criação podem produzir duplicatas quando repetidas. Atualizações de rotina substituem conteúdo; atualizações de metadados de treino preservam campos e exercícios omitidos, enquanto replace-workout-exercises substitui todos os exercícios e séries. Revise as entradas das ferramentas e use confirmações do cliente.

Solução de problemas

  • O servidor não aparece: reinicie ou reconecte seu cliente MCP após alterar sua configuração.
  • npx falha: confirme que o Node.js 20 ou mais recente está instalado e execute npx -y hevy-mcp --version em um terminal.
  • O Codex não consegue ver o servidor: execute codex mcp list e inicie uma nova sessão do Codex após confirmar que a entrada hevy existe.
  • A API da Hevy retorna 401: a chave é inválida, expirada, revogada ou mal configurada. Verifique ou crie uma chave ativa em configurações da API da Hevy e reinicie o cliente.
  • A autenticação hospedada falha: confirme que a chave pertence a uma conta Hevy PRO e é enviada como Authorization: Bearer <HEVY_API_KEY>.
  • A autenticação local falha: confirme que a chave está ativa e disponível para o processo filho do MCP como HEVY_API_KEY.
  • Precisa de diagnósticos: defina HEVY_MCP_DEBUG=1. A saída de diagnóstico vai para stderr e não interfere nas mensagens MCP em stdout.

Se você encontrar um bug ou tiver uma solicitação de recurso, abra uma issue.

Contribuindo

Contribuições são bem-vindas. Configuração do desenvolvedor, caminhos de teste, fluxos de trabalho de cliente gerado, implantação do Worker do Cloudflare e regras de pull request estão documentados em CONTRIBUTING.md.

Use mise para as versões fixadas de Node.js e pnpm e execute o caminho de teste unitário determinístico. Ele não precisa de uma chave de API Hevy ativa:

MISE_AUTO_INSTALL=false mise install
MISE_AUTO_INSTALL=false mise exec -- pnpm install
MISE_AUTO_INSTALL=false mise exec -- pnpm run test:unit

Licença e agradecimentos