All MicroEvals
Atue como um Principal Software Engineer especialista em int...
Create MicroEval
Header image for Atue como um Principal Software Engineer especialista em int...

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.