Skip to main content
Glama

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 — Hevy for lifting, Strava for cardio (runs, rides). Daily step counts and Apple Watch-native workout sessions are imported by hand from Apple Health CSV exports — no API for those, just files dropped into chat. 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.

  • sync_activities(full?) — pull new cardio activities (runs, rides) from Strava. Delta by default, but only sees activities whose start date is after the last sync — an edited or back-dated activity needs full=True to be picked up (see PLAN.md "Strava sync"). Requires having run strava-auth once (below).

  • import_steps(path) — import an Apple Health step-count CSV export from wherever it landed (e.g. attached to a chat message). No API, no cursor — always reprocesses the whole file and upserts by day, so a repeated or overlapping export is harmless. A day with samples from more than one source (phone + watch) is deduplicated by taking the larger source total, not summing them — see PLAN.md "Step import" and ADR-0010.

  • import_workouts(paths) — import Apple Health workout CSV export(s) (one file per workout type — Running, Cycling, Walking, ... — so this is usually several paths at once). Rows sourced from Hevy are dropped, not stored: that training already exists via sync_workouts, and keeping both would double-count it — see PLAN.md "Apple workout import" and ADR-0011.

  • 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, Activity, Daily Steps, Apple Workout, Volume) is defined in CONTEXT.md.

Related MCP server: Apple Health AI Bridge MCP Server

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`
HEALTH_MCP_STRAVA_CLIENT_ID=...              # from strava.com/settings/api
HEALTH_MCP_STRAVA_CLIENT_SECRET=...          # required for sync_activities / `strava-auth`

Strava additionally needs a one-time interactive strava-auth (below) before sync_activities / sync-strava will work — the resulting token pair is stored separately, not in .env (see ADR-0009).

Strava is built but not yet connected in this deployment — as of 2026-06-01 Strava requires an active paid subscription ($11.99/mo) to register and use an API app, which is why this is paused rather than done. See PLAN.md "Strava setup (when ready)" for the exact steps to pick it back up once that's worth it.

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

uv run health-mcp strava-auth         # one-time: connect a Strava account (ADR-0008)
uv run health-mcp sync-strava         # pull new activities from Strava (delta)
uv run health-mcp sync-strava --full  # re-fetch everything, reconcile deletions

uv run health-mcp import-steps <path>          # import an Apple Health step-count CSV export
uv run health-mcp import-workouts <path> [...]  # import Apple Health workout CSV export(s)

Tests

uv run pytest

Roadmap

Hevy (lifting) syncs into the database today, and daily step counts plus Apple Watch-native workout sessions import from Apple Health CSV exports on request. Strava (cardio) is fully built alongside them but paused before its first real connection — see "Setup" above and PLAN.md "Strava setup (when ready)". query can already answer questions across Hevy, steps, and Apple workouts; Strava joins once connected. See "Future ideas" in PLAN.md for what's next after that — an Albert Heijn / NEVO product lookup, a scheduled digest, and a couple of other candidates, in rough order of likely value.

Design notes

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

Available Tools

6 tools
add_productA

Add a Product to the Catalog. Macros are per 100g. source is "verified" (transcribed from a package label) or "estimated" (general knowledge) — verified is the standard for anything worth trusting. Returns the new product id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
noteNo
brandNo
sourceNoverified
fat_100gYes
kcal_100gYes
salt_100gNo
carbs_100gYes
fibre_100gNo
sugar_100gNo
protein_100gYes
sat_fat_100gNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It reveals that macros are per 100g, explains the two source options (verified vs estimated) with a recommendation, and states that the new product id is returned. However, it does not mention error cases, duplicate handling, or any required permissions, which would be expected for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four short sentences, each providing distinct value: purpose, unit context, source semantics, and return value. It is front-loaded with the action and avoids any filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter creation tool with no annotations, the description covers the most important context: units, source trust levels, and the return value. It is not exhaustive (e.g., no duplicate handling), but the provided information is sufficient for an agent to correctly invoke the tool in most scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining the meaning of the nutritional fields ('Macros are per 100g') and clarifying the source parameter ('verified' from package label, 'estimated' from general knowledge). This adds significant value beyond the bare schema. It does not individually describe optional fields like salt or fibre, but the per-100g context applies to all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'Add a Product to the Catalog.' This clearly distinguishes it from siblings like find_product, log_food, and delete_food_entry. The verb 'Add' and object 'Product/Catalog' make the tool's function unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: when adding a product to the catalog. It does not explicitly name alternatives or exclusions, but the phrasing 'Add a Product to the Catalog' makes the intended use obvious among the listed sibling tools. The additional notes on units and source further clarify correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_food_entryB

Delete a Food Log Entry by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It simply restates the tool name and parameter ('by id') without mentioning permanence, error behavior, authentication needs, or side effects. This is a significant gap for a deleting/mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundant information. It is appropriately concise for a simple tool, earning every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool is simple and has an output schema, the description lacks essential context for a mutation tool with no annotations. It does not explain irreversible effects, behavior when the id is not found, or any other operational details, making it incomplete for the given complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only says 'by id', which adds no meaning beyond the schema's 'id' property. It does not explain what the id refers to, where to find it, or any constraints, providing minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('a Food Log Entry') with a specific criterion ('by id'). It is clearly distinct from sibling tools like add_product, find_product, and log_food, which perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: you would use this tool to remove a food log entry. However, it does not explicitly state when to use it over alternatives or mention any conditions or exclusions, so it only meets the 'implied usage' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_productA

Search the Catalog by name or brand (substring match). Omit query to list the whole Catalog. Call this before log_food against a Catalog Product — the result's id is the product_id log_food expects.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It discloses substring matching, the option to list the whole catalog when query is omitted, and the id relationship with log_food. It does not explicitly mention read-only status, match limits, or case sensitivity, but covers key invocation-relevant behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence defines the tool's core action, and the second provides essential usage and integration context, with the most important information front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has an output schema, and a single optional parameter. The description gives the query behavior, the optional full-list behavior, and a concrete pointer to log_food, making it sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a titled 'query' with no description (0% coverage). The description fully compensates by explaining that the query matches by name or brand via substring and that omitting it lists the entire catalog, making the parameter's semantics clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') and resource ('Catalog') with search criteria ('name or brand (substring match)'), clearly distinguishing it from sibling tools. It also states the optional full-catalog listing behavior, further clarifying scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for use: 'Call this before log_food against a Catalog Product' and explains how the result's id maps to the expected product_id. It does not explicitly mention when not to use it or compare alternatives, but the integration guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_foodA

Log that grams of a food were eaten. Pass exactly one of: product_id (from find_product, for a Catalog item) or name + macros (per 100g, model-supplied, for a one-off — always recorded as estimated). at defaults to now; the stored date is derived via the 04:00 Europe/Amsterdam day rule, not a calendar date. Returns the new food_log id.

ParametersJSON Schema
NameRequiredDescriptionDefault
atNo
nameNo
gramsYes
macrosNo
entered_asNo
product_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that one-off entries are 'always recorded as estimated,' that 'at defaults to now,' and explains the unconventional date rule ('04:00 Europe/Amsterdam day rule, not a calendar date'). These are critical behavioral traits not inferable from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core action, and uses clear structure. It efficiently conveys parameter alternatives, behavior, and return value in just a few sentences with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (6 parameters, dual usage modes, no annotations), the description covers purpose, parameter selection, behavioral nuances, and return value. The output schema already documents the return shape, so the description's additional details on date handling and estimation status make it complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains grams, product_id (and its source), name+macros (per 100g, estimated), and at (default behavior and date rule). However, it does not explain the 'entered_as' parameter at all, leaving a gap in parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Log that `grams` of a food were eaten.' It uses a specific verb and resource, and distinguishes itself from sibling tools like find_product and add_product by focusing on logging consumption rather than searching or creating products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly prescribes usage: 'Pass exactly one of: product_id (from find_product, for a Catalog item) or name + macros ... for a one-off.' This provides clear conditions for when to use each parameter combination, and implies using find_product first to obtain a product_id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queryA

Read-only SQL against the health database. Must be a single SELECT or WITH statement.

Schema: products(id, name, brand, source, kcal_100g, protein_100g, carbs_100g, fat_100g, fibre_100g, sugar_100g, sat_fat_100g, salt_100g, note, created_at) food_log(id, logged_at, date, product_id, name, source, grams, entered_as, kcal, protein, carbs, fat, note) workouts(id, title, start_time, end_time, date, updated_at, raw) exercise_templates(id, title, primary_muscle_group, secondary_muscle_groups, equipment) workout_exercises(id, workout_id, idx, exercise_template_id, title) workout_sets(id, workout_exercise_id, idx, type, weight_kg, reps, rpe, duration_s, distance_m) body_measurements(date, weight_kg, fat_percent) sync_state(source, cursor, last_run_at, last_status, last_error)

date columns are always the 04:00 Europe/Amsterdam day, computed at write time — group by date, not by a calendar date derived from a timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses key behavioral aspects: it is read-only, only accepts a single SELECT/WITH statement, and uses Europe/Amsterdam day boundaries for date columns. This goes beyond the basic tool name and input schema by explaining the date convention and statement restriction. It does not mention potential limits or auth, but for a query tool the provided constraints are substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and constraints, followed by a compact but complete schema listing. All listed tables and columns are necessary for constructing valid SQL. The date note is a single, useful addition without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description covers purpose, statement type, schema, and date semantics comprehensively. The presence of an output schema means return-value details need not be duplicated in the description. The inclusion of the date column convention handles a common edge case that would otherwise cause incorrect aggregations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description compensates by listing the full database schema, including all tables and columns, and explicitly stating the sql parameter must be a single SELECT/WITH statement. It also provides the date grouping convention to help construct correct queries. This adds significant meaning beyond the input schema's bare string type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Read-only SQL against the health database', which clearly identifies the verb (read/query) and resource (health database). This differentiates it from sibling mutation tools like delete_food_entry or add_product. The constraint of being a single SELECT/WITH statement further clarifies its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the tool is read-only and requires a single SELECT or WITH statement, giving clear context for when it applies. It does not explicitly mention alternative tools or when not to use it, but the read-only scope implicitly excludes write operations, making it appropriate for data retrieval. The date grouping note adds practical guidance for constructing queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_workoutsA

Pull new training data from Hevy into the database. Call this before answering a question about recent training — a workout finished after the last sync isn't in the database until you do. Delta by default and cheap to call. full=True re-fetches everything and reconciles deletions; use it only if the data looks wrong, not routinely. Also refreshes exercise templates and body measurements.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNo

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although no annotations are provided, the description compensates fully. It discloses that the sync is 'delta by default and cheap to call,' that full mode 're-fetches everything and reconciles deletions,' and that it also refreshes templates and measurements, revealing side effects and cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each earning its place: purpose, usage timing, parameter explanation, and additional scope. The text is front-loaded with the main action and free of fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter sync tool with no output schema, the description covers what, when, why, and the parameter's behavioral difference. It leaves no gaps that would hinder an agent from correctly selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single parameter, so the description must explain it. It does: 'Delta by default' (full=False) and 'full=True re-fetches everything and reconciles deletions,' adding substantial meaning beyond the bare boolean field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Pull new training data from Hevy into the database,' clearly stating the action and resource. It also notes it refreshes exercise templates and body measurements, and the sibling tools are all food/query tools, so there is no confusion about what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to 'Call this before answering a question about recent training,' grounding when to use it. It also distinguishes delta vs full mode: 'use it only if the data looks wrong, not routinely,' providing a clear exclusion for full mode and guiding appropriate invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: catalog management (add/find product), food logging (log/delete entries), workout synchronization, and generic SQL query. There is no overlap or ambiguity between tool purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores (delete_food_entry, add_product, find_product, log_food, sync_workouts, query). The naming is predictable and uniform.

Tool Count5/5

The server has 6 tools, which is well-scoped for a health data management domain. Each tool serves a clear purpose without unnecessary redundancy or overwhelming count.

Completeness4/5

Core workflows are covered: product catalog creation and search, food logging and deletion, workout sync, and read-only query access. Minor gaps exist (e.g., no update or delete for products, no update for food entries), but these can be worked around via delete/re-log or are not essential for the server's purpose.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that connects AI clients to the Hevy workout tracking app, allowing users to manage routines and exercises. It enables reading workout history and logging new fitness sessions through simple natural language commands.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Read-only MCP server that exposes Apple Health data (steps, workouts, sleep, etc.) from a local SQLite store, allowing AI agents to query health metrics without sending data to hosted services.
    4
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that exposes the Hevy fitness API as 22 tools, enabling AI agents to manage workouts, routines, exercise templates, and body measurements through natural language.
    23
    73
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that securely syncs and queries your health data from Apple Health, storing it in your own Supabase Postgres database and exposing tools for AI assistants to retrieve weight, calories, macros, and more.
    21
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danielv27/health-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server