health-mcp

health-mcp

Provides a unified MCP interface to a personal health database, enabling AI agents to sync lifting workouts from Hevy, log food intake against a catalog, and run read-only SQL queries to cross-reference training and nutrition data.

Category
Visit Server

README

health-mcp

A single agent-facing surface over one person's health data, so an AI can cross-reference sources that usually sit in separate apps — training and nutrition today ("did intake track with volume?"), with room to bring in sleep or other metrics later — in service of actually optimizing toward that person's health goals, not just logging numbers.

It's an MCP server, speaking stdio, backed by one SQLite file. Training data is synced in from external sources — currently Hevy for lifting, with Strava for cardio planned next. Food is logged directly through the agent against a small hand-curated Catalog of Products.

Tools

  • find_product(query?) — search the Catalog by name/brand; list it all if query is omitted. Always call this before log_food against a Catalog item.
  • add_product(...) — add a Product to the Catalog. Macros are per 100g; source is verified (off a package label) or estimated.
  • log_food(grams, product_id? | name + macros, at?) — log that a quantity was eaten, either against a Catalog Product or as a one-off (always recorded as estimated).
  • delete_food_entry(id) — remove a Food Log Entry.
  • sync_workouts(full?) — pull new workouts, exercise templates, and body measurements from Hevy. Delta by default; full=True re-fetches everything and reconciles deletions.
  • query(sql) — read-only SQL (SELECT/WITH only) against the whole schema. There are deliberately no narrow read tools (list_workouts, daily_nutrition, etc.) — see ADR-0006.

The domain vocabulary these tools use (Product, Food Log Entry, Macros, Catalog, Verified/Estimated, Day, Workout, Volume) is defined in CONTEXT.md.

Setup

Requires Python 3.13+ and uv.

uv sync

Configure via a .env file in the repo root (or HEALTH_MCP_* env vars):

HEALTH_MCP_DB_PATH=/path/to/health.db   # defaults to ~/health/health.db
HEALTH_MCP_HEVY_API_KEY=...             # required for sync_workouts / `sync`

Migrations run automatically on every CLI invocation.

Running

As an MCP server (what Claude Code / Claude Desktop launch):

uv run health-mcp serve

This repo is already registered as a project-scoped MCP server in .mcp.json, so any Claude Code session opened here loads it automatically.

Other CLI commands:

uv run health-mcp sync           # pull new workouts from Hevy (delta)
uv run health-mcp sync --full    # re-fetch everything, reconcile deletions
uv run health-mcp normalize      # re-parse stored raw workout payloads, no network

Tests

uv run pytest

Roadmap

Next up is a Strava sync for cardio (runs, rides) alongside the existing Hevy sync for lifting, so query can answer questions across both. See "Future ideas" in PLAN.md for this and other planned work.

Design notes

Key decisions and their rationale live in docs/adr/:

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured