mcp-takeout-googlefit
Enables AI assistants to read and analyze Google Fit exported data (activities, daily metrics, workouts, sleep) from Google Takeout, providing tools for queries, resources, and coaching prompts.
README
Servidor MCP para Google Fit (Google Takeout)
Este projeto contém um Servidor MCP (Model Context Protocol) modular desenvolvido em Python com a biblioteca FastMCP. O servidor descompacta, lê, filtra e analisa automaticamente as pastas exportadas do Google Fit (extraídas do Google Takeout em Português) colocadas na pasta ./data.
Estrutura Modular do Projeto
cli_project/
├── data/ # Ignorada no .gitignore (dados privados)
│ ├── Atividades/ # Ficheiros de registo de treinos e sessões
│ ├── Métricas de atividade diária/ # Ficheiros de passos, calorias e minutos ativos
│ ├── Todas as sessões/ # Histórico completo de sessões de exercício
│ └── Todos os dados/ # Ficheiros JSON derived_com.google.*
├── src/ # Pacote Python com arquitetura modular
│ ├── models/ # Schemas e estruturas de dados Pydantic
│ │ └── fitness_schemas.py
│ ├── parsers/ # Parsers de ficheiros (ZIP, CSV, JSON)
│ │ ├── zip_extractor.py
│ │ ├── csv_parser.py
│ │ └── json_parser.py
│ ├── services/ # Regras de negócio e agregação de dados
│ │ └── fitness_service.py
│ ├── server/ # Componentes registados no FastMCP
│ │ ├── tools.py # Definição das Ferramentas (@mcp.tool)
│ │ ├── resources.py # Definição dos Recursos (@mcp.resource)
│ │ └── prompts.py # Definição dos Prompts (@mcp.prompt)
│ └── app.py # Inicialização e configuração do FastMCP
├── mcp_server.py # Ponto de entrada leve do Servidor MCP
├── pyproject.toml # Configuração e dependências
├── .gitignore # Proteção dos seus dados privados (data/)
└── README.md # Documentação de integração
Instalação
- Criar e ativar o ambiente virtual:
uv venv .venv\Scripts\activate uv pip install -e .
Como Integrar o Servidor MCP em Qualquer IA
Adicione o servidor no ficheiro de configuração MCP do seu cliente de IA (mcp_config.json ou claude_desktop_config.json):
{
"mcpServers": {
"google-fit-server": {
"command": "uv",
"args": [
"run",
"mcp_server.py"
]
}
}
}
Como Testar no MCP Inspector
Para testar o servidor e inspecionar as pastas do Google Fit no ambiente gráfico de desenvolvimento:
uv run mcp dev mcp_server.py
Guia Detalhado de Utilização dos Componentes MCP
1. Ferramentas (Tools)
As ferramentas permitem que os assistentes de IA executem funções de consulta e manutenção de dados.
clean_empty_data_files
- Descrição: Analisa e deteta ficheiros JSON ou CSV na pasta
./dataque contêm zero pontos de dados ou apenas valores vazios"". - Parâmetros:
dry_run(boolean, opcional, padrão:true): Setrue, apenas lista os ficheiros vazios sem apagar. Sefalse, elimina fisicamente os ficheiros vazios do disco.
- Exemplos de Valores e Chamadas:
- Simulação (listar sem apagar):
clean_empty_data_files(dry_run=true) - Eliminação física:
clean_empty_data_files(dry_run=false)
- Simulação (listar sem apagar):
scan_google_fit_data
- Descrição: Percorre a pasta
./data, deteta as pastas exportadas (Atividades,Métricas de atividade diária,Todas as sessões,Todos os dados) e devolve uma contagem das pastas e ficheiros válidos. - Parâmetros: Nenhum argumento necessário.
- Exemplo de Chamada:
scan_google_fit_data()
get_daily_activity
- Descrição: Extrai registos diários de contagem de passos (
step_count), calorias despendidas (calories.expended), minutos ativos (active_minutes) e distância percorrida, ignorando ficheiros vazios. - Parâmetros: Nenhum argumento necessário.
- Exemplo de Chamada:
get_daily_activity()
get_workout_logs
- Descrição: Extrai sessões de treino, exercícios e segmentos de atividade física a partir das pastas
AtividadeseTodas as sessões. - Parâmetros: Nenhum argumento necessário.
- Exemplo de Chamada:
get_workout_logs()
get_sleep_records
- Descrição: Extrai registos e horários de sono dos ficheiros
derived_com.google.internal.sleep. - Parâmetros: Nenhum argumento necessário.
- Exemplo de Chamada:
get_sleep_records()
read_fitness_file
- Descrição: Lê e interpreta o conteúdo bruto ou parseado de qualquer ficheiro localizado na pasta
./data. - Parâmetros:
file_path(string, obrigatório): Caminho relativo do ficheiro dentro da pasta./data.
- Exemplos de Valores de Parâmetro:
file_path="Métricas de atividade diária/Daily activity metrics.csv"file_path="Todos os dados/derived_com.google.step_count.delta_com.google.android.fit.json"file_path="Atividades/Atividades.csv"
- Exemplo de Chamada:
read_fitness_file(file_path="Métricas de atividade diária/Daily activity metrics.csv")
2. Recursos e Templates de Recursos (Resources & Resource Templates)
Os recursos fornecem aos assistentes de IA leitura direta de dados através de URIs padrão.
fitness://summary (URI Direta)
- Descrição: Devolve um resumo executivo em JSON com o estado da ligação, total de ficheiros e ficheiros válidos detetados.
- Exemplo de URI de Acesso:
fitness://summary
docs://documents (URI Direta)
- Descrição: Devolve uma lista JSON com os caminhos de todos os ficheiros disponíveis na pasta
./data. - Exemplo de URI de Acesso:
docs://documents
docs://documents/{doc_id} (Template de Recurso)
- Descrição: Template de URI parametrizado para aceder ao conteúdo de qualquer ficheiro individual.
- Parâmetro do Template:
{doc_id}(Caminho relativo do ficheiro). - Exemplos de URIs Completas para Acesso:
docs://documents/Métricas de atividade diária/Daily activity metrics.csvdocs://documents/Todos os dados/derived_com.google.calories.expended.jsondocs://documents/Todas as sessões/Sessões.csv
3. Prompts
Os prompts são rotinas de análise pré-definidas que orientam a IA para tarefas específicas de coaching e análise.
analyze_progress
- Descrição: Orienta a IA a analisar a evolução de passos, distância, minutos ativos e calorias.
- Parâmetros:
period(string, opcional, padrão:"all"): Período temporal de análise.
- Exemplos de Valores de Parâmetro:
"7_dias","30_dias","tudo" - Exemplos de Utilização no Cliente de IA:
/analyze_progress period="7_dias"/analyze_progress period="30_dias"
generate_workout_plan
- Descrição: Orienta a IA a criar um plano semanal de treinos e descanso adaptado ao histórico de atividades do utilizador.
- Parâmetros:
fitness_goal(string, opcional, padrão:"fitness_geral"): Objetivo de treino pretendido.
- Exemplos de Valores de Parâmetro:
"hipertrofia","perda_peso","resistencia" - Exemplos de Utilização no Cliente de IA:
/generate_workout_plan fitness_goal="hipertrofia"/generate_workout_plan fitness_goal="perda_peso"
give_coaching_feedback
- Descrição: Orienta a IA a fornecer comentários e recomendações práticas diárias sobre o nível de atividade física e qualidade de sono.
- Parâmetros:
date(string, opcional, padrão:"mais_recente"): Data alvo para avaliação.
- Exemplos de Valores de Parâmetro:
"hoje","mais_recente","2026-08-05" - Exemplos de Utilização no Cliente de IA:
/give_coaching_feedback date="hoje"/give_coaching_feedback date="2026-08-05"
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。