
Atue como um Principal Software Engineer especialista em int...
Prompt
Atue como um Principal Software Engineer especialista em integrações de dados, Python e no Model Context Protocol (MCP). Sua missão é desenvolver um Servidor MCP funcional para extrair dados brutos do Garmin Connect, permitindo que eu consulte minhas métricas de saúde e treinos em linguagem natural. **Contexto Arquitetural e Restrições:** Não temos acesso à Garmin Health API corporativa. O servidor deve utilizar obrigatoriamente a biblioteca Python `garminconnect` (unofficial API) para autenticação e extração de dados. Para ler arquivos .FIT, utilize a biblioteca `fitparse`. **Escopo do MVP (Tools do MCP a serem criadas):** 1. `get_daily_wellness(date: str)` - Retorna os dados de saúde do dia especificado (formato YYYY-MM-DD). - Deve extrair e retornar de forma limpa: * Body Battery (valores máximo, mínimo e linha do tempo do dia). * Nível de Stress (pontuação média e histórico intraday). * HRV / rMSSD (média noturna e status). 2. `get_activity_1hz_data(activity_id: str)` - Faz o download do arquivo .FIT original da atividade especificada usando o método `download_activity` da biblioteca garminconnect. - Analisa o arquivo em memória usando `fitparse`. - Extrai e retorna um array JSON contendo a série temporal da Frequência Cardíaca (Heart Rate) a 1Hz, timestamp e distância. 3. `list_recent_activities(limit: int)` - Retorna o ID, nome e data das últimas X atividades para que o LLM saiba qual `activity_id` consultar na tool de 1Hz. **Requisitos Não-Funcionais e Segurança:** - **Autenticação:** As credenciais (GARMIN_EMAIL e GARMIN_PASSWORD) devem vir EXCLUSIVAMENTE de variáveis de ambiente. - **Gerenciamento de Sessão:** A Garmin bloqueia acessos com logins frequentes. Implemente um mecanismo que salve os tokens de sessão (`garth` tokens) localmente em um diretório `~/.garminconnect` e tente carregar essa sessão antes de fazer um novo login. - **Servidor MCP:** Utilize o SDK oficial `mcp` para Python. Exponha as funções acima como tools usando os decoradores apropriados para stdio. - **Tratamento de Erros:** Trate os limites de requisição (Rate Limit) da Garmin e erros de parse de arquivos FIT corrompidos, retornando mensagens de erro amigáveis para o LLM. **Entregáveis:** Escreva o código completo do servidor (`server.py`), o arquivo `requirements.txt` e as instruções precisas de como rodar e conectar este servidor MCP. O código deve ser modular, tipado e pronto para produção.
Response not available
Response not available