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.
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 ifqueryis omitted. Always call this beforelog_foodagainst a Catalog item.add_product(...)— add a Product to the Catalog. Macros are per 100g;sourceisverified(off a package label) orestimated.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=Truere-fetches everything and reconciles deletions.query(sql)— read-only SQL (SELECT/WITHonly) 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/:
- 0001 — day runs 04:00–04:00 Europe/Amsterdam
- 0002 — food log entries store macros, not references
- 0003 — own the data rather than compose external MCP servers
- 0004 — no Albert Heijn integration in v1
- 0005 — stdio over SSH instead of a public HTTPS endpoint
- 0006 — one read-only SQL tool instead of narrow read tools
- 0007 — Claude Code remote access instead of a dedicated VM
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.