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.
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
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-keynecessá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.
-
Instale o plugin:
agy plugin install https://github.com/chrisdoc/hevy-mcp -
Forneça o
HEVY_API_KEYno ambiente do shell do host para que o processo filho do CLI possa herdá-lo:- Persistente: Salve a variável de ambiente
HEVY_API_KEYnas configurações do sistema/shell:- macOS / Linux: Adicione-a às configurações do perfil do shell (por exemplo,
~/.zshrcou~/.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")
- macOS / Linux: Adicione-a às configurações do perfil do shell (por exemplo,
- 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"
- Persistente: Salve a variável de ambiente
Opção B: Configuração Manual (Sem Plugin)
Se preferir configurá-la estaticamente pelo arquivo de configuração global:
-
Abra seu arquivo de configuração MCP global:
- Localização:
~/.gemini/config/mcp_config.json
- Localização:
-
Adicione o bloco de configuração
hevysob a chavemcpServers. 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:
| Prompt | Argumentos | Fluxo de trabalho |
|---|---|---|
analyze-workout-progress | weeks opcional de 1 a 12; padrão 4 | Chama 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-routine | routine_id obrigatório e start_time UTC | Carrega 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.
| Categoria | Ferramenta | Descrição |
|---|---|---|
| Análise de treino | get-training-summary | Resuma de 1 a 12 semanas de atividade de treino e tendências de medidas corporais em uma única chamada. |
| Treinos | get-workouts | Liste os treinos na ordem da API do Hevy, não por horário de início, com detalhes de exercícios e tempos. |
| Treinos | get-workout | Obtenha 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
| Nome | URI | Descrição |
|---|---|---|
user-profile | hevy://user | Perfil de usuário autenticado do Hevy. |
workout-count | hevy://workout-count | Número total de treinos na conta. |
exercise-templates | hevy://exercise-templates | Catálogo completo formatado de modelos de exercícios. |
routine-folders | hevy://routine-folders | Lista 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
/authorizeonde 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ção | Padrão | Escopo | Notas |
|---|---|---|---|
HEVY_API_KEY | Nenhum; obrigatório | stdio local ou HTTP | Chave de API do Hevy do aplicativo Hevy. Nunca a passe em uma URL. |
HEVY_MCP_API_TIMEOUT | 60000 ms | stdio local | Tempo limite positivo da API do Hevy em milissegundos. Valores inválidos voltam para 60 segundos. |
HEVY_MCP_DEBUG | Desabilitado | Node local | Defina exatamente como 1 para diagnóstico limitado por privacidade em stderr. O stdout permanece reservado para MCP JSON-RPC. |
HEVY_MCP_HTTP_BEARER_TOKEN | Nenhum | HTTP não loopback | Obrigatório quando --host não é loopback; use um token separado, nunca a chave de API do Hevy. |
HEVY_MCP_HTTP_MAX_SESSIONS | 100 | HTTP local | Máximo de sessões estabelecidas, incluindo sessões em inicialização; solicitações em excesso recebem 429. |
HEVY_MCP_HTTP_MAX_INITIALIZING | 10 | HTTP local | Má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_MS | 1800000 ms | HTTP local | Sessões ociosas são removidas após 30 minutos; cada solicitação de sessão redefine o temporizador. |
HEVY_MCP_HTTP_BODY_TIMEOUT_MS | 30000 ms | HTTP local | Corpos de solicitação travados recebem 408; valores são limitados a cinco minutos. |
HEVY_MCP_TELEMETRY | Compilado: ativado; fonte: desativado | Node local | Defina 0 para desabilitar telemetria ou 1 para optar por execuções de fonte. As importações permanecem sem efeitos colaterais. |
HEVY_MCP_TELEMETRY_DIAGNOSTICS | Habilitado | Node local | Defina exatamente como 0 para manter a telemetria estrutural enquanto suprime mensagens de exceção e rastreamentos. |
XDG_CACHE_HOME | ~/.cache | stdio local | Altera a raiz para o cache de verificação de atualização do npm em hevy-mcp/update-check.json. |
SENTRY_DSN | DSN do projeto Sentry SaaS empacotado | Telemetria Node local opcional | Substituição do DSN do projeto Sentry. Um valor vazio desabilita a exportação do Sentry. O Worker não importa telemetria Node. |
SENTRY_RELEASE | hevy-mcp@<installed-version> | Telemetria Node local opcional | Substitui o rótulo de versão anexado a eventos de erro Sentry locais. |
SENTRY_ENVIRONMENT | Compilado: production; fonte: development | Telemetria Node local opcional | Substitui o rótulo de ambiente para eventos de erro Sentry habilitados. |
-h, --help | N/A | CLI stdio local | Imprime opções compatíveis e sai. |
-v, --version | N/A | CLI stdio local | Imprime 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-templatesaceitarefresh: truepara 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_KEYfora 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çalhoapi-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.examplepara.dev.varspara 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 definaMCP_DISABLE_ORIGIN_CHECK=trueem 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-exercisessubstitui 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.
npxfalha: confirme que o Node.js 20 ou mais recente está instalado e executenpx -y hevy-mcp --versionem um terminal.- O Codex não consegue ver o servidor: execute
codex mcp liste inicie uma nova sessão do Codex após confirmar que a entradahevyexiste. - 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
- Licença: MIT
- Créditos: Model Context Protocol e Hevy Fitness
